Introducing the new YANG model for ietf-te-topology and modifying the converter utility
for TE-NBI app to match the latest YANG model.
Change-Id: I8b3a2c4204f9b91a402a8fdfeeb6ba74d7316a7a
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
index 1557d7d..436a9d0 100644
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
+++ b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NodeConverter.java
@@ -21,6 +21,7 @@
import java.util.List;
import java.util.Map;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.onlab.packet.Ip4Address;
import org.onosproject.tetopology.management.api.EncodingType;
@@ -30,10 +31,7 @@
import org.onosproject.tetopology.management.api.TeTopologyKey;
import org.onosproject.tetopology.management.api.TeTopologyService;
import org.onosproject.tetopology.management.api.link.ElementType;
-import org.onosproject.tetopology.management.api.link.NetworkLink;
-import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
import org.onosproject.tetopology.management.api.link.TeLinkId;
-import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
import org.onosproject.tetopology.management.api.link.TePathAttributes;
import org.onosproject.tetopology.management.api.link.UnderlayAbstractPath;
import org.onosproject.tetopology.management.api.node.CommonNodeData;
@@ -49,6 +47,7 @@
import org.onosproject.tetopology.management.api.node.TerminationPoint;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.DomainName;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NetworkId;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.Networks;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.NodeId;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.Network;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
@@ -59,47 +58,48 @@
.ietfnetwork.networks.network.node.DefaultSupportingNode;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
.ietfnetwork.networks.network.node.SupportingNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology.TpId;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
.ietfnetworktopology.networks.network.node.AugmentedNdNode;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
.ietfnetworktopology.networks.network.node.DefaultAugmentedNdNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.DefaultTeNodeEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.TeNodeEvent;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.informationsourceattributes.DefaultInformationSourceState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.informationsourceattributes.InformationSourceState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.informationsourceattributes.informationsourcestate.DefaultTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.informationsourceattributes.informationsourcestate.Topology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.DefaultTeNodeEvent;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.TeNodeEvent;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.DefaultInformationSourceState;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.InformationSourceState;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.informationsourcestate.DefaultTopology;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.informationsourcepernodeattributes.informationsourcestate.Topology;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.networks.network.node.AugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.networks.network.node.DefaultAugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.DefaultTe.TeBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.Te;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.DefaultState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.DefaultTunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeaugment.te.TunnelTerminationPoint;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconfigattributes.DefaultTeNodeAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconfigattributes.TeNodeAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconfigattributes.TeNodeAttributes.TeNodeAttributesBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrix;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrix.ConnectivityMatrixBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.connectivitymatrix.DefaultFrom;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.connectivitymatrix.DefaultTo;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeinfoattributes.DefaultUnderlayTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeinfoattributes.UnderlayTopology;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodetunnelterminationcapability.DefaultTerminationCapability;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodetunnelterminationcapability.TerminationCapability;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.networks.network.node.terminationpoint.AugmentedNtTerminationPoint;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.DefaultTe;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.DefaultTe.TeBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.Te;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.Config;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultConfig;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultState;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.DefaultTunnelTerminationPoint;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.State;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeaugment.te.TunnelTerminationPoint;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.DefaultTeNodeAttributes;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.TeNodeAttributes;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconfigattributes.TeNodeAttributes.TeNodeAttributesBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.ConnectivityMatrices;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrices;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.DefaultConnectivityMatrices.ConnectivityMatricesBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.DefaultConnectivityMatrix;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.DefaultConnectivityMatrix.ConnectivityMatrixBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.connectivitymatrix.DefaultFrom;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.connectivitymatrix.DefaultTo;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeinfoattributes.DefaultUnderlayTopology;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeinfoattributes.UnderlayTopology;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.DefaultLocalLinkConnectivities;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodetunnelterminationattributes.LocalLinkConnectivities;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.Srlg;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeAdminStatus;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeNodeId;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyEventType;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTopologyId;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev20130715.ietfyangtypes.DottedQuad;
@@ -176,6 +176,7 @@
te2YangConnectivityMatrix(TeNodeAttributesBuilder teNodeAttributesConfigBuilder,
Map<Long, ConnectivityMatrix> connectivityMatrices) {
ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = DefaultConnectivityMatrix.builder();
+ ConnectivityMatricesBuilder yangConnectivityMatricesBuilder = DefaultConnectivityMatrices.builder();
for (Map.Entry<Long, ConnectivityMatrix> teCmEntry :
connectivityMatrices.entrySet()) {
connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
@@ -190,23 +191,21 @@
// one item in constrainingElements list
.tpRef(((TeLinkId) teCmEntry.getValue().constrainingElements().get(0)).value())
.build());
- teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
- .addToConnectivityMatrix(connectivityMatrixConfigBuilder
- .build());
+ // TODO: add more attributes to connectivityMatrixConfigBuilder--
+
+ yangConnectivityMatricesBuilder = yangConnectivityMatricesBuilder
+ .addToConnectivityMatrix(connectivityMatrixConfigBuilder.build());
}
+ teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
+ .connectivityMatrices(yangConnectivityMatricesBuilder.build());
return teNodeAttributesConfigBuilder;
}
private static UnderlayTopology teNode2YangUnderlay(TeTopologyKey underlayTopology,
TeTopologyService teTopologyService) {
- UnderlayTopology.UnderlayTopologyBuilder underlayBuilder = DefaultUnderlayTopology
- .builder()
- .teTopologyIdRef(TeTopologyId
- .fromString(String.valueOf(underlayTopology.topologyId())))
- .clientIdRef(underlayTopology.clientId())
- .providerIdRef(underlayTopology.providerId());
+ UnderlayTopology.UnderlayTopologyBuilder underlayBuilder = DefaultUnderlayTopology.builder();
- underlayBuilder = underlayBuilder.networkIdRef(teTopologyService.networkId(underlayTopology));
+ underlayBuilder = underlayBuilder.networkRef(teTopologyService.networkId(underlayTopology));
return underlayBuilder.build();
}
@@ -264,12 +263,12 @@
InformationSourceState.InformationSourceStateBuilder issBuilder = DefaultInformationSourceState.builder();
Topology.TopologyBuilder topologyBuilder = DefaultTopology.builder();
- topologyBuilder =
- topologyBuilder.clientIdRef(teSubsystemTeNode.sourceTeNodeId().clientId())
- .providerIdRef(teSubsystemTeNode.sourceTeNodeId().providerId())
- // is this correct? Why not sourceTeNodeId().teTopologyKey()?
- .teTopologyIdRef(teSubsystemTeNode
- .sourceTeNodeId().topologyId());
+ topologyBuilder = topologyBuilder.nodeRef(teTopologyService
+ .nodeKey(teSubsystemTeNode.sourceTeNodeId()).nodeId())
+ .networkRef(teTopologyService
+ .nodeKey(teSubsystemTeNode.sourceTeNodeId())
+ .networkId());
+
issBuilder = issBuilder.topology(topologyBuilder.build());
yangStateBuilder.informationSourceState(issBuilder.build());
}
@@ -319,13 +318,13 @@
TunnelTerminationPoint.TunnelTerminationPointBuilder tunnelTpBuilder =
DefaultTunnelTerminationPoint.builder().tunnelTpId(ByteUtils.longToBytes(teTpId.longValue()));
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.tenodeaugment.te.tunnelterminationpoint.Config.ConfigBuilder ttpConfigBuilder =
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultConfig.builder();
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.tenodeaugment.te.tunnelterminationpoint.State.StateBuilder ttpStateBuilder =
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultState.builder();
// Assuming teTunnelTp only has one interLayerLock
@@ -334,46 +333,22 @@
ttpStateBuilder = ttpStateBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0));
}
- TerminationCapability.TerminationCapabilityBuilder
- tcapConfigBuilder = DefaultTerminationCapability.builder();
- // TODO: retrieve more attributes from teTunnelTp and assign to tcapConfigBuilder.
+ // TODO: retrieve teTunnelTp.switchingLayer() and set it to ttpConfigBuilder and ttpStateBuilder
+ // TODO: retrieve more attributes from teTunnelTp and assign to ttpConfigBuilder and ttpStateBuilder
// For which ones we can do the conversion?
- // FIXME: once new yang model is used, we can make llc from teTunnelTp.localLinkConnectivityList()
+
+ LocalLinkConnectivities.LocalLinkConnectivitiesBuilder
+ localLinkConnectivitiesBuilder = DefaultLocalLinkConnectivities.builder();
if (teTunnelTp.localLinkConnectivityList() != null && !teTunnelTp.localLinkConnectivityList().isEmpty()) {
- for (LocalLinkConnectivity llcn : teTunnelTp.localLinkConnectivityList()) {
- TeLinkId telinkId = (TeLinkId) llcn.constrainingElements().get(0);
- TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(teNodeKey, telinkId.value());
- NetworkLinkKey netLinkKey = teTopologyService.linkKey(globalKey);
- NetworkLink networkLink = teTopologyService
- .network(netLinkKey.networkId()).links().get(netLinkKey.linkId());
- tcapConfigBuilder = tcapConfigBuilder
- .linkTp(TpId.fromString(networkLink.source().tpId()
- .toString()));
- // convert teLinkId to networkLinkKey
- ttpConfigBuilder = ttpConfigBuilder.addToTerminationCapability(tcapConfigBuilder.build());
- }
+ // TODO: add more attributes to localLinkConnectivitiesBuilder (add connectivity matrices.--
- // TODO: retrieve teTunnelTp.switchingLayer() and set it to ttpConfigBuilder
-
- TerminationCapability.TerminationCapabilityBuilder tcapStateBuilder =
- DefaultTerminationCapability.builder();
- // TODO: retrieve more attributes from teTunnelTp and assign to tcapStateBuilder
- // For which ones we can do the conversion?
- for (LocalLinkConnectivity llcn : teTunnelTp.localLinkConnectivityList()) {
- TeLinkId telinkId = (TeLinkId) llcn.constrainingElements().get(0);
- TeLinkTpGlobalKey globalKey = new TeLinkTpGlobalKey(teNodeKey, telinkId.value());
- NetworkLinkKey netLinkKey = teTopologyService.linkKey(globalKey);
- NetworkLink networkLink = teTopologyService
- .network(netLinkKey.networkId()).links().get(netLinkKey.linkId());
- tcapStateBuilder = tcapStateBuilder
- .linkTp(TpId.fromString(networkLink.source().tpId()
- .toString()));
- ttpStateBuilder = ttpStateBuilder.addToTerminationCapability(tcapStateBuilder.build());
- }
+ ttpConfigBuilder = ttpConfigBuilder.localLinkConnectivities(localLinkConnectivitiesBuilder.build());
+ ttpStateBuilder = ttpStateBuilder.localLinkConnectivities(localLinkConnectivitiesBuilder.build());
}
tunnelTpBuilder = tunnelTpBuilder.config(ttpConfigBuilder.build())
.state(ttpStateBuilder.build());
+ // TODO: add supporting ttp.--
return tunnelTpBuilder.build();
}
@@ -431,8 +406,9 @@
TeBuilder yangTeBuilder = DefaultTe.builder();
- yangTeBuilder = yangTeBuilder.teNodeId(TeNodeId.of(DottedQuad
- .of(Ip4Address.valueOf((int) teSubsystemTeNode.teNodeId())
+ nodeAugmentBuilder = nodeAugmentBuilder
+ .teNodeId(TeNodeId.of(DottedQuad.of(Ip4Address
+ .valueOf((int) teSubsystemTeNode.teNodeId())
.toString())));
// Set configuration data
@@ -462,10 +438,12 @@
*
* @param yangNode Node in YANG model
* @param yangNetwork YANG network
+ * @param yangNetworks YANG networks
* @return TE subsystem node
*/
public static org.onosproject.tetopology.management.api.node.NetworkNode
- yang2TeSubsystemNode(Node yangNode, Network yangNetwork) {
+ yang2TeSubsystemNode(Node yangNode, Network yangNetwork,
+ Networks yangNetworks) {
checkNotNull(yangNode, E_NULL_YANG_NODE);
org.onosproject.tetopology.management.api.node.DefaultNetworkNode node;
@@ -493,10 +471,12 @@
AugmentedNwNode yangNodeAugment = (AugmentedNwNode) yangNode
.yangAugmentedInfo(AugmentedNwNode.class);
- if (yangNodeAugment != null && yangNodeAugment.te() != null && yangNodeAugment.te().teNodeId() != null) {
+ if (yangNodeAugment != null && yangNodeAugment.te() != null && yangNodeAugment.teNodeId() != null) {
+ TeNodeId teNodeId = yangNodeAugment.teNodeId();
Te yangNodeAugTe = yangNodeAugment.te();
- teNode = yang2TeSubsystemNodeAugment(yangNodeAugTe,
+ teNode = yang2TeSubsystemNodeAugment(yangNodeAugTe, teNodeId,
yangNetwork,
+ yangNetworks,
yangNode,
tps);
}
@@ -511,21 +491,21 @@
private static Map<Long, ConnectivityMatrix>
yang2TeSubsystemNodeConnectivityMatrix(String networkId,
String nodeId,
- List<org.onosproject.yang.gen.v1.urn.ietf
- .params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.tenodeconnectivitymatrix.
- ConnectivityMatrix> yangMatrix) {
+ ConnectivityMatrices yangMatrices) {
Map<Long, ConnectivityMatrix> teCmList = Maps.newHashMap();
-
+ List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
+ .tenodeconnectivitymatrix.connectivitymatrices.ConnectivityMatrix>
+ yangMatrix = yangMatrices.connectivityMatrix();
for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te
- .topology.rev20160708.ietftetopology.tenodeconnectivitymatrix.
+ .topology.rev20170110.ietftetopology.tenodeconnectivitymatrix.connectivitymatrices.
ConnectivityMatrix cmYang : yangMatrix) {
ElementType from = new TeLinkId(Long.valueOf(((String) cmYang.from().tpRef()))); // is this correct?
UnderlayAbstractPath underlayPath = null; // ignore
+ // TODO: add pathElements and underlayPath.--
List<ElementType> mergingList = Lists.newArrayList(); // empty merging list for now
@@ -543,9 +523,7 @@
}
TePathAttributes teAttributes = new
TePathAttributes(cmYang.teDefaultMetric(),
- cmYang.performanceMetric() == null ? null :
- (cmYang.performanceMetric().measurement() == null ? null :
- cmYang.performanceMetric().measurement().unidirectionalDelay()),
+ cmYang.teDelayMetric(),
srlgs);
ConnectivityMatrix coreCm = new ConnectivityMatrix(cmYang.id(),
from,
@@ -561,16 +539,16 @@
return teCmList;
}
- private static TeTopologyKey yang2TeSubsystemNodeUnderlayTopology(UnderlayTopology ut) {
- TeTopologyKey tetopokey = new TeTopologyKey((Long) ut.providerIdRef(),
- (Long) ut.clientIdRef(),
- Long.valueOf((String) ut.teTopologyIdRef()));
+ private static TeTopologyKey yang2TeSubsystemNodeUnderlayTopology(UnderlayTopology ut, Networks yangNetworks) {
+ TeTopologyKey tetopokey = LinkConverter.findTopologyId(yangNetworks,
+ ut.networkRef());
return tetopokey;
}
// TODO: retrieve the details of tunnel termiantion points from yang to te
private static Map<Long, org.onosproject.tetopology.management.api.node.
- TunnelTerminationPoint> yang2TeSubsystemTtp(List<TunnelTerminationPoint> ttps, Node yangNode) {
+ TunnelTerminationPoint> yang2TeSubsystemTtp(List<TunnelTerminationPoint> ttps, Node yangNode,
+ Networks yangNetworks) {
Map<Long, org.onosproject.tetopology.management.api.node.TunnelTerminationPoint> ttpsMap = Maps
.newHashMap();
for (TunnelTerminationPoint ttpYang : ttps) {
@@ -588,30 +566,28 @@
// FIXME: once new yang model is used, we can make llc
ElementType elt = null;
List<ElementType> eltList = Lists.newArrayList();
-
- if (ttpYang.config() != null
- && ttpYang.config().terminationCapability() != null
- && !ttpYang.config().terminationCapability().isEmpty()) {
- for (TerminationCapability tercap : ttpYang.config()
- .terminationCapability()) {
-
- if (yangNode.yangAugmentedInfoMap() != null
- && !yangNode.yangAugmentedInfoMap().isEmpty()) {
-
+ if (ttpYang.config() != null &&
+ ttpYang.config().localLinkConnectivities() != null &&
+ CollectionUtils.isNotEmpty(ttpYang.config().localLinkConnectivities().localLinkConnectivity())) {
+ for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
+ .ietftetopology.tenodetunnelterminationattributes.locallinkconnectivities
+ .LocalLinkConnectivity yangLlc : ttpYang.config()
+ .localLinkConnectivities().localLinkConnectivity()) {
+ if (MapUtils.isNotEmpty(yangNode.yangAugmentedInfoMap())) {
AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode
.yangAugmentedInfo(AugmentedNdNode.class);
for (org.onosproject.yang.gen.v1.urn.ietf.params.xml
.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
.networks.network.node.augmentedndnode
.TerminationPoint tpItem : yangTpNodeAugment.terminationPoint()) {
- if (tpItem.tpId().uri().string().equals(tercap.linkTp().toString())) {
+ if (tpItem.tpId().uri().string().equals(yangLlc.linkTpRef().toString())) {
if (tpItem.yangAugmentedInfoMap() != null
&& !tpItem.yangAugmentedInfoMap().isEmpty()) {
AugmentedNtTerminationPoint yangTpAugment =
(AugmentedNtTerminationPoint) tpItem
.yangAugmentedInfo(AugmentedNtTerminationPoint.class);
- if (yangTpAugment.te() != null && yangTpAugment.te().teTpId() != null) {
- elt = new TeLinkId(Long.valueOf(yangTpAugment.te().teTpId().toString()));
+ if (yangTpAugment.teTpId() != null) {
+ elt = new TeLinkId(Long.valueOf(yangTpAugment.teTpId().toString()));
break;
}
}
@@ -622,6 +598,7 @@
// tercap.linkTp().toString() //tpId -> tp -> te-tp-id (long)
}
}
+
TePathAttributes teAttributes = null; // how to find these
// attributes from ttpYang?
UnderlayAbstractPath underlayPath = null; // how to find underlayAbstractPath from ttpYang?
@@ -633,6 +610,8 @@
float[] availAdaptBandwidth = null; // how to find availableBandwidth?
+ // TODO: add supportTtp and pass it below instead of null.--
+
org.onosproject.tetopology.management.api.node.
TunnelTerminationPoint ttpTe = new
org.onosproject.tetopology.management.api.node.
@@ -652,17 +631,18 @@
}
private static TeNode yang2TeSubsystemNodeAugment(Te yangNodeAugTe,
+ TeNodeId teNodeId,
Network yangNetwork,
+ Networks yangNetworks,
Node yangNode,
Map<KeyId, TerminationPoint> teTps) {
NodeId yangNodeId = yangNode.nodeId();
- List<SupportingNode> yangSupportNodes = yangNode.supportingNode();
NetworkId yangNetworkId = yangNetwork.networkId();
- long teNodeId = Ip4Address.valueOf(yangNodeAugTe.teNodeId().dottedQuad().string()).toInt();
+ long teNodeIdLong = Ip4Address.valueOf(teNodeId.dottedQuad().string()).toInt();
TeTopologyKey underlayTopologyIdId = null;
@@ -716,7 +696,7 @@
if (teNodeAttr.underlayTopology() != null) {
underlayTopologyIdId = yang2TeSubsystemNodeUnderlayTopology(teNodeAttr
- .underlayTopology());
+ .underlayTopology(), yangNetworks);
}
BitSet flags = new BitSet();
if (teNodeAttr.isAbstract()) {
@@ -728,20 +708,23 @@
EnumConverter.yang2TeSubsystemOpStatus(yangNodeAugTe.state().operStatus()),
flags);
- if (teNodeAttr.connectivityMatrix() != null) {
+// if (teNodeAttr.connectivityMatrix() != null) {
+ if (teNodeAttr.connectivityMatrices() != null) {
connMatrices = yang2TeSubsystemNodeConnectivityMatrix(yangNetworkId.uri().toString(),
yangNodeId.uri().toString(),
- teNodeAttr.connectivityMatrix());
+ teNodeAttr.connectivityMatrices());
}
}
}
if (yangNodeAugTe.tunnelTerminationPoint() != null) {
- ttps = yang2TeSubsystemTtp(yangNodeAugTe.tunnelTerminationPoint(), yangNode);
+ ttps = yang2TeSubsystemTtp(yangNodeAugTe.tunnelTerminationPoint(),
+ yangNode,
+ yangNetworks);
}
- TeNode teNode = new DefaultTeNode(teNodeId,
+ TeNode teNode = new DefaultTeNode(teNodeIdLong,
underlayTopologyIdId,
supportTeNodeId,
sourceTeNodeId,
@@ -790,7 +773,7 @@
NetworkNode node = eventData.neworkNode();
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
- rev20160708.ietftetopology.tenodeconfigattributesnotification.
+ rev20170110.ietftetopology.tenodeconfigattributesnotification.
TeNodeAttributes teNodeAttributes = node == null ? null
: teNode2YangTeNodeAttributes(node.teNode());
builder.teNodeAttributes(teNodeAttributes);
@@ -799,23 +782,23 @@
}
private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.
- ietf.te.topology.rev20160708.ietftetopology.
+ ietf.te.topology.rev20170110.ietftetopology.
tenodeconfigattributesnotification.
TeNodeAttributes teNode2YangTeNodeAttributes(TeNode teNode) {
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
- rev20160708.ietftetopology.tenodeconfigattributesnotification.
+ rev20170110.ietftetopology.tenodeconfigattributesnotification.
TeNodeAttributes.TeNodeAttributesBuilder attrBuilder =
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
- rev20160708.ietftetopology.tenodeconfigattributesnotification.
+ rev20170110.ietftetopology.tenodeconfigattributesnotification.
DefaultTeNodeAttributes.builder();
if (teNode.connectivityMatrices() != null) {
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
.tenodeconnectivitymatrixabs.DefaultConnectivityMatrix
.ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = org.onosproject.yang.gen.v1.urn.ietf.
- params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrixabs.
+ params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology.tenodeconnectivitymatrixabs.
DefaultConnectivityMatrix.builder();
for (Map.Entry<Long, ConnectivityMatrix> teCmEntry :
teNode.connectivityMatrices().entrySet()) {
@@ -823,13 +806,13 @@
.id(teCmEntry.getKey())
.isAllowed(!teCmEntry.getValue().flags()
.get(ConnectivityMatrix.BIT_DISALLOWED))
- .from(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .from(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix.DefaultFrom
.FromBuilder() // TODO: for now, assuming that there is
// only one 'from', and mergingList is empty
.tpRef(teCmEntry.getValue().from())
.build())
- .to(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .to(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110
.ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix
.DefaultTo.ToBuilder() // TODO: for now, assuming that there is only
// one item in constrainingElements list
@@ -842,19 +825,12 @@
}
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
- rev20160708.ietftetopology.tenodeconfigattributesnotification.
+ rev20170110.ietftetopology.tenodeconfigattributesnotification.
TeNodeAttributes teNodeAttributes = attrBuilder.build();
return teNodeAttributes;
}
- /**
- * Retrieves the TE network node key from a YANG network node notification
- * event.
- *
- * @param yangNodeEvent YANG network node notification event
- * @return TE network node key
- */
public static NetworkNodeKey yangNodeEvent2NetworkNodeKey(TeNodeEvent yangNodeEvent) {
NetworkId networkRef = NetworkId.fromString(yangNodeEvent.networkRef().toString());
NodeId nodeRef = NodeId.fromString(yangNodeEvent.nodeRef().toString());
@@ -919,7 +895,7 @@
TeStatus opStatus = oldTeNode.opStatus();
BitSet flags = oldTeNode.flags();
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20170110.ietftetopology
.tenodeconfigattributesnotification
.TeNodeAttributes yangTeNodeAttrs = yangNodeEvent.teNodeAttributes();
@@ -935,14 +911,14 @@
}
List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.
- ietf.te.topology.rev20160708.ietftetopology
+ ietf.te.topology.rev20170110.ietftetopology
.tenodeconnectivitymatrixabs.ConnectivityMatrix> yangConnMatrices = yangTeNodeAttrs
.connectivityMatrix();
if (yangConnMatrices != null) {
for (org.onosproject.yang.gen.v1.
urn.ietf.params.xml.ns.yang.
ietf.te.topology
- .rev20160708.ietftetopology
+ .rev20170110.ietftetopology
.tenodeconnectivitymatrixabs
.ConnectivityMatrix yangConnMatrix : yangConnMatrices) {
Long cmId = new Long(yangConnMatrix.id());
@@ -967,7 +943,7 @@
private static ConnectivityMatrix yangNodeEvent2TeConnectivityMatrix(org.onosproject.yang.gen.v1.
urn.ietf.params.xml.ns.yang.
ietf.te.topology
- .rev20160708.ietftetopology
+ .rev20170110.ietftetopology
.tenodeconnectivitymatrixabs
.ConnectivityMatrix yangConnMatrix,
ConnectivityMatrix oldTeConnMatrix) {