Use new UpgradeConfig
[genius.git] / mdsalutil / mdsalutil-impl / src / main / java / org / opendaylight / genius / mdsalutil / internal / UpgradeStateListener.java
index 5637ca3f3f38176995ad9b56170dfc7b5f7e5483..83680e4ea9a70a1d5c0eb52230154f172e41548d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Red Hat, Inc. and others. All rights reserved.
+ * Copyright (c) 2017, 2018 Red Hat, Inc. and others. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -33,14 +33,19 @@ public class UpgradeStateListener extends AbstractClusteredSyncDataTreeChangeLis
     private static final Logger LOG = LoggerFactory.getLogger(UpgradeStateListener.class);
 
     private final AtomicBoolean isUpgradeInProgress = new AtomicBoolean(false);
+    private final UpgradeUtils upgradeUtils;
 
     @Inject
-    public UpgradeStateListener(@OsgiService final DataBroker dataBroker, final Config config) {
+    public UpgradeStateListener(@OsgiService final DataBroker dataBroker, final Config config,
+                                final UpgradeUtils upgradeStateUtils) {
         super(dataBroker, new DataTreeIdentifier<>(
                 LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(Config.class)));
+        this.upgradeUtils = upgradeStateUtils;
         // When this config value is set from a file it is not accessible via the yang tree...
         // so we just write it once here just in case.
         try {
+            //TODO: DS Writes should ideally be done from one node to avoid ConflictingModExceptions
+            upgradeStateUtils.setUpgradeConfig(config.isUpgradeInProgress());
             SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION,
                     InstanceIdentifier.create(Config.class), config);
         } catch (TransactionCommitFailedException e) {
@@ -55,12 +60,14 @@ public class UpgradeStateListener extends AbstractClusteredSyncDataTreeChangeLis
 
     @Override
     public void add(@Nonnull InstanceIdentifier<Config> instanceIdentifier, @Nonnull Config config) {
+        upgradeUtils.setUpgradeConfig(config.isUpgradeInProgress());
         isUpgradeInProgress.set(config.isUpgradeInProgress());
         LOG.info("UpgradeStateListener.add: isUpgradeInProgress = {}", config.isUpgradeInProgress());
     }
 
     @Override
     public void remove(@Nonnull InstanceIdentifier<Config> instanceIdentifier, @Nonnull Config config) {
+        upgradeUtils.setUpgradeConfig(false);
         isUpgradeInProgress.set(false);
         LOG.info("UpgradeStateListener.remove: isUpgradeInProgress = {}", false);
     }
@@ -68,6 +75,7 @@ public class UpgradeStateListener extends AbstractClusteredSyncDataTreeChangeLis
     @Override
     public void update(@Nonnull InstanceIdentifier<Config> instanceIdentifier,
                        @Nonnull Config originalConfig, @Nonnull Config updatedConfig) {
+        upgradeUtils.setUpgradeConfig(updatedConfig.isUpgradeInProgress());
         isUpgradeInProgress.set(updatedConfig.isUpgradeInProgress());
         LOG.info("UpgradeStateListener.update: isUpgradeInProgress = {}", updatedConfig.isUpgradeInProgress());
     }