Fix persistence when karaf is restarted 41/103441/3
authorJonas Mårtensson <jonas.martensson@smartoptics.com>
Mon, 28 Nov 2022 12:09:35 +0000 (12:09 +0000)
committerJonas Mårtensson <jonas.martensson@smartoptics.com>
Thu, 15 Feb 2024 20:57:14 +0000 (20:57 +0000)
OpenDaylight supports datastore persistence but this does not currently
work for TransportPCE since the service list and all openroadm network
layers are initialised as empty when karaf is started.

This changes the transaction from put to merge in order to not
overwrite existing services and network layers.

This also sets config datastore persistence to false before running
tests since they are implemented with the assumption that datastore is
not persistent.

JIRA: TRNSPRTPCE-706

Signed-off-by: Jonas Mårtensson <jonas.martensson@smartoptics.com>
Change-Id: Icec7a1ae47d7001eb408b3b573a837daa8645bc8

karaf/src/main/assembly/ressources/post_install_for_tests.sh
networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/util/TpceNetwork.java
servicehandler/src/main/java/org/opendaylight/transportpce/servicehandler/service/ServiceDataStoreOperationsImpl.java

index 86e32826dce2b780300d393239928aa3d55fe20e..40f3545d0d92314fcdd9b713e4787ed3d0abedba 100755 (executable)
@@ -8,6 +8,8 @@ sed 's/8181/ODL_RESTCONF_PORT/' ../etc/jetty.xml > jetty_template.xml
 sed 's/8101/ODL_SHELL_PORT/' ../etc/org.apache.karaf.shell.cfg > org.apache.karaf.shell._template.cfg
 sed -e 's/1099/ODL_RMI_REGISTRY_PORT/' -e 's/44444/ODL_RMI_SERVER_PORT/' ../etc/org.apache.karaf.management.cfg > org.apache.karaf.management._template.cfg
 
+sed 's/^#persistent=true/persistent=false/' ../system/org/opendaylight/controller/sal-clustering-config/*/sal-clustering-config-*-datastore.cfg > ../etc/org.opendaylight.controller.cluster.datastore.cfg
+
 sed -i'_' -e '1 a\
 \
 . \$(dirname \$0)/\.\./\.\./\.\./\.\./tests/reflectwarn.sh\
index a8818bcb44931a3bacf3939506d882c3244e760c..a19a8636f27c1f4d43674543fb1e946dc72e4b64 100644 (file)
@@ -49,7 +49,7 @@ public class TpceNetwork {
             Network network = createNetwork(networkId);
             InstanceIdentifier.Builder<Network> nwIID = InstanceIdentifier.builder(Networks.class).child(Network.class,
                 new NetworkKey(new NetworkId(networkId)));
-            networkTransactionService.put(LogicalDatastoreType.CONFIGURATION, nwIID.build(), network);
+            networkTransactionService.merge(LogicalDatastoreType.CONFIGURATION, nwIID.build(), network);
             this.networkTransactionService.commit().get(1, TimeUnit.SECONDS);
             LOG.info("{} network layer created successfully.", networkId);
         } catch (ExecutionException | TimeoutException | InterruptedException e) {
index 5a7386ffa9ed05f0fdce1c0250e3f343e89af651..9c9c8de52c3e0b5135fcba8947944338330be587 100644 (file)
@@ -90,7 +90,7 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         try {
             LOG.info("initializing service registry");
             WriteTransaction transaction = this.dataBroker.newWriteOnlyTransaction();
-            transaction.put(
+            transaction.merge(
                 LogicalDatastoreType.OPERATIONAL,
                 InstanceIdentifier.create(ServiceList.class),
                 new ServiceListBuilder().build());
@@ -105,7 +105,7 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         try {
             LOG.info("initializing temp service registry");
             WriteTransaction transaction = this.dataBroker.newWriteOnlyTransaction();
-            transaction.put(
+            transaction.merge(
                 LogicalDatastoreType.OPERATIONAL,
                 InstanceIdentifier.create(TempServiceList.class),
                 new TempServiceListBuilder().build());