[ONOS-7758] Assume static root node in DynamicConfigStore
Change-Id: I07fcbafa2ccb3e34163735d7d188a7b4a6bc9306
diff --git a/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java b/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java
index c960646..1ae8d46 100644
--- a/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java
+++ b/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java
@@ -145,10 +145,10 @@
if (spath == null) {
throw new FailedException("Invalid ResourceId, cannot create Node");
}
- if (!spath.equals(ResourceIdParser.ROOT)) {
- if (completeVersioned(keystore.get(DocumentPath.from(spath))) == null) {
- throw new FailedException("Node or parent does not exist for " + spath);
- }
+ if (spath.equals(ResourceIdParser.ROOT) && node == null) {
+ return CompletableFuture.completedFuture(true);
+ } else if (complete(keystore.get(DocumentPath.from(spath))) == null) {
+ throw new FailedException("Node or parent does not exist for " + spath);
}
ResourceId abs = ResourceIds.resourceId(parent, node);
//spath = ResourceIdParser.appendNodeKey(spath, node.key());
diff --git a/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java b/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java
index cdec56a..3383d50 100644
--- a/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java
+++ b/apps/config/src/main/java/org/onosproject/config/impl/DynamicConfigManager.java
@@ -89,16 +89,6 @@
* Ensure built-in tree nodes exists.
*/
private void initStore() {
- store.nodeExist(ResourceIds.ROOT_ID)
- .thenAccept(exists -> {
- if (!exists) {
- log.info("Root node does not exist!, creating...");
- store.addNode(null,
- InnerNode.builder(DeviceResourceIds.ROOT_NAME, DCS_NAMESPACE)
- .type(Type.SINGLE_INSTANCE_NODE).build());
- }
- }).join();
-
store.nodeExist(DeviceResourceIds.DEVICES_ID)
.thenAccept(exists -> {
if (!exists) {
diff --git a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java
index a7334c6..4acaf47 100644
--- a/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java
+++ b/apps/odtn/api/src/main/java/org/onosproject/odtn/utils/tapi/TapiObjectHandler.java
@@ -21,6 +21,7 @@
import org.apache.commons.lang.NotImplementedException;
import org.onlab.util.XmlString;
import org.onosproject.config.DynamicConfigService;
+import org.onosproject.config.FailedException;
import org.onosproject.config.Filter;
import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
import org.onosproject.yang.model.DataNode;
@@ -222,7 +223,11 @@
}
List<DataNode> dataNodes = input.dataNodes();
for (DataNode node : dataNodes) {
- dcs.createNode(rid, node);
+ try {
+ dcs.createNode(rid, node);
+ } catch (FailedException e) {
+ log.warn("Failed to add resource", e);
+ }
}
}
diff --git a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java
index b28c769..659e984 100644
--- a/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java
+++ b/apps/odtn/service/src/main/java/org/onosproject/odtn/internal/DcsBasedTapiTopologyManager.java
@@ -23,13 +23,7 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.onosproject.config.DynamicConfigService;
-import org.onosproject.config.FailedException;
-import org.onosproject.config.Filter;
-import org.onosproject.d.config.DeviceResourceIds;
-import static org.onosproject.d.config.DeviceResourceIds.DCS_NAMESPACE;
-
-import org.onosproject.d.config.ResourceIds;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
@@ -50,8 +44,6 @@
import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
-import org.onosproject.yang.model.DataNode;
-import org.onosproject.yang.model.InnerNode;
import org.onosproject.yang.model.ModelConverter;
import org.slf4j.Logger;
@@ -80,7 +72,6 @@
@Activate
public void activate() {
- initDcsIfRootNotExist();
initDcsTapiContext();
initDcsTapiTopology();
log.info("Started");
@@ -189,37 +180,4 @@
topology = topologyHandler.getModelObject();
topologyHandler.add();
}
-
- /**
- * Setup Dcs configuration tree root node.
- */
- // FIXME Dcs seems to setup root node by itself when activatation, this might not needed
- private void initDcsIfRootNotExist() {
-
- log.info("read root:");
- try {
- DataNode all = dcs.readNode(ResourceIds.ROOT_ID, Filter.builder().build());
- log.info("all: {}", all);
- } catch (FailedException e) {
- // FIXME debug this issue
- log.info("nothing retrievable in DCS?");
- //e.printStackTrace(System.out);
- }
- if (!dcs.nodeExist(ResourceIds.ROOT_ID)) {
- log.info("Root node does not exist!, creating...");
- try {
- log.info("create 'root' node");
- dcs.createNode(null,
- InnerNode.builder(DeviceResourceIds.ROOT_NAME, DCS_NAMESPACE)
- .type(DataNode.Type.SINGLE_INSTANCE_NODE).build());
- } catch (FailedException e) {
- log.info("Failed to create root???");
- //e.printStackTrace(System.out);
- }
- }
- if (!dcs.nodeExist(ResourceIds.ROOT_ID)) {
- log.info("'root' was created without error, but still not there. WTF!");
- }
- }
-
}