diff --git a/Dockerfile b/Dockerfile index 1b7d7ccb..331a78ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG VERSION="23.0.0-SNAPSHOT" +ARG VERSION="23.0.0" FROM maven:3.9-eclipse-temurin-21-alpine as build diff --git a/README.md b/README.md index b441ebfe..62260166 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ mvn clean install ``` * The NETCONF Device Library build is located at: -`lighty-netconf-device\target\lighty-netconf-device-23.0.0-SNAPSHOT.jar` +`lighty-netconf-device\target\lighty-netconf-device-23.0.0.jar` * The build & run procedures for the example devices are described in each device's README. diff --git a/examples/devices/lighty-actions-device/README.md b/examples/devices/lighty-actions-device/README.md index 00f68474..07ec528c 100644 --- a/examples/devices/lighty-actions-device/README.md +++ b/examples/devices/lighty-actions-device/README.md @@ -28,12 +28,12 @@ Build root project - for more details check: [README](../../../README.md) * extract binary distribution in target directory * run jar file from zip with default parameter ``` -java -jar lighty-action-device-23.0.0-SNAPSHOT.jar +java -jar lighty-action-device-23.0.0.jar ``` To run device on specific port, add port number as an argument * run device on specific port `12345` (any available port) ``` -java -jar lighty-action-device-23.0.0-SNAPSHOT.jar 12345 +java -jar lighty-action-device-23.0.0.jar 12345 ``` ### Connect to device via SSH diff --git a/examples/devices/lighty-actions-device/pom.xml b/examples/devices/lighty-actions-device/pom.xml index ff60a299..c0a7f7a9 100644 --- a/examples/devices/lighty-actions-device/pom.xml +++ b/examples/devices/lighty-actions-device/pom.xml @@ -14,7 +14,7 @@ io.lighty.netconf.device.examples examples-parent - 23.0.0-SNAPSHOT + 23.0.0 ../../parents/examples-parent/pom.xml diff --git a/examples/devices/lighty-actions-device/src/main/java/io/lighty/netconf/device/action/processors/ResetActionProcessor.java b/examples/devices/lighty-actions-device/src/main/java/io/lighty/netconf/device/action/processors/ResetActionProcessor.java index c68e2fb5..a19b17db 100644 --- a/examples/devices/lighty-actions-device/src/main/java/io/lighty/netconf/device/action/processors/ResetActionProcessor.java +++ b/examples/devices/lighty-actions-device/src/main/java/io/lighty/netconf/device/action/processors/ResetActionProcessor.java @@ -31,9 +31,8 @@ import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.server.Reset; import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.server.ResetInput; import org.opendaylight.yang.gen.v1.urn.example.data.center.rev180807.server.ResetOutput; +import org.opendaylight.yangtools.binding.DataObjectIdentifier; import org.opendaylight.yangtools.binding.data.codec.spi.BindingDOMCodecServices; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -79,12 +78,11 @@ protected CompletableFuture execute(final Element requestXmlElement) { Preconditions.checkNotNull(key); final Class listItem = Server.class; final ServerKey listKey = new ServerKey(key); - final InstanceIdentifier instanceIdentifier = InstanceIdentifier.builder(listItem, listKey).build(); - final KeyedInstanceIdentifier keydIID - = (KeyedInstanceIdentifier) instanceIdentifier; + final DataObjectIdentifier.WithKey identifier = DataObjectIdentifier + .builder(listItem, listKey).build(); final ListenableFuture> outputFuture = - this.resetAction.invoke(keydIID.toIdentifier(), input); + this.resetAction.invoke(identifier, input); final CompletableFuture completableFuture = new CompletableFuture<>(); Futures.addCallback(outputFuture, new FutureCallback>() { diff --git a/examples/devices/lighty-network-topology-device/README.md b/examples/devices/lighty-network-topology-device/README.md index 53ee948d..d458aab0 100644 --- a/examples/devices/lighty-network-topology-device/README.md +++ b/examples/devices/lighty-network-topology-device/README.md @@ -19,12 +19,12 @@ Build root project - for more details check: [README](../../../README.md) * extract binary distribution in target directory * run jar file from zip with default parameter ``` -java -jar lighty-network-topology-device-23.0.0-SNAPSHOT.jar +java -jar lighty-network-topology-device-23.0.0.jar ``` * to run device on specific port it is necessary to add port number as an argument * run device on specific port `12345` (any available port) ``` -java -jar lighty-network-topology-device-23.0.0-SNAPSHOT.jar 12345 +java -jar lighty-network-topology-device-23.0.0.jar 12345 ``` ### Connect to device via SSH @@ -650,4 +650,4 @@ The directory **must** contain the following files:
When -i argument is not set, persistence is disabled by default:
Example Startup Command: -`java -jar lighty-network-topology-device-23.0.0-SNAPSHOT.jar -i path/to/persistence/directory -o path/to/persistence/directory` +`java -jar lighty-network-topology-device-23.0.0.jar -i path/to/persistence/directory -o path/to/persistence/directory` diff --git a/examples/devices/lighty-network-topology-device/pom.xml b/examples/devices/lighty-network-topology-device/pom.xml index 0ff9a2ea..d1b0b023 100644 --- a/examples/devices/lighty-network-topology-device/pom.xml +++ b/examples/devices/lighty-network-topology-device/pom.xml @@ -14,7 +14,7 @@ io.lighty.netconf.device.examples examples-parent - 23.0.0-SNAPSHOT + 23.0.0 ../../parents/examples-parent/pom.xml diff --git a/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/DataTreeChangeListenerActivator.java b/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/DataTreeChangeListenerActivator.java index 70b54ed0..b55fc7bb 100644 --- a/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/DataTreeChangeListenerActivator.java +++ b/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/DataTreeChangeListenerActivator.java @@ -9,19 +9,18 @@ import io.lighty.netconf.device.requests.notification.NotificationPublishService; import org.opendaylight.mdsal.binding.api.DataBroker; -import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; +import org.opendaylight.yangtools.binding.DataObjectIdentifier; import org.opendaylight.yangtools.concepts.Registration; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class DataTreeChangeListenerActivator { private static final Logger LOG = LoggerFactory.getLogger(DataTreeChangeListenerActivator.class); - private static final InstanceIdentifier TOPOLOGY_II = - InstanceIdentifier.create(NetworkTopology.class); + private static final DataObjectIdentifier TOPOLOGY_ID = + DataObjectIdentifier.builder(NetworkTopology.class).build(); private final DataBroker dataBroker; private final NotificationPublishService notificationPublishService; @@ -36,9 +35,8 @@ public DataTreeChangeListenerActivator(final NotificationPublishService notifica public void init() { TopologyDataTreeChangeListener topologyDataTreeChangeListener = new TopologyDataTreeChangeListener(notificationPublishService); - dataTreeChangeListenerRegistration = - dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, - TOPOLOGY_II), topologyDataTreeChangeListener); + dataTreeChangeListenerRegistration = dataBroker.registerTreeChangeListener(LogicalDatastoreType.CONFIGURATION, + TOPOLOGY_ID, topologyDataTreeChangeListener); LOG.info("Data tree change listener registered"); } diff --git a/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/TopologyDataTreeChangeListener.java b/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/TopologyDataTreeChangeListener.java index d21c3958..b0e15845 100644 --- a/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/TopologyDataTreeChangeListener.java +++ b/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/datastore/TopologyDataTreeChangeListener.java @@ -12,7 +12,8 @@ import java.util.List; import java.util.Set; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataObjectDeleted; +import org.opendaylight.mdsal.binding.api.DataObjectModification.WithDataAfter; import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; @@ -36,48 +37,41 @@ final class TopologyDataTreeChangeListener implements DataTreeChangeListener> changes) { - changes.stream().forEach(change -> { - DataObjectModification.ModificationType modificationType = change.getRootNode().getModificationType(); + changes.forEach(change -> { + final var rootNode = change.getRootNode(); Set ids = new HashSet<>(); - final NetworkTopology dataBefore = change.getRootNode().getDataBefore(); - final NetworkTopology dataAfter = change.getRootNode().getDataAfter(); - if (DataObjectModification.ModificationType.DELETE.equals(modificationType)) { - - LOG.info("Data has been deleted"); - - notificationForDeletedData(dataBefore, dataAfter, ids); - } else if (DataObjectModification.ModificationType.SUBTREE_MODIFIED.equals(modificationType) - || DataObjectModification.ModificationType.WRITE.equals(modificationType)) { - - int sizeOfDataBefore = 0; - int sizeOfDataAfter = 0; - - if (dataBefore != null) { - sizeOfDataBefore = dataBefore.getTopology().size(); - } - - if (dataAfter != null) { - sizeOfDataAfter = dataAfter.getTopology().size(); - } - - if (sizeOfDataBefore < sizeOfDataAfter) { - LOG.info("Data has been created"); + switch (rootNode) { + case WithDataAfter written -> { + final var dataBefore = written.dataBefore(); + final var dataAfter = written.dataAfter(); + int sizeOfDataBefore = 0; + int sizeOfDataAfter = dataAfter.nonnullTopology().size(); if (dataBefore != null) { - dataBefore.nonnullTopology().values().forEach(topology -> ids.add(topology.getTopologyId())); + sizeOfDataBefore = dataBefore.nonnullTopology().size(); } - if (dataAfter != null) { + if (sizeOfDataBefore < sizeOfDataAfter) { + LOG.info("Data has been created"); + if (dataBefore != null) { + dataBefore.nonnullTopology().values().forEach( + topology -> ids.add(topology.getTopologyId())); + } + dataAfter.nonnullTopology().values().forEach(topology -> { if (!ids.contains(topology.getTopologyId())) { notificationPublishService.publish(new NewTopologyCreatedBuilder() - .setTopologyId(topology.getTopologyId()) - .build(), NewTopologyCreated.QNAME); + .setTopologyId(topology.getTopologyId()) + .build(), NewTopologyCreated.QNAME); } }); + } else { + LOG.info("Data has been modified"); + notificationForDeletedData(dataBefore, dataAfter, ids); } - } else { - LOG.info("Data has been modified"); - notificationForDeletedData(dataBefore, dataAfter, ids); + } + case DataObjectDeleted deleted -> { + LOG.info("Data has been deleted"); + notificationForDeletedData(deleted.dataBefore(), null, ids); } } }); diff --git a/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/rpcs/NetworkTopologyServiceImpl.java b/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/rpcs/NetworkTopologyServiceImpl.java index 9af0d5e5..e78db16b 100644 --- a/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/rpcs/NetworkTopologyServiceImpl.java +++ b/examples/devices/lighty-network-topology-device/src/main/java/io/lighty/netconf/device/topology/rpcs/NetworkTopologyServiceImpl.java @@ -30,15 +30,15 @@ import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev241009.ConnectionOper.ConnectionStatus; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev241009.connection.oper.AvailableCapabilitiesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev241009.connection.oper.UnavailableCapabilitiesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev241009.connection.oper.available.capabilities.AvailableCapability; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev241009.connection.oper.available.capabilities.AvailableCapabilityBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev240911.NetconfNodeAugment; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev240911.NetconfNodeAugmentBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev240911.netconf.node.augment.NetconfNode; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev240911.netconf.node.augment.NetconfNodeBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev251028.ConnectionOper.ConnectionStatus; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev251028.connection.oper.AvailableCapabilitiesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev251028.connection.oper.UnavailableCapabilitiesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev251028.connection.oper.available.capabilities.AvailableCapability; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev251028.connection.oper.available.capabilities.AvailableCapabilityBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev251103.NetconfNodeAugment; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev251103.NetconfNodeAugmentBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev251103.netconf.node.augment.NetconfNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev251103.netconf.node.augment.NetconfNodeBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; @@ -75,7 +75,7 @@ import org.opendaylight.yang.gen.v1.urn.tech.pantheon.netconfdevice.network.topology.rpcs.rev230927.node.data.NodeBuilder; import org.opendaylight.yang.gen.v1.urn.tech.pantheon.netconfdevice.network.topology.rpcs.rev230927.node.data.NodeKey; import org.opendaylight.yang.gen.v1.urn.tech.pantheon.netconfdevice.network.topology.rpcs.rev230927.topology.data.TopologyKey; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.binding.DataObjectIdentifier; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; @@ -170,8 +170,8 @@ public RpcResult call() throws Exception { .setTopologyId(topologyId) .setNode(nodeConfigMap) .build(); - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class, + final DataObjectIdentifier tii = + DataObjectIdentifier.builder(NetworkTopology.class).child(Topology.class, topology.key()).build(); writeTxConfig.merge(LogicalDatastoreType.CONFIGURATION, tii, topology); topology = new TopologyBuilder() @@ -206,8 +206,8 @@ public RpcResult call() throws Exception { final WriteTransaction writeTxConfig = NetworkTopologyServiceImpl.this.dataBrokerService.newWriteOnlyTransaction(); final Topology topology = new TopologyBuilder().setTopologyId(input.getTopologyId()).build(); - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class, + final DataObjectIdentifier tii = + DataObjectIdentifier.builder(NetworkTopology.class).child(Topology.class, topology.key()).build(); writeTxConfig.merge(LogicalDatastoreType.CONFIGURATION, tii, topology); writeTxOper.merge(LogicalDatastoreType.OPERATIONAL, tii, topology); @@ -233,8 +233,8 @@ public ListenableFuture> removeTopology(final Re @Override public RpcResult call() throws Exception { final Topology topology = new TopologyBuilder().setTopologyId(input.getTopologyId()).build(); - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class) + final DataObjectIdentifier tii = + DataObjectIdentifier.builder(NetworkTopology.class) .child(Topology.class, topology.key()) .build(); removeFromDatastore(tii); @@ -263,9 +263,9 @@ public RpcResult call() throws Exception { new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology .rev131021.network.topology.topology.NodeKey(input.getNodeId()); - final InstanceIdentifier nii = - InstanceIdentifier.builder(NetworkTopology.class) + DataObjectIdentifier.builder(NetworkTopology.class) .child(Topology.class, topology.key()) .child(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology .rev131021.network.topology.topology.Node.class, nk) @@ -291,8 +291,8 @@ public ListenableFuture> removeAllTopologie this.executor.submit(new Callable>() { @Override public RpcResult call() throws Exception { - final InstanceIdentifier ntii = - InstanceIdentifier.builder(NetworkTopology.class).build(); + final DataObjectIdentifier ntii = + DataObjectIdentifier.builder(NetworkTopology.class).build(); removeFromDatastore(ntii); final RemoveAllTopologiesOutput topologiesOutput = new RemoveAllTopologiesOutputBuilder().build(); final RpcResult rpcResult = RpcResultBuilder.success(topologiesOutput) @@ -316,8 +316,8 @@ public RpcResult call() throws Exception { try (ReadTransaction readTx = NetworkTopologyServiceImpl.this.dataBrokerService.newReadOnlyTransaction()) { final Topology topology = new TopologyBuilder().setTopologyId(input.getTopologyId()).build(); - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class) + final DataObjectIdentifier tii = + DataObjectIdentifier.builder(NetworkTopology.class) .child(Topology.class, topology.key()) .build(); final Optional readTopology = readTx.read(LogicalDatastoreType.CONFIGURATION, tii) @@ -401,9 +401,9 @@ public RpcResult call() throws Exception { new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology .rev131021.network.topology.topology.NodeKey(input.getNodeId()); - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class) + DataObjectIdentifier.builder(NetworkTopology.class) .child(Topology.class, topology.key()) .child(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology .rev131021.network.topology.topology.Node.class, nk) @@ -466,8 +466,8 @@ public ListenableFuture> getTopologies(final GetT public RpcResult call() throws Exception { try (ReadTransaction readTx = NetworkTopologyServiceImpl.this.dataBrokerService.newReadOnlyTransaction()) { - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class).build(); + final DataObjectIdentifier tii = + DataObjectIdentifier.builder(NetworkTopology.class).build(); final Optional networkTopology = readTx.read(LogicalDatastoreType.CONFIGURATION, tii) .get(TimeoutUtil.TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); @@ -541,12 +541,12 @@ public void setEffectiveModelContext(final EffectiveModelContext effectiveModelC } @SuppressFBWarnings("UPM_UNCALLED_PRIVATE_METHOD") - private void removeFromDatastore(final InstanceIdentifier instanceIdentifier) + private void removeFromDatastore(final DataObjectIdentifier identifier) throws ExecutionException, InterruptedException, TimeoutException { final WriteTransaction writeTxConfig = this.dataBrokerService.newWriteOnlyTransaction(); final WriteTransaction writeTxOper = this.dataBrokerService.newWriteOnlyTransaction(); - writeTxConfig.delete(LogicalDatastoreType.CONFIGURATION, instanceIdentifier); - writeTxOper.delete(LogicalDatastoreType.OPERATIONAL, instanceIdentifier); + writeTxConfig.delete(LogicalDatastoreType.CONFIGURATION, identifier); + writeTxOper.delete(LogicalDatastoreType.OPERATIONAL, identifier); writeTxConfig.commit().get(TimeoutUtil.TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); writeTxOper.commit().get(TimeoutUtil.TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); } @@ -554,8 +554,8 @@ private void removeFromDatastore(final InstanceIdentifier instanceIdentifier) @SuppressFBWarnings("UPM_UNCALLED_PRIVATE_METHOD") private Set prepareGetTopologyIds() throws ExecutionException, InterruptedException, TimeoutException { try (ReadTransaction readTx = this.dataBrokerService.newReadOnlyTransaction()) { - final InstanceIdentifier ntii = - InstanceIdentifier.builder(NetworkTopology.class) + final DataObjectIdentifier ntii = + DataObjectIdentifier.builder(NetworkTopology.class) .build(); final Optional networkTopology = readTx.read(LogicalDatastoreType.CONFIGURATION, ntii) .get(TimeoutUtil.TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); diff --git a/examples/devices/lighty-notifications-device/README.md b/examples/devices/lighty-notifications-device/README.md index c364b930..f573aec2 100644 --- a/examples/devices/lighty-notifications-device/README.md +++ b/examples/devices/lighty-notifications-device/README.md @@ -10,16 +10,16 @@ Check commands in [Notifications device model](#notifications-device-model) on h Build root project - for more details check: [README](../../../README.md) **Run device** -* extract binary distribution `lighty-notifications-device-23.0.0-SNAPSHOT-bin.zip` +* extract binary distribution `lighty-notifications-device-23.0.0-bin.zip` from target directory * run jar file from zip with default parameter ``` -java -jar lighty-notifications-device-23.0.0-SNAPSHOT.jar +java -jar lighty-notifications-device-23.0.0.jar ``` To run device on specific port, add port number as an argument * run device on specific port `12345` (any available port) ``` -java -jar lighty-notifications-device-23.0.0-SNAPSHOT.jar 12345 +java -jar lighty-notifications-device-23.0.0.jar 12345 ``` ### Connect to device via SSH diff --git a/examples/devices/lighty-notifications-device/pom.xml b/examples/devices/lighty-notifications-device/pom.xml index 8e0e7b34..0f5742e7 100644 --- a/examples/devices/lighty-notifications-device/pom.xml +++ b/examples/devices/lighty-notifications-device/pom.xml @@ -14,7 +14,7 @@ io.lighty.netconf.device.examples examples-parent - 23.0.0-SNAPSHOT + 23.0.0 ../../parents/examples-parent/pom.xml diff --git a/examples/devices/lighty-toaster-device/README.md b/examples/devices/lighty-toaster-device/README.md index 5aabd608..566f0ee1 100644 --- a/examples/devices/lighty-toaster-device/README.md +++ b/examples/devices/lighty-toaster-device/README.md @@ -13,16 +13,16 @@ of the processor calls method of `ToasterServiceImpl` which implements Build root project - for more details check: [README](../../../README.md) **Run device** -* extract binary distribution `lighty-toaster-device-23.0.0-SNAPSHOT-bin.zip` +* extract binary distribution `lighty-toaster-device-23.0.0-bin.zip` from target directory * run jar file from zip with default parameter ``` -java -jar lighty-toaster-device-23.0.0-SNAPSHOT.jar +java -jar lighty-toaster-device-23.0.0.jar ``` To run device on specific port, add port number as an argument * run device on specific port `12345` (any available port) ``` -java -jar lighty-toaster-device-23.0.0-SNAPSHOT.jar 12345 +java -jar lighty-toaster-device-23.0.0.jar 12345 ``` ### Connect to device via SSH @@ -334,4 +334,4 @@ Persistence can be manually enabled or disabled in the application's initial arg When -i argument is not set, persistence is disabled by default:
Example Startup Command: -`java -jar lighty-toaster-device-23.0.0-SNAPSHOT.jar -i path/to/persistence/directory -o path/to/persistence/directory` +`java -jar lighty-toaster-device-23.0.0.jar -i path/to/persistence/directory -o path/to/persistence/directory` diff --git a/examples/devices/lighty-toaster-device/pom.xml b/examples/devices/lighty-toaster-device/pom.xml index 5ed95e39..2ecae88b 100644 --- a/examples/devices/lighty-toaster-device/pom.xml +++ b/examples/devices/lighty-toaster-device/pom.xml @@ -14,7 +14,7 @@ io.lighty.netconf.device.examples examples-parent - 23.0.0-SNAPSHOT + 23.0.0 ../../parents/examples-parent/pom.xml diff --git a/examples/devices/lighty-toaster-multiple-devices/README.md b/examples/devices/lighty-toaster-multiple-devices/README.md index a29d24d4..fa2cca34 100644 --- a/examples/devices/lighty-toaster-multiple-devices/README.md +++ b/examples/devices/lighty-toaster-multiple-devices/README.md @@ -13,7 +13,7 @@ Build root project - for more details check: [README](../../../README.md) `--starting-port STARTING-PORT` (Default 17380) First port for simulated device. Each other device will use incremented port number. `--thread-pool-size THREAD-POOL-SIZE` (Default 8) The number of threads to keep in the pool, when creating a device simulator, even if they are idle. ``` -java -jar lighty-toaster-multiple-devices-23.0.0-SNAPSHOT.jar --starting-port 20000 --device-count 200 --thread-pool-size 200 +java -jar lighty-toaster-multiple-devices-23.0.0.jar --starting-port 20000 --device-count 200 --thread-pool-size 200 ``` ### Connect to device via SSH @@ -198,4 +198,4 @@ Persistence can be manually enabled or disabled in the application's initial arg When -i argument is not set, persistence is disabled by default:
Example Startup Command: -`java -jar lighty-toaster-multiple-devices-23.0.0-SNAPSHOT.jar -i path/to/persistence/directory -o path/to/persistence/directory` +`java -jar lighty-toaster-multiple-devices-23.0.0.jar -i path/to/persistence/directory -o path/to/persistence/directory` diff --git a/examples/devices/lighty-toaster-multiple-devices/pom.xml b/examples/devices/lighty-toaster-multiple-devices/pom.xml index 946d99f6..570c3b17 100644 --- a/examples/devices/lighty-toaster-multiple-devices/pom.xml +++ b/examples/devices/lighty-toaster-multiple-devices/pom.xml @@ -14,7 +14,7 @@ io.lighty.netconf.device.examples examples-parent - 23.0.0-SNAPSHOT + 23.0.0 ../../parents/examples-parent/pom.xml diff --git a/examples/devices/pom.xml b/examples/devices/pom.xml index c75579e2..7e029ca9 100644 --- a/examples/devices/pom.xml +++ b/examples/devices/pom.xml @@ -13,7 +13,7 @@ io.lighty.netconf.device.examples devices-aggregator - 23.0.0-SNAPSHOT + 23.0.0 pom diff --git a/examples/models/lighty-example-data-center-model/pom.xml b/examples/models/lighty-example-data-center-model/pom.xml index 5896bdf5..33422de2 100644 --- a/examples/models/lighty-example-data-center-model/pom.xml +++ b/examples/models/lighty-example-data-center-model/pom.xml @@ -12,11 +12,11 @@ io.lighty.core lighty-binding-parent - 22.0.0 + 23.0.0 io.lighty.netconf.device.examples.models lighty-example-data-center-model - 23.0.0-SNAPSHOT + 23.0.0 diff --git a/examples/models/lighty-example-network-topology-device-model/pom.xml b/examples/models/lighty-example-network-topology-device-model/pom.xml index 70963f7b..bafd788e 100644 --- a/examples/models/lighty-example-network-topology-device-model/pom.xml +++ b/examples/models/lighty-example-network-topology-device-model/pom.xml @@ -12,13 +12,13 @@ io.lighty.core lighty-binding-parent - 22.0.0 + 23.0.0 io.lighty.netconf.device.examples.models lighty-example-network-topology-device-model - 23.0.0-SNAPSHOT + 23.0.0 diff --git a/examples/models/lighty-example-network-topology-device-model/src/main/yang/network-topology-rpcs@2023-09-27.yang b/examples/models/lighty-example-network-topology-device-model/src/main/yang/network-topology-rpcs@2023-09-27.yang index 68e7de8b..d084d4dd 100644 --- a/examples/models/lighty-example-network-topology-device-model/src/main/yang/network-topology-rpcs@2023-09-27.yang +++ b/examples/models/lighty-example-network-topology-device-model/src/main/yang/network-topology-rpcs@2023-09-27.yang @@ -6,8 +6,8 @@ module network-topology-rpcs { prefix "ntr"; import network-topology { prefix "nt"; revision-date 2013-10-21; } - import netconf-node-topology { prefix "nnt"; revision-date 2024-09-11; } - import odl-netconf-device { prefix "ond"; revision-date 2024-10-09; } + import netconf-node-topology { prefix "nnt"; revision-date 2025-11-03; } + import odl-netconf-device { prefix "ond"; revision-date 2025-10-28; } organization "Pantheon.tech"; diff --git a/examples/models/lighty-example-notifications-model/pom.xml b/examples/models/lighty-example-notifications-model/pom.xml index 56ea13c7..eefaf98e 100644 --- a/examples/models/lighty-example-notifications-model/pom.xml +++ b/examples/models/lighty-example-notifications-model/pom.xml @@ -12,12 +12,12 @@ io.lighty.core lighty-binding-parent - 22.0.0 + 23.0.0 io.lighty.netconf.device.examples.models lighty-example-notifications-model - 23.0.0-SNAPSHOT + 23.0.0 diff --git a/examples/models/pom.xml b/examples/models/pom.xml index c97b79ab..c3ea61fd 100644 --- a/examples/models/pom.xml +++ b/examples/models/pom.xml @@ -11,7 +11,7 @@ io.lighty.netconf.device.examples.models lighty-models-aggregator - 23.0.0-SNAPSHOT + 23.0.0 pom diff --git a/examples/parents/examples-bom/pom.xml b/examples/parents/examples-bom/pom.xml index 4917c885..0ef16127 100644 --- a/examples/parents/examples-bom/pom.xml +++ b/examples/parents/examples-bom/pom.xml @@ -11,7 +11,7 @@ io.lighty.netconf.device.examples examples-bom - 23.0.0-SNAPSHOT + 23.0.0 pom ${project.groupId}:${project.artifactId} @@ -26,42 +26,42 @@ io.lighty.netconf.device.examples.models lighty-example-network-topology-device-model - 23.0.0-SNAPSHOT + 23.0.0 io.lighty.netconf.device.examples.models lighty-example-data-center-model - 23.0.0-SNAPSHOT + 23.0.0 io.lighty.netconf.device lighty-netconf-device - 23.0.0-SNAPSHOT + 23.0.0 io.lighty.netconf.device.examples lighty-actions-device - 23.0.0-SNAPSHOT + 23.0.0 io.lighty.netconf.device.examples lighty-toaster-device - 23.0.0-SNAPSHOT + 23.0.0 io.lighty.netconf.device.examples lighty-network-topology-device - 23.0.0-SNAPSHOT + 23.0.0 io.lighty.netconf.device.examples lighty-toaster-multiple-devices - 23.0.0-SNAPSHOT + 23.0.0 io.lighty.netconf.device.examples.models lighty-example-notifications-model - 23.0.0-SNAPSHOT + 23.0.0 diff --git a/examples/parents/examples-parent/pom.xml b/examples/parents/examples-parent/pom.xml index 892880a8..704a3249 100644 --- a/examples/parents/examples-parent/pom.xml +++ b/examples/parents/examples-parent/pom.xml @@ -14,13 +14,13 @@ io.lighty.core lighty-app-parent - 22.0.0 + 23.0.0 io.lighty.netconf.device.examples examples-parent - 23.0.0-SNAPSHOT + 23.0.0 pom ${project.groupId}:${project.artifactId} @@ -45,7 +45,7 @@ io.lighty.netconf.device.examples examples-bom - 23.0.0-SNAPSHOT + 23.0.0 pom import diff --git a/examples/parents/pom.xml b/examples/parents/pom.xml index a12318ad..32731072 100644 --- a/examples/parents/pom.xml +++ b/examples/parents/pom.xml @@ -12,7 +12,7 @@ io.lighty.netconf.device.examples.parents parents-aggregator pom - 23.0.0-SNAPSHOT + 23.0.0 examples-parent diff --git a/examples/pom.xml b/examples/pom.xml index 4b74d131..a6be679f 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -14,7 +14,7 @@ io.lighty.netconf.device.examples examples-aggregator pom - 23.0.0-SNAPSHOT + 23.0.0 parents diff --git a/lighty-netconf-device/pom.xml b/lighty-netconf-device/pom.xml index 5797aea1..cd5696ea 100644 --- a/lighty-netconf-device/pom.xml +++ b/lighty-netconf-device/pom.xml @@ -14,13 +14,13 @@ io.lighty.core lighty-parent - 22.0.0 + 23.0.0 io.lighty.netconf.device lighty-netconf-device - 23.0.0-SNAPSHOT + 23.0.0 jar @@ -33,7 +33,7 @@ lighty-codecs-util - org.opendaylight.mdsal.binding.model.ietf + org.opendaylight.ietf.model rfc8639 diff --git a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceImpl.java b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceImpl.java index 3b3bcc54..34586c4f 100644 --- a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceImpl.java +++ b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceImpl.java @@ -53,8 +53,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.Schema; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.SchemaBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.schemas.SchemaKey; +import org.opendaylight.yangtools.binding.DataObjectIdentifier; import org.opendaylight.yangtools.binding.meta.YangModuleInfo; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -125,7 +125,7 @@ void initDatastore(LogicalDatastoreType datastoreType, File initialData) { NormalizedNode initialDataBI = netconfDeviceServices.getXmlNodeConverter() .deserialize(netconfDeviceServices.getRootInference(), reader); DOMDataTreeWriteTransaction writeTx = netconfDeviceServices.getDOMDataBroker().newWriteOnlyTransaction(); - writeTx.put(datastoreType, YangInstanceIdentifier.empty(), initialDataBI); + writeTx.put(datastoreType, YangInstanceIdentifier.of(), initialDataBI); writeTx.commit().get(TimeoutUtil.TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); final String dataTreeString = NormalizedNodes.toStringTree(initialDataBI); LOG.trace("Initial {} datastore data: {}", datastoreType, dataTreeString); @@ -224,7 +224,7 @@ private FluentFuture prepareSchemasForNetconfMonitoring() } WriteTransaction writeTx = netconfDeviceServices.getDataBroker().newWriteOnlyTransaction(); writeTx.merge(LogicalDatastoreType.OPERATIONAL, - InstanceIdentifier.builder(NetconfState.class).child(Schemas.class).build(), + DataObjectIdentifier.builder(NetconfState.class).child(Schemas.class).build(), new SchemasBuilder().setSchema(mapSchemas).build()); return writeTx.commit(); } diff --git a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceServicesImpl.java b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceServicesImpl.java index 48db9a77..748028b1 100644 --- a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceServicesImpl.java +++ b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/NetconfDeviceServicesImpl.java @@ -25,6 +25,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMDataBroker; import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter; +import org.opendaylight.mdsal.dom.broker.RouterDOMNotificationService; import org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker; import org.opendaylight.mdsal.dom.spi.store.DOMStore; import org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore; @@ -74,7 +75,7 @@ public NetconfDeviceServicesImpl( this.domDataBroker = createDOMDataBroker(); this.dataBroker = new BindingDOMDataBrokerAdapter(this.adapterContext, this.domDataBroker); this.notificationService = new BindingDOMNotificationServiceAdapter(this.adapterContext, - this.domNotificationRouter.notificationService()); + new RouterDOMNotificationService(domNotificationRouter)); this.xmlNodeConverter = new XmlNodeConverter(this.effectiveModelContext); } diff --git a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/DatastoreOutputRequestProcessor.java b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/DatastoreOutputRequestProcessor.java index 6462191f..6f1da5a1 100644 --- a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/DatastoreOutputRequestProcessor.java +++ b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/DatastoreOutputRequestProcessor.java @@ -48,7 +48,7 @@ protected List getAllDataFromDatastore(LogicalDatastoreType data Optional listData; try (DOMDataTreeReadTransaction domDataReadOnlyTransaction = domDataBroker.newReadOnlyTransaction()) { FluentFuture> readData = - domDataReadOnlyTransaction.read(datastoreType, YangInstanceIdentifier.empty()); + domDataReadOnlyTransaction.read(datastoreType, YangInstanceIdentifier.of()); listData = readData.get(TimeoutUtil.TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); if (listData.isPresent()) { diff --git a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/EditConfigRequestProcessor.java b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/EditConfigRequestProcessor.java index f5c75eb4..2d91eb70 100644 --- a/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/EditConfigRequestProcessor.java +++ b/lighty-netconf-device/src/main/java/io/lighty/netconf/device/requests/EditConfigRequestProcessor.java @@ -218,7 +218,7 @@ private void ensureParentsByMerge(final YangInstanceIdentifier path, final DOMDa while (it.hasNext()) { final PathArgument pathArgument = it.next(); if (rootNormalizedPath == null) { - rootNormalizedPath = YangInstanceIdentifier.create(pathArgument); + rootNormalizedPath = YangInstanceIdentifier.of(pathArgument); } if (it.hasNext()) { @@ -233,7 +233,7 @@ private void ensureParentsByMerge(final YangInstanceIdentifier path, final DOMDa Preconditions.checkArgument(rootNormalizedPath != null, "Empty path received"); final NormalizedNode parentStructure = ImmutableNodes.fromInstanceId(effectiveModelContext, - YangInstanceIdentifier.create(normalizedPathWithoutChildArgs)); + YangInstanceIdentifier.of(normalizedPathWithoutChildArgs)); writeTx.merge(LogicalDatastoreType.CONFIGURATION, rootNormalizedPath, parentStructure); } @@ -302,7 +302,7 @@ private static YangInstanceIdentifier getYangInstanceIdentifier(final List keyValues = next.name().asMap(); targetIdentifier = YangInstanceIdentifier - .builder(YangInstanceIdentifier.create(targetIdentifier.getPathArguments())) + .builder(YangInstanceIdentifier.of(targetIdentifier.getPathArguments())) .nodeWithKey(contextNode.dataSchemaNode().getQName(), keyValues).build(); } else { - targetIdentifier = YangInstanceIdentifier.create(targetIdentifier.getPathArguments()) + targetIdentifier = YangInstanceIdentifier.of(targetIdentifier.getPathArguments()) .node(contextNode.getPathStep()); } } diff --git a/lighty-netconf-device/src/test/java/io/lighty/netconf/device/NetconfDeviceImplTest.java b/lighty-netconf-device/src/test/java/io/lighty/netconf/device/NetconfDeviceImplTest.java index 15d552ed..1844557e 100644 --- a/lighty-netconf-device/src/test/java/io/lighty/netconf/device/NetconfDeviceImplTest.java +++ b/lighty-netconf-device/src/test/java/io/lighty/netconf/device/NetconfDeviceImplTest.java @@ -32,8 +32,8 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder; +import org.opendaylight.yangtools.binding.DataObjectIdentifier; import org.opendaylight.yangtools.binding.meta.YangModuleInfo; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes; import org.testng.Assert; @@ -80,8 +80,8 @@ public void testInitDatastore() throws ExecutionException, InterruptedException, file); //create identifier final Topology topology = new TopologyBuilder().setTopologyId(new TopologyId("default-topology")).build(); - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class) + final DataObjectIdentifier tii = + DataObjectIdentifier.builder(NetworkTopology.class) .child(Topology.class, topology.key()) .build(); //read the datastore using the identifier from the simulator @@ -100,8 +100,8 @@ public void testSaveDatastore() throws ExecutionException, InterruptedException, TimeoutException, DeserializationException { //create identifier final Topology topology = new TopologyBuilder().setTopologyId(new TopologyId("default-topology")).build(); - final InstanceIdentifier tii = - InstanceIdentifier.builder(NetworkTopology.class) + final DataObjectIdentifier tii = + DataObjectIdentifier.builder(NetworkTopology.class) .child(Topology.class, topology.key()) .build(); //write a new topology to device using the identifier diff --git a/pom.xml b/pom.xml index 1df7ac18..df761a17 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ io.lighty.netconf.device netconf-device-aggregator - 23.0.0-SNAPSHOT + 23.0.0 pom