This document describes the steps to help users upgrade from Argon to Potassium platform. Refer to Managed Snapshot Integrated (MSI) project upgrade patches for more information and hints for solutions to common problems not explicitly listed here.
2023.09 Potassium, requires Java 17, both during compile-time and run-time.
Make sure to install JDK 17 corresponding to at least
and that the JAVA_HOME environment variable points to the JDK directory.
Before performing platform upgrade, do the following to bump the odlparent versions (for example, bump-odl-version):
Update the odlparent version from 12.0.3 to 13.0.4. There should not be any reference to org.opendaylight.odlparent, except for 13.0.4. This includes custom feature.xml templates (
src/main/feature/feature.xml), the version range should be “[13,14)” instead of “[11,12)”, “[5.0.3,6)” or any other variation.
bump-odl-version odlparent 12.0.3 13.0.4
Update the direct yangtools version references from 10.0.4 to 11.0.1, There should not be any reference to org.opendaylight.yangtools, except for 11.0.1. This includes custom feature.xml templates (
src/main/feature/feature.xml), the version range should be “[11,12)” instead of “[10,11)”.
bump-odl-version yangtools 10.0.4 11.0.1
Update the MD-SAL version from 11.0.7 to 12.0.1. There should not be any reference to org.opendaylight.mdsal, except for 12.0.1.
bump-odl-version mdsal 11.0.7 12.0.1
Update the Controller version from 7.0.4 to 8.0.1. There should not be any reference to org.opendaylight.controller, except for 8.0.1.
bump-odl-version controller 7.0.4 8.0.1
Update the InfraUtils version from 5.0.3 to 6.0.2. There should not be any reference to org.opendaylight.infrautils, except for 6.0.2.
bump-odl-version infrautils 5.0.3 6.0.2
Update the AAA version from 0.17.7 to 0.18.1. There should not be any reference to org.opendaylight.aaa, except for 0.18.1.
bump-odl-version aaa 0.17.7 0.18.1
Update the NETCONF version from 5.0.4 to 6.0.3. There should not be any reference to org.opendaylight.netconf, except for 6.0.3.
bump-odl-version netconf 5.0.4 6.0.3
Before performing platform upgrade, users must also install any dependent project. To locally install a dependent project, pull and install the respective potassium-mri changes for any dependent project.
Perform the following steps to save time when locally installing any dependent project:
For quick install:
mvn -Pq clean install
If previously installed, go offline and/or use the no-snapshot-update option.
mvn -Pq -o -nsu clean install
The following sub-section describes how to upgrade to the ODL Parent version 13. Refer to the ODL Parent Release Notes for more information.
Any version range referencing version 11 of ODL Parent must be changed to “[13,14)” for ODL Parent 13.
<feature name="odl-infrautils-caches"> <feature version="[13,14)">odl-guava</feature> </feature>
The declaration of
commons-lang dependency has been removed.
odlparent no longer declares
<scope>provided</scope> dependencies. Downstreams will need to introduce these annotations as appropriate.
The class hierarchy of
NormalizedNode has been updated to not contain augmented nodes in a separate
but rather keep them directly in the node being augmented. This results in a flatter NormalizedNode structure and makes constructing
structures involving augmentations and reconciling them with
EffectiveModelContext much more straightforward.
See YANGTOOLS-568 for details.
The interfaces supporting RFC7952 YANG annotations have been integrated into
artifacts. This rendered
rfc7952-data-util artifacts empty and thus these have been removed.
See YANGTOOLS-1489 for details.
The interfaces supporting RFC8528 YANG schema mounts have been integrated into
artifacts. This rendered
rfc8528-data-util artifacts empty and thus these have been removed.
See YANGTOOLS-1172 for details.
As part of these changes, following API changes have also been done in order to ease using these interfaces:
NormalizedNodeStreamWriterExtensionhas been renamed to
StreamWriterMetadataExtensionhas been renamed to
StreamWriterMountPointExtensionhas been renamed to
MountPointIdentifierhas been removed with
Finally, the result of
NormalizedNodeStreamWriter is now a combined structure,
NormalizationResult, which combines
NormalizedNode data tree, an optional
NormalizedMetadata and an optional
For the purposes of receiving this the result,
NormalizedNodeResult has been replaced with
yang.data.util.DataSchemaContextNode has been completely revamped and renamed to
DataSchemaContext. It is now an interface
implemented completely internally, with a proper interface hierarchy. Implementations of these interfaces are given out by
DataSchemaContextTree. The resulting API is much easier to figure out and use, especially with proper documentation and naming
not overlapping with other parts of YANG Tools.
See YANGTOOLS-1413 for details.
This interface no longer exposes a
ClassToInstanceMap, but rather provides direct lookup and enumeration methods. Users need
to be updated from performing
ExtensibleObject obj; var extension = obj.getExtensions().getInstance(ExtensionType.class);
to instead doing
ExtensibleObject obj; var extension = obj.extension(ExtensionType.class);
See YANGTOOLS-1509 for details.
The return type was changed to return
Set<Descendant> instead of
Map<Descendant, SchemaNode>. Users relying on accessing
target nodes need to perform the resolution themselves.
See YANGTOOLS-1518 for details.
yang.model.api.repo.YangTextSchemaSource now operates on a stream of characters, not bytes. All users which instantiate sources
from byte streams must specify the character set used.
See YANGTOOLS-1508 for details.
A long-standing bug, where a
KeyedInstanceIdentifier could not be safely returned from
InstanceIdentifierBuilder was fixed.
As part of this fix,
InstanceIdentifierBuilder was renamed to be an inner class,
InstanceIdentifier.Builder. There is also
InstanceIdentifier.KeyedBuilder. See MDSAL-798 for details.
This reflection-based method was moved to
BindingRuntimeHelpers class, as all its users already interact with
mdsal-binding-runtime-spi. See MDSAL-803 for details.
The aggregating multi-module RFCs have been removed. Users declaring a dependency on any of
rfc8795 need to now
update these references to individual modules’ artifacts.
See MDSAL-823 for details.
binding.spec.naming.BindingMapping has been renamed and moved to
See MDSAL-804 for details.
IetfYangUtil have been refactored so they now expose static utility methods not encapsulated
in an object instance. All references to
INSTANCE need to be removed:
byte bytes; IetfYangUtil.INSTANCE.macAddressFor(bytes);
byte bytes; IetfYangUtil.macAddressFor(bytes);
See MDSAL-804 for details.
yang.binding.Identifer has been renamed to
yang.binding.Identifiable has been renamed to
yang.binding.KeyAware. This change prevents confusion with
yangtools.concepts interfaces with the same name.
See MDSAL-830 for details.