Add TAPI object resolver and DCS-dependent data provider ( to update cache )
- refactor TapiInstanceBuilder and add some util method
- add skeleton code for tapi-common get RPCs
Change-Id: I548623ad29f9b72b425713720c5081d790b42bd2
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 6da8cbf..1ab7f12 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
@@ -16,14 +16,12 @@
package org.onosproject.odtn.internal;
-import java.util.List;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
-import org.onlab.util.XmlString;
import org.onosproject.config.DynamicConfigService;
import org.onosproject.config.FailedException;
import org.onosproject.config.Filter;
@@ -38,14 +36,9 @@
import org.onosproject.net.Link;
import org.onosproject.net.Port;
-import static org.onosproject.odtn.utils.YangToolUtil.toCharSequence;
-import static org.onosproject.odtn.utils.YangToolUtil.toCompositeData;
-import static org.onosproject.odtn.utils.YangToolUtil.toXmlCompositeStream;
-
import org.onosproject.odtn.utils.tapi.TapiLinkBuilder;
import org.onosproject.odtn.utils.tapi.TapiNepRef;
import org.onosproject.odtn.utils.tapi.TapiNodeRef;
-import org.onosproject.odtn.utils.tapi.TapiResolver;
import org.onosproject.odtn.utils.tapi.TapiContextBuilder;
import org.onosproject.odtn.utils.tapi.TapiNepBuilder;
import org.onosproject.odtn.utils.tapi.TapiNodeBuilder;
@@ -57,9 +50,6 @@
import org.onosproject.yang.model.DataNode;
import org.onosproject.yang.model.InnerNode;
import org.onosproject.yang.model.ModelConverter;
-import org.onosproject.yang.model.ModelObjectData;
-import org.onosproject.yang.model.ResourceData;
-import org.onosproject.yang.model.ResourceId;
import org.slf4j.Logger;
import static org.slf4j.LoggerFactory.getLogger;
@@ -79,11 +69,12 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected ModelConverter modelConverter;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected TapiResolver tapiResolver;
+
private DefaultContext context = new DefaultContext();
private DefaultTopology topology = new DefaultTopology();
- private TapiResolver tapiResolver = new TapiResolver();
-
@Activate
public void activate() {
initDcsIfRootNotExist();
@@ -104,14 +95,9 @@
if (tapiResolver.hasNodeRef(deviceId)) {
return;
}
- TapiNodeBuilder builder = TapiNodeBuilder.builder()
+ TapiNodeBuilder.builder()
.setTopologyUuid(topology.uuid())
- .setDeviceId(deviceId);
- addModelObjectDataToDcs(builder.build());
-
- TapiNodeRef nodeRef = new TapiNodeRef(topology.uuid().toString(), builder.getUuid().toString());
- nodeRef.setDeviceId(deviceId);
- tapiResolver.addNodeRef(nodeRef);
+ .setDeviceId(deviceId).build();
}
@Override
@@ -123,21 +109,16 @@
public void addLink(Link link) {
log.info("Add link: {}", link);
- // validation check
-
- // src nep
- addNep(link.src());
- addNep(link.dst());
+ // TODO: existence check
// link
TapiNepRef srcNepRef = tapiResolver.getNepRef(link.src());
TapiNepRef dstNepRef = tapiResolver.getNepRef(link.dst());
- TapiLinkBuilder linkBuilder = TapiLinkBuilder.builder()
+ TapiLinkBuilder.builder()
.setTopologyUuid(topology.uuid())
- .setNep(srcNepRef)
- .setNep(dstNepRef);
- addModelObjectDataToDcs(linkBuilder.build());
+ .addNep(srcNepRef)
+ .addNep(dstNepRef).build();
}
@Override
@@ -148,7 +129,9 @@
@Override
public void addPort(Port port) {
log.info("Add port: {}", port);
- if (tapiResolver.hasNepRef(new ConnectPoint(port.element().id(), port.number()))) {
+
+ ConnectPoint cp = new ConnectPoint(port.element().id(), port.number());
+ if (tapiResolver.hasNepRef(cp)) {
return;
}
@@ -157,24 +140,18 @@
// nep
TapiNepBuilder nepBuilder = TapiNepBuilder.builder()
- .setPort(port)
+ .setConnectPoint(cp)
.setTopologyUuid(topology.uuid())
.setNodeUuid(Uuid.fromString(nodeId));
- TapiNepRef nepRef = new TapiNepRef(topology.uuid().toString(), nodeId, nepBuilder.getUuid().toString());
- nepRef.setConnectPoint(nepBuilder.getConnectPoint());
-
// sip
- if (TapiSipBuilder.isSip(port)) {
- TapiSipBuilder sipBuilder = TapiSipBuilder.builder().setPort(port);
- nepBuilder.setSip(sipBuilder.getUuid());
- nepRef.setSipId(sipBuilder.getUuid().toString());
+ if (TapiSipBuilder.isSip(cp)) {
- addModelObjectDataToDcs(sipBuilder.build());
+ TapiSipBuilder sipBuilder = TapiSipBuilder.builder().setConnectPoint(cp);
+ nepBuilder.addSip(sipBuilder.getUuid());
+ sipBuilder.build();
}
-
- addModelObjectDataToDcs(nepBuilder.build());
- tapiResolver.addNepRef(nepRef);
+ nepBuilder.build();
}
@Override
@@ -182,60 +159,16 @@
log.info("Remove port: {}", port);
}
- private void addNep(ConnectPoint cp) {
-
- log.info("device Id: {}", cp.deviceId());
- TapiNodeRef nodeRef = tapiResolver.getNodeRef(cp.deviceId());
- String nodeId = nodeRef.getNodeId();
-
- TapiNepBuilder nepBuilder = TapiNepBuilder.builder()
- .setConnectPoint(cp)
- .setTopologyUuid(topology.uuid())
- .setNodeUuid(Uuid.fromString(nodeId));
- TapiNepRef nepRef = new TapiNepRef(topology.uuid().toString(), nodeId, nepBuilder.getUuid().toString());
- nepRef.setConnectPoint(cp);
-
- addModelObjectDataToDcs(nepBuilder.build());
- tapiResolver.addNepRef(nepRef);
- }
-
private void initDcsTapiContext() {
- TapiContextBuilder builder = TapiContextBuilder.builder(context);
- addModelObjectDataToDcs(builder.build());
+ TapiContextBuilder.builder(context).build();
}
private void initDcsTapiTopology() {
- TapiTopologyBuilder builder = TapiTopologyBuilder.builder(topology);
- addModelObjectDataToDcs(builder.build());
+ TapiTopologyBuilder.builder(topology).build();
}
// FIXME: move DCS-related methods to DCS
- private void addModelObjectDataToDcs(ModelObjectData input) {
-
- ResourceData rnode = modelConverter.createDataNode(input);
-
- // for debug
- CharSequence strNode = toCharSequence(toXmlCompositeStream(toCompositeData(rnode)));
- log.info("XML:\n{}", XmlString.prettifyXml(strNode));
-
- addResourceDataToDcs(rnode);
- }
-
- private void addResourceDataToDcs(ResourceData input) {
- addResourceDataToDcs(input, input.resourceId());
- }
-
- private void addResourceDataToDcs(ResourceData input, ResourceId rid) {
- if (input == null || input.dataNodes() == null) {
- return;
- }
- List<DataNode> dataNodes = input.dataNodes();
- for (DataNode node : dataNodes) {
- dcs.createNode(rid, node);
- }
- }
-
private void initDcsIfRootNotExist() {
log.info("read root:");