TeTopology core and nbi bug fixes and improvements
Change-Id: I5f3dbcaa79b04c1b1b00b9df7ccae804953c3bae
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java
index 1e15726..f733231 100644
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java
+++ b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/EnumConverter.java
@@ -146,4 +146,4 @@
}
}
-}
+}
\ No newline at end of file
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java
index c567667..1234f7c 100644
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java
+++ b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/LinkConverter.java
@@ -15,7 +15,14 @@
*/
package org.onosproject.teyang.utils.topology;
-import com.google.common.collect.Lists;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onosproject.tetopology.management.api.TeConstants.MAX_PRIORITY;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.BitSet;
+import java.util.List;
+
import org.onlab.packet.Ip4Address;
import org.onosproject.tetopology.management.api.KeyId;
import org.onosproject.tetopology.management.api.TeStatus;
@@ -24,6 +31,7 @@
import org.onosproject.tetopology.management.api.link.CommonLinkData;
import org.onosproject.tetopology.management.api.link.DefaultNetworkLink;
import org.onosproject.tetopology.management.api.link.DefaultTeLink;
+import org.onosproject.tetopology.management.api.link.ElementType;
import org.onosproject.tetopology.management.api.link.ExternalLink;
import org.onosproject.tetopology.management.api.link.LinkBandwidth;
import org.onosproject.tetopology.management.api.link.NetworkLink;
@@ -31,6 +39,7 @@
import org.onosproject.tetopology.management.api.link.NetworkLinkKey;
import org.onosproject.tetopology.management.api.link.PathElement;
import org.onosproject.tetopology.management.api.link.TeLink;
+import org.onosproject.tetopology.management.api.link.TeLinkId;
import org.onosproject.tetopology.management.api.link.TeLinkTpGlobalKey;
import org.onosproject.tetopology.management.api.link.TeLinkTpKey;
import org.onosproject.tetopology.management.api.link.TePathAttributes;
@@ -41,137 +50,96 @@
import org.onosproject.tetopology.management.api.node.NodeTpKey;
import org.onosproject.tetopology.management.api.node.TeNode;
import org.onosproject.tetopology.management.api.node.TerminationPointKey;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev20130715.ietfinettypes.IpAddress;
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.ietfnetwork.networks.network
- .Node;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .LinkId;
-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.AugmentedNdNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.DefaultLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.DefaultLink.LinkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.Link;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.link.DefaultDestination;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.link.DefaultSource;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.link.DefaultSupportingLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.link.Destination.DestinationBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.link.Source.SourceBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.link.SupportingLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology
- .networks.network.augmentedndnetwork.link.SupportingLink.SupportingLinkBuilder;
-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.te.topology.rev20160708.ietftetopology
- .DefaultTeLinkEvent;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network.Node;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.LinkId;
+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.AugmentedNdNetwork;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.DefaultLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.DefaultLink.LinkBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.Link;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultDestination;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultSource;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.link.DefaultSupportingLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.link.Destination
+ .DestinationBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.link.Source.SourceBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.link.SupportingLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
+ .ietfnetworktopology.networks.network.augmentedndnetwork.link.SupportingLink
+ .SupportingLinkBuilder;
+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.te.topology.rev20160708.ietftetopology.DefaultTeLinkEvent;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.TeLinkEvent;
-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.ietftetopology.networks
- .network.AugmentedNwNetwork;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.networks
- .network.link.AugmentedNtLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.networks
- .network.link.DefaultAugmentedNtLink;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.networks
- .network.link.DefaultAugmentedNtLink.AugmentedNtLinkBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.networks
- .network.node.AugmentedNwNode;
-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
- .telinkaugment.DefaultTe;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkaugment.DefaultTe.TeBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkaugment.te.Config;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkaugment.te.DefaultConfig;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkaugment.te.DefaultConfig.ConfigBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkaugment.te.DefaultState;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkaugment.te.DefaultState.StateBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkaugment.te.State;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconfigattributes.DefaultTeLinkAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconfigattributes.DefaultTeLinkAttributes.TeLinkAttributesBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconfigattributes.TeLinkAttributes;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconfigattributes.telinkattributes.DefaultExternalDomain;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconfigattributes.telinkattributes.DefaultExternalDomain.ExternalDomainBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconfigattributes.telinkattributes.DefaultUnderlay.UnderlayBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconfigattributes.telinkattributes.ExternalDomain;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconnectivityattributes.DefaultTeSrlgs;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconnectivityattributes.DefaultTeSrlgs.TeSrlgsBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconnectivityattributes.DefaultUnreservedBandwidth;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconnectivityattributes.DefaultUnreservedBandwidth.UnreservedBandwidthBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconnectivityattributes.TeSrlgs;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkconnectivityattributes.UnreservedBandwidth;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkinfoattributes.LinkProtectionTypeEnum;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkunderlayattributes.DefaultUnderlayBackupPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkunderlayattributes.DefaultUnderlayBackupPath.UnderlayBackupPathBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkunderlayattributes.DefaultUnderlayPrimaryPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkunderlayattributes.DefaultUnderlayPrimaryPath.UnderlayPrimaryPathBuilder;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkunderlayattributes.UnderlayPrimaryPath;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .telinkunderlayattributes.underlayprimarypath.DefaultPathElement;
-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.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.ietftetopology.networks.network.AugmentedNwNetwork;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .ietftetopology.networks.network.link.AugmentedNtLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .ietftetopology.networks.network.link.DefaultAugmentedNtLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .ietftetopology.networks.network.link.DefaultAugmentedNtLink.AugmentedNtLinkBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.networks.network.node.AugmentedNwNode;
+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.telinkaugment.DefaultTe;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkaugment.DefaultTe.TeBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkaugment.te.Config;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkaugment.te.DefaultConfig;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkaugment.te.DefaultConfig.ConfigBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkaugment.te.DefaultState;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkaugment.te.DefaultState.StateBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkaugment.te.State;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.DefaultTeLinkAttributes;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.DefaultTeLinkAttributes.TeLinkAttributesBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.TeLinkAttributes;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.telinkattributes.DefaultExternalDomain;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.telinkattributes.DefaultExternalDomain.ExternalDomainBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.telinkattributes.DefaultUnderlay;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.telinkattributes.DefaultUnderlay.UnderlayBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconfigattributes.telinkattributes.ExternalDomain;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconnectivityattributes.DefaultTeSrlgs.TeSrlgsBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconnectivityattributes.DefaultUnreservedBandwidth;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconnectivityattributes.DefaultUnreservedBandwidth.UnreservedBandwidthBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconnectivityattributes.TeSrlgs;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkconnectivityattributes.UnreservedBandwidth;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkinfoattributes.LinkProtectionTypeEnum;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkunderlayattributes.DefaultUnderlayBackupPath;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkunderlayattributes.DefaultUnderlayBackupPath.UnderlayBackupPathBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkunderlayattributes.DefaultUnderlayPrimaryPath;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkunderlayattributes.DefaultUnderlayPrimaryPath.UnderlayPrimaryPathBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkunderlayattributes.UnderlayPrimaryPath;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.telinkunderlayattributes.underlayprimarypath.DefaultPathElement;
+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.types.rev20160705.ietftetypes.Srlg;
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.TeOperStatus;
-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.TeTopologyEventType;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.TeTpId;
-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.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.DefaultUnnumberedLink.UnnumberedLinkBuilder;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.explicitroutesubobject.type.UnnumberedLink;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.BitSet;
-import java.util.List;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
+import com.google.common.collect.Lists;
/**
* The conversion functions.
@@ -194,30 +162,29 @@
private static LinkProtectionTypeEnum teSubsystem2YangLinkProtectionType(TunnelProtectionType linkProtectionType) {
switch (linkProtectionType) {
- case ENHANCED:
- return LinkProtectionTypeEnum.ENHANCED;
- case EXTRA_TRAFFIC:
- return LinkProtectionTypeEnum.EXTRA_TRAFFIC;
- case SHARED:
- return LinkProtectionTypeEnum.SHARED;
- case UNPROTECTED:
- return LinkProtectionTypeEnum.UNPROTECTED;
- case ONE_FOR_ONE:
- return LinkProtectionTypeEnum.YANGAUTOPREFIX1_FOR_1;
- case ONE_PLUS_ONE:
- return LinkProtectionTypeEnum.YANGAUTOPREFIX1_PLUS_1;
- default:
- return null;
+ case ENHANCED:
+ return LinkProtectionTypeEnum.ENHANCED;
+ case EXTRA_TRAFFIC:
+ return LinkProtectionTypeEnum.EXTRA_TRAFFIC;
+ case SHARED:
+ return LinkProtectionTypeEnum.SHARED;
+ case UNPROTECTED:
+ return LinkProtectionTypeEnum.UNPROTECTED;
+ case ONE_FOR_ONE:
+ return LinkProtectionTypeEnum.YANGAUTOPREFIX1_FOR_1;
+ case ONE_PLUS_ONE:
+ return LinkProtectionTypeEnum.YANGAUTOPREFIX1_PLUS_1;
+ default:
+ return null;
}
}
-
/**
* TE Link Config object conversion from TE Topology subsystem to YANG.
*
* @param teLink TE link object
* @return TE Link Config YANG object
*/
- private static Config teLink2YangConfig(TeLink teLink) {
+ private static Config teLink2YangConfig(TeLink teLink, TeTopologyService teTopologyService) {
checkNotNull(teLink, E_NULL_TELINK_DATA);
TeLinkAttributesBuilder attrBuilder = DefaultTeLinkAttributes.builder();
@@ -234,7 +201,7 @@
if (teLink.tunnelProtectionType() != null) {
attrBuilder = attrBuilder
.linkProtectionType(teSubsystem2YangLinkProtectionType(teLink
- .tunnelProtectionType()));
+ .tunnelProtectionType()));
}
attrBuilder = attrBuilder.teDefaultMetric(teLink.cost());
@@ -257,27 +224,25 @@
if (teLink.externalLink().externalLinkKey() != null) {
edBuilder = edBuilder
.remoteTeLinkTpId(TeTpId.fromString(
- String.valueOf(teLink
- .externalLink()
- .externalLinkKey()
- .teLinkTpId())))
+ String.valueOf(teLink
+ .externalLink()
+ .externalLinkKey()
+ .teLinkTpId())))
.remoteTeNodeId(TeNodeId.fromString(
- String.valueOf(teLink
- .externalLink()
- .externalLinkKey()
- .teNodeId())));
+ String.valueOf(teLink
+ .externalLink()
+ .externalLinkKey()
+ .teNodeId())));
}
attrBuilder = attrBuilder.externalDomain(edBuilder.build());
}
if (teLink.availBandwidth() != null) {
- short i = 0;
- for (float f : teLink.availBandwidth()) {
+ for (short i = 0; i < teLink.availBandwidth().length; i++) {
UnreservedBandwidthBuilder urBuilder =
DefaultUnreservedBandwidth.builder()
- .bandwidth(BigDecimal.valueOf(f))
- .priority(i);
- i++;
+ .bandwidth(BigDecimal.valueOf(teLink.availBandwidth()[i]))
+ .priority(i);
attrBuilder = attrBuilder.addToUnreservedBandwidth(urBuilder.build());
}
}
@@ -291,23 +256,27 @@
// attrBuilder = attrBuilder.maxResvLinkBandwidth(teLink.maxResvLinkBandwidth());
// }
-// UnderlayBuilder builder = DefaultUnderlay.builder();
-// if (teLink.primaryPath() != null) {
-//
-// // TODO: what is underlayProtectionType in tePath?
-// // builder = builder.underlayProtectionType(tePath.protectionType());
-//
-// builder = te2YangConfigUnderlayPrimaryPath(builder, teLink);
-// }
-//
-// if (teLink.backupPaths() != null) {
-// builder = te2YangConfigUnderlayBackupPaths(builder, teLink);
-// }
-//
-// attrBuilder = attrBuilder.underlay(builder.build());
+ if (teLink.primaryPath() != null || teLink.backupPaths() != null) {
+ UnderlayBuilder builder = DefaultUnderlay.builder();
+ if (teLink.primaryPath() != null) {
+ // TODO: what is underlayProtectionType in tePath?
+ // builder =
+ // builder.underlayProtectionType(tePath.protectionType());
+ builder = te2YangConfigUnderlayPrimaryPath(builder, teLink,
+ teTopologyService);
+ }
+
+ if (teLink.backupPaths() != null) {
+ builder = te2YangConfigUnderlayBackupPaths(builder, teLink,
+ teTopologyService);
+ }
+
+ attrBuilder = attrBuilder.underlay(builder.build());
+ }
+
ConfigBuilder yangConfigBuilder = DefaultConfig.builder()
- .teLinkAttributes(attrBuilder.build());
+ .teLinkAttributes(attrBuilder.build());
return yangConfigBuilder.build();
}
@@ -319,11 +288,11 @@
*/
private static State teLink2YangState(TeLink teLink) {
TeLinkAttributes
- .TeLinkAttributesBuilder attrBuilder =
- DefaultTeLinkAttributes
- .builder()
- .teDefaultMetric(teLink.cost())
- .isAbstract(teLink.flags().get(TeLink.BIT_ABSTRACT));
+ .TeLinkAttributesBuilder attrBuilder =
+ DefaultTeLinkAttributes
+ .builder()
+ .teDefaultMetric(teLink.cost())
+ .isAbstract(teLink.flags().get(TeLink.BIT_ABSTRACT));
if (teLink.teLinkKey() != null) {
// what is link index? for now I used teLinkTpId
attrBuilder = attrBuilder.linkIndex(BigInteger.valueOf(teLink.teLinkKey().teLinkTpId()));
@@ -335,7 +304,7 @@
if (teLink.tunnelProtectionType() != null) {
attrBuilder = attrBuilder
.linkProtectionType(teSubsystem2YangLinkProtectionType(teLink
- .tunnelProtectionType()));
+ .tunnelProtectionType()));
}
if (teLink.maxBandwidth() != null) {
// maxBandwidth is an array of float[], but in yang is just a big decimal
@@ -361,13 +330,13 @@
if (teLink.externalLink().externalLinkKey() != null) {
edBuilder = edBuilder
.remoteTeLinkTpId(TeTpId.fromString(String.valueOf(teLink
- .externalLink()
- .externalLinkKey()
- .teLinkTpId())))
+ .externalLink()
+ .externalLinkKey()
+ .teLinkTpId())))
.remoteTeNodeId(TeNodeId.fromString(String.valueOf(teLink
- .externalLink()
- .externalLinkKey()
- .teNodeId())));
+ .externalLink()
+ .externalLinkKey()
+ .teNodeId())));
}
attrBuilder = attrBuilder.externalDomain(edBuilder.build());
@@ -377,19 +346,17 @@
short i = 0;
for (float f : teLink.availBandwidth()) {
UnreservedBandwidth.UnreservedBandwidthBuilder urBuilder = DefaultUnreservedBandwidth
- .builder()
- .bandwidth(BigDecimal.valueOf(f))
- .priority(i);
+ .builder().bandwidth(BigDecimal.valueOf(f)).priority(i);
i++;
attrBuilder = attrBuilder.addToUnreservedBandwidth(urBuilder.build());
}
}
StateBuilder yangStateBuilder = DefaultState.builder()
- .teLinkAttributes(attrBuilder.build());
+ .teLinkAttributes(attrBuilder.build());
if (teLink.opStatus() != null) {
yangStateBuilder = yangStateBuilder.operStatus(EnumConverter
- .teSubsystem2YangOperStatus(teLink.opStatus()));
+ .teSubsystem2YangOperStatus(teLink.opStatus()));
}
if (teLink.sourceTeLinkId() != null) {
@@ -397,8 +364,8 @@
Topology.TopologyBuilder topologyBuilder = DefaultTopology.builder();
topologyBuilder = topologyBuilder.clientIdRef(teLink.sourceTeLinkId().clientId())
- .providerIdRef(teLink.sourceTeLinkId().providerId())
- .teTopologyIdRef(teLink.sourceTeLinkId().topologyId());
+ .providerIdRef(teLink.sourceTeLinkId().providerId())
+ .teTopologyIdRef(teLink.sourceTeLinkId().topologyId());
issBuilder = issBuilder.topology(topologyBuilder.build());
yangStateBuilder.informationSourceState(issBuilder.build());
}
@@ -407,7 +374,7 @@
// object model, set the value properly
// stateDerivedUnderlay = org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology
// .rev20160708.ietftetopology.telinkstatederived.Underlay
- // yangStateBuilder = yangStateBuilder.underlay(stateDerivedUnderlay);
+ //yangStateBuilder = yangStateBuilder.underlay(stateDerivedUnderlay);
return yangStateBuilder.build();
}
@@ -416,10 +383,12 @@
* Link object conversion from TE Topology subsystem to YANG.
*
* @param teSubsNetworkLink TE subsystem link object
+ * @param teTopologyService teTopology core service
* @return YANG link object
*/
public static Link teSubsystem2YangLink(
- org.onosproject.tetopology.management.api.link.NetworkLink teSubsNetworkLink) {
+ org.onosproject.tetopology.management.api.link.NetworkLink teSubsNetworkLink,
+ TeTopologyService teTopologyService) {
checkNotNull(teSubsNetworkLink, E_NULL_TELINK);
LinkId linkId = LinkId.fromString(teSubsNetworkLink.linkId().toString());
@@ -429,43 +398,43 @@
SupportingLinkBuilder spLinkBuilder = DefaultSupportingLink.builder();
for (NetworkLinkKey linkKey : teSubsNetworkLink.supportingLinkIds()) {
slinks.add(spLinkBuilder.networkRef(NetworkId.fromString(
- linkKey.networkId().toString()))
- .linkRef(LinkId.fromString(
- linkKey.linkId().toString()))
- .build());
+ linkKey.networkId().toString()))
+ .linkRef(LinkId.fromString(
+ linkKey.linkId().toString()))
+ .build());
}
builder = builder.supportingLink(slinks);
}
if (teSubsNetworkLink.source() != null) {
SourceBuilder sourceBuilder = DefaultSource
- .builder()
- .sourceNode(NodeId.fromString(
- teSubsNetworkLink.source().nodeId().toString()))
- .sourceTp(TpId.fromString(
- teSubsNetworkLink.source().tpId().toString()));
+ .builder()
+ .sourceNode(NodeId.fromString(
+ teSubsNetworkLink.source().nodeId().toString()))
+ .sourceTp(TpId.fromString(
+ teSubsNetworkLink.source().tpId().toString()));
builder = builder.source(sourceBuilder.build());
}
if (teSubsNetworkLink.destination() != null) {
DestinationBuilder destBuilder = DefaultDestination
- .builder()
- .destNode(NodeId.fromString(
- teSubsNetworkLink.destination().nodeId().toString()))
- .destTp(TpId.fromString(
- teSubsNetworkLink.destination().tpId().toString()));
+ .builder()
+ .destNode(NodeId.fromString(
+ teSubsNetworkLink.destination().nodeId().toString()))
+ .destTp(TpId.fromString(
+ teSubsNetworkLink.destination().tpId().toString()));
builder = builder.destination(destBuilder.build());
}
if (teSubsNetworkLink.teLink() != null) {
TeLink teData = teSubsNetworkLink.teLink();
TeBuilder yangTeBuilder = DefaultTe.builder()
- .config(teLink2YangConfig(teData))
- .state(teLink2YangState(teData));
+ .config(teLink2YangConfig(teData, teTopologyService))
+ .state(teLink2YangState(teData));
// ignoring supportingTeLinkId when converting from core to yang?
// if (teData.supportingTeLinkId() != null) {
// }
AugmentedNtLinkBuilder linkAugmentBuilder =
DefaultAugmentedNtLink.builder()
- .te(yangTeBuilder.build());
+ .te(yangTeBuilder.build());
builder.addYangAugmentedInfo(linkAugmentBuilder.build(), AugmentedNtLink.class);
}
@@ -479,24 +448,30 @@
org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath tePath = teLink.primaryPath();
UnderlayPrimaryPathBuilder pathBuilder =
- DefaultUnderlayPrimaryPath.builder();
+ DefaultUnderlayPrimaryPath.builder();
if (tePath.pathElements() != null) {
for (PathElement pathElementTe : tePath.pathElements()) {
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.telinkunderlayattributes.underlayprimarypath.PathElement
- .PathElementBuilder pathElementYangBuilder = DefaultPathElement.builder();
+ .ietftetopology.telinkunderlayattributes.underlayprimarypath.PathElement
+ .PathElementBuilder pathElementYangBuilder = DefaultPathElement.builder();
pathElementYangBuilder = pathElementYangBuilder.pathElementId(pathElementTe.pathElementId());
- //TODO: add some Type cross converter
-// pathElementYangBuilder = pathElementYangBuilder.type(Type pathElementTe.type())
+ //TODO: check more types here
+ if (pathElementTe.type() instanceof TeLinkId) {
+ UnnumberedLinkBuilder unmBuilder = DefaultUnnumberedLink.builder()
+ .routerId(IpAddress.fromString(
+ Ip4Address.valueOf((int) pathElementTe.teNodeId()).toString()))
+ .interfaceId(((TeLinkId) pathElementTe.type()).value());
+ pathElementYangBuilder = pathElementYangBuilder.type(unmBuilder.build());
+ }
pathBuilder = pathBuilder.addToPathElement(pathElementYangBuilder.build());
}
}
pathBuilder = pathBuilder.clientIdRef(teLink.underlayTeTopologyId().clientId())
- .providerIdRef(teLink.underlayTeTopologyId().providerId())
- .teTopologyIdRef(teLink.underlayTeTopologyId().topologyId());
+ .providerIdRef(teLink.underlayTeTopologyId().providerId())
+ .teTopologyIdRef(teLink.underlayTeTopologyId().topologyId());
pathBuilder = pathBuilder.networkIdRef(teTopologyService.networkId(teLink.underlayTeTopologyId()));
@@ -513,22 +488,28 @@
.builder();
pathBuilder = pathBuilder.index(tePath.index());
pathBuilder = pathBuilder.clientIdRef(teLink.underlayTeTopologyId().clientId())
- .providerIdRef(teLink.underlayTeTopologyId().providerId())
- .teTopologyIdRef(teLink.underlayTeTopologyId().topologyId());
+ .providerIdRef(teLink.underlayTeTopologyId().providerId())
+ .teTopologyIdRef(teLink.underlayTeTopologyId().topologyId());
pathBuilder = pathBuilder.networkIdRef(teTopologyService.networkId(teLink.underlayTeTopologyId()));
for (PathElement backupPathElementTe : tePath.pathElements()) {
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.telinkunderlayattributes.underlaybackuppath.PathElement
- .PathElementBuilder elementBuilder =
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.telinkunderlayattributes.underlaybackuppath.DefaultPathElement
- .builder();
+ .ietftetopology.telinkunderlayattributes.underlaybackuppath.PathElement
+ .PathElementBuilder elementBuilder =
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .ietftetopology.telinkunderlayattributes.underlaybackuppath.DefaultPathElement
+ .builder();
elementBuilder = elementBuilder.pathElementId(backupPathElementTe.pathElementId());
- // TODO: add some Type cross conversion
-// elementBuilder.type(type);
+ //TODO: check more types here
+ if (backupPathElementTe.type() instanceof TeLinkId) {
+ UnnumberedLinkBuilder unmBuilder = DefaultUnnumberedLink.builder()
+ .routerId(IpAddress.fromString(
+ Ip4Address.valueOf((int) backupPathElementTe.teNodeId()).toString()))
+ .interfaceId(((TeLinkId) backupPathElementTe.type()).value());
+ elementBuilder = elementBuilder.type(unmBuilder.build());
+ }
pathBuilder = pathBuilder
.addToPathElement(elementBuilder.build());
@@ -570,9 +551,9 @@
TeLinkTpKey peerTeLinkKey = null;
if (yangLink.destination() != null) {
peerTeLinkKey = new TeLinkTpKey(teNodeIdDestLong,
- findTeTpId(yangNetwork,
- yangLink.destination().destNode(),
- yangLink.destination().destTp()));
+ findTeTpId(yangNetwork,
+ yangLink.destination().destNode(),
+ yangLink.destination().destTp()));
}
TeLinkTpGlobalKey supportTeLinkId = findSupportTeLinkId(yangNetworks, yangLink);
@@ -634,20 +615,21 @@
List<Long> interLayerLocks = null; // FIXME: how to find interLayerLocks?
List<UnreservedBandwidth> listOfUnreservedBandwidth = yangLinkAtrr.unreservedBandwidth();
- float[] availBandwidth = new float[listOfUnreservedBandwidth.size()];
- int i = 0;
+ float[] availBandwidth = new float[MAX_PRIORITY + 1];
for (UnreservedBandwidth urbw : listOfUnreservedBandwidth) {
- availBandwidth[i] = urbw.bandwidth().floatValue();
- i++;
+ availBandwidth[urbw.priority()] = urbw.bandwidth().floatValue();
}
- float[] maxBandwidth = new float[1];
+ float[] maxBandwidth = new float[MAX_PRIORITY + 1];
if (yangLinkAtrr.maxLinkBandwidth() != null) {
- maxBandwidth[0] = yangLinkAtrr.maxLinkBandwidth().floatValue();
+ // Core TE has an array, but YANG is an integer
+ for (short p = 0; p <= MAX_PRIORITY; p++) {
+ maxBandwidth[p] = yangLinkAtrr.maxLinkBandwidth().floatValue();
+ }
}
- float[] maxAvailLspBandwidth = null; // FIXME: how to find this?
- float[] minAvailLspBandwidth = null; // FIXME: how to find this?
+ float[] maxAvailLspBandwidth = availBandwidth; // FIXME: how to find this?
+ float[] minAvailLspBandwidth = availBandwidth; // FIXME: how to find this?
LinkBandwidth bandwidth = new LinkBandwidth(
maxBandwidth,
availBandwidth,
@@ -665,9 +647,8 @@
TePathAttributes teAttributes =
new TePathAttributes(yangLinkAtrr.teDefaultMetric(),
yangLinkAtrr.performanceMetric() == null ? null :
- (yangLinkAtrr.performanceMetric().measurement() == null ? null :
- yangLinkAtrr.performanceMetric().measurement()
- .unidirectionalDelay()),
+ (yangLinkAtrr.performanceMetric().measurement() == null ? null :
+ yangLinkAtrr.performanceMetric().measurement().unidirectionalDelay()),
srlgs);
teData = new CommonLinkData(adminStatus,
opStatus,
@@ -688,7 +669,7 @@
}
private static TeLinkTpGlobalKey findSupportTeLinkId(Networks yangNetworks,
- Link yangLink) {
+ Link yangLink) {
Network teNetworkFound = null;
LinkId teLinkIdFound = null;
TeLinkTpGlobalKey supportTeLinkId = null;
@@ -741,7 +722,7 @@
supportTeLinkId = new TeLinkTpGlobalKey(teTopologyId.providerId(),
teTopologyId.clientId(),
Long.valueOf(teTopologyId
- .topologyId()),
+ .topologyId()),
tenIdLong, teSupportLinkTpId);
}
@@ -783,7 +764,7 @@
if (yangTpnode.tpId().equals(yangTpId)) {
if (yangTpnode.yangAugmentedInfoMap() != null
&& !yangTpnode.yangAugmentedInfoMap()
- .isEmpty()) {
+ .isEmpty()) {
AugmentedNtTerminationPoint yangTpAugment =
(AugmentedNtTerminationPoint) yangTpnode
.yangAugmentedInfo(AugmentedNtTerminationPoint.class);
@@ -799,18 +780,17 @@
}
return teTpId;
}
-
/**
* Link object conversion from YANG to TE Topology subsystem.
*
- * @param yangLink YANG link
- * @param yangNetwork YANG network
+ * @param yangLink YANG link
+ * @param yangNetwork YANG network
* @param yangNetworks YANG networks
* @return TE subsystem link
*/
public static org.onosproject.tetopology.management.api.link.NetworkLink
- yang2TeSubsystemLink(Link yangLink, Network yangNetwork,
- Networks yangNetworks) {
+ yang2TeSubsystemLink(Link yangLink, Network yangNetwork,
+ Networks yangNetworks) {
NetworkId networkId = yangNetwork.networkId();
checkNotNull(yangLink, E_NULL_YANG_TELINK);
@@ -831,17 +811,17 @@
if (yangLink.source() != null) {
TerminationPointKey source = new TerminationPointKey(
- KeyId.keyId(networkId.uri().toString()),
- KeyId.keyId(yangLink.source().sourceNode().uri().toString()),
- KeyId.keyId(yangLink.source().sourceTp().uri().toString()));
+ KeyId.keyId(networkId.uri().toString()),
+ KeyId.keyId(yangLink.source().sourceNode().uri().toString()),
+ KeyId.keyId(yangLink.source().sourceTp().uri().toString()));
sourceNodeTpKey = new NodeTpKey(source.nodeId(), source.tpId());
}
if (yangLink.destination() != null) {
TerminationPointKey destination = new TerminationPointKey(
- KeyId.keyId(networkId.uri().toString()),
- KeyId.keyId(yangLink.destination().destNode().uri().toString()),
- KeyId.keyId(yangLink.destination().destTp().uri().toString()));
+ KeyId.keyId(networkId.uri().toString()),
+ KeyId.keyId(yangLink.destination().destNode().uri().toString()),
+ KeyId.keyId(yangLink.destination().destTp().uri().toString()));
destinationNodeTpKey = new NodeTpKey(destination.nodeId(), destination.tpId());
}
@@ -873,19 +853,25 @@
}
private static org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath
- yang2TeSubsystemUnderlayPrimaryPath(UnderlayPrimaryPath yangpath,
- long teNodeId) {
+ yang2TeSubsystemUnderlayPrimaryPath(UnderlayPrimaryPath yangpath,
+ long teNodeId) {
org.onosproject.tetopology.management.api.link.UnderlayPrimaryPath teUnderlayPrimaryPath = null;
List<PathElement> pathElementList = Lists.newArrayList();
for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
.telinkunderlayattributes.underlayprimarypath.
- PathElement pathElementConfigYang : yangpath.pathElement()) {
+ PathElement pathElementYang : yangpath.pathElement()) {
- // TODO: find the proper type (ElementType) from pathElementConfigYang.type()
- PathElement tePathElement = new PathElement(pathElementConfigYang.pathElementId(),
- teNodeId,
- null,
+ long nodeId = 0;
+ ElementType type = null;
+ // TODO: check more types
+ if (pathElementYang.type() instanceof UnnumberedLink) {
+ nodeId = Long.valueOf(((UnnumberedLink) pathElementYang.type()).routerId().toString());
+ type = new TeLinkId(((UnnumberedLink) pathElementYang.type()).interfaceId());
+ }
+ PathElement tePathElement = new PathElement(pathElementYang.pathElementId(),
+ nodeId,
+ type,
false); // FIXME: how to find the proper value for loose?
pathElementList.add(tePathElement);
}
@@ -897,11 +883,11 @@
}
private static List<UnderlayBackupPath>
- yang2TeSubsystemUnderlayBackupPaths(
- List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
+ yang2TeSubsystemUnderlayBackupPaths(
+ List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
rev20160708.ietftetopology.telinkunderlayattributes.
UnderlayBackupPath> yangpaths,
- long teNodeId) {
+ long teNodeId) {
List<UnderlayBackupPath> underlayBackupPathsList = Lists.newArrayList();
for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
@@ -909,15 +895,20 @@
UnderlayBackupPath yangConfig : yangpaths) {
UnderlayBackupPath ubp = null;
List<PathElement> backupPathElementList = Lists.newArrayList();
+ long nodeId = 0;
+ ElementType type = null;
for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
.telinkunderlayattributes.underlaybackuppath.
- PathElement pathElementBackupYang : yangConfig.pathElement()) {
-
- PathElement tePathElementBackup = new PathElement(pathElementBackupYang.pathElementId(),
- teNodeId,
- null, // FIXME: find the proper ElementType
- // from pathElementBackupYang.type()
- false); // FIXME: find the proper value for loose
+ PathElement backupYang : yangConfig.pathElement()) {
+ // TODO: check more types
+ if (backupYang.type() instanceof UnnumberedLink) {
+ nodeId = Long.valueOf(((UnnumberedLink) backupYang.type()).routerId().toString());
+ type = new TeLinkId(((UnnumberedLink) backupYang.type()).interfaceId());
+ }
+ PathElement tePathElementBackup = new PathElement(backupYang.pathElementId(),
+ nodeId,
+ type,
+ false);
backupPathElementList.add(tePathElementBackup);
}
ubp = new UnderlayBackupPath(yangConfig.index(),
@@ -930,13 +921,13 @@
}
/**
- * TE Link underlay path Config object conversion from YANG to TE Topology subsystem.
- *
- * @param yangLinkAtrr YANG link Config YANG object
- * @return teSubsystem TE underlay path object
- */
+ * TE Link underlay path Config object conversion from YANG to TE Topology subsystem.
+ *
+ * @param yangLinkAtrr YANG link Config YANG object
+ * @return teSubsystem TE underlay path object
+ */
private static org.onosproject.tetopology.management.api.link.UnderlayPath
- yang2TeSubsystemUnderlayPath(TeLinkAttributes yangLinkAtrr, long srcTeNodeId, long dstTeNodeId) {
+ yang2TeSubsystemUnderlayPath(TeLinkAttributes yangLinkAtrr, long srcTeNodeId, long dstTeNodeId) {
checkNotNull(yangLinkAtrr, E_NULL_YANG_TELINK_CONFIG);
@@ -957,12 +948,12 @@
org.onosproject.tetopology.management.api.link.UnderlayPath teUnderlay = null;
if (yangLinkAtrr.underlay() != null) {
teUnderlay = new org.onosproject.tetopology.management.api.link.
- UnderlayPath(underlayPrimaryPath,
- underlayBackupPathsList,
- TunnelProtectionType.of(yangLinkAtrr.underlay().underlayProtectionType()),
- (long) yangLinkAtrr.underlay().underlayTrailSrc().tpRef(), // Is this correct?
- (long) yangLinkAtrr.underlay().underlayTrailDes().tpRef(), // Is this correct?
- teTunnelId);
+ UnderlayPath(underlayPrimaryPath,
+ underlayBackupPathsList,
+ TunnelProtectionType.of(yangLinkAtrr.underlay().underlayProtectionType()),
+ (long) yangLinkAtrr.underlay().underlayTrailSrc().tpRef(), // Is this correct?
+ (long) yangLinkAtrr.underlay().underlayTrailDes().tpRef(), // Is this correct?
+ teTunnelId);
}
return teUnderlay;
@@ -1023,16 +1014,14 @@
}
/**
- * Converts a YANG network link notification event into a TE network
- * link.
+ * Converts a YANG network link notification event into a TE network link.
*
- * @param yangLinkEvent YANG network link notification
+ * @param yangLinkEvent YANG network link notification
* @param teTopologyService TE Topology service used to help the conversion
* @return TE network link
*/
public static NetworkLink yangLinkEvent2NetworkLink(TeLinkEvent yangLinkEvent,
TeTopologyService teTopologyService) {
-
KeyId linkId = yangLinkEvent2NetworkLinkKey(yangLinkEvent).linkId();
org.onosproject.tetopology.management.api.
@@ -1061,28 +1050,27 @@
TeOperStatus opState = yangLinkEvent.operStatus();
org.onosproject.tetopology.management.api.
- TeStatus opStatus = EnumConverter.yang2TeSubsystemOpStatus(opState);
+ TeStatus opStatus = EnumConverter.yang2TeSubsystemOpStatus(opState);
TeLink updatedTeLink = yangLinkEvent2TeLinkAttributes(yangLinkEvent, teLink, opStatus);
- NetworkLink updatedNetworkLink = new DefaultNetworkLink(linkId,
- sourceTp,
- destTp,
- supportingLinkIds,
+ NetworkLink updatedNetworkLink = new DefaultNetworkLink(linkId, sourceTp, destTp, supportingLinkIds,
updatedTeLink);
return updatedNetworkLink;
}
- private static TeLink yangLinkEvent2TeLinkAttributes(TeLinkEvent yangLinkEvent,
- TeLink oldTeLink,
- TeStatus opStatus) {
+ private static TeLink yangLinkEvent2TeLinkAttributes(TeLinkEvent yangLinkEvent, TeLink oldTeLink, TeStatus
+ opStatus) {
TeLinkAttributes yangTeLinkAttrs = yangLinkEvent.teLinkAttributes();
TeLinkTpKey teLinkKey = oldTeLink.teLinkKey();
+
+ //long teNodeIdDest = oldTeLink.peerTeLinkKey().teNodeId();
+ //long teNodeIdSrc = oldTeLink.teLinkKey().teNodeId();
long teNodeIdDest = 0;
long teNodeIdSrc = 0;
diff --git a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java
index e1e2e01..a5a057f 100644
--- a/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java
+++ b/apps/tenbi/utils/src/main/java/org/onosproject/teyang/utils/topology/NetworkConverter.java
@@ -15,8 +15,12 @@
*/
package org.onosproject.teyang.utils.topology;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+
+import java.util.List;
+import java.util.Map;
+
import org.onosproject.net.DeviceId;
import org.onosproject.tetopology.management.api.KeyId;
import org.onosproject.tetopology.management.api.TeTopologyEvent;
@@ -86,11 +90,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.List;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
/**
@@ -221,12 +222,13 @@
/**
* Networks object conversion from YANG to TE Topology subsystem.
*
- * @param yangNetworks Networks YANG object
+ * @param yangNetworks Networks YANG object
* @param yangNetworkStates NetworkStates YANG object
+ * @param deviceId The identifier of RESTCONF server device
* @return teSubsystem TE Topology subsystem networks object
*/
public static org.onosproject.tetopology.management.api.Networks yang2TeSubsystemNetworks(
- Networks yangNetworks, NetworksState yangNetworkStates) {
+ Networks yangNetworks, NetworksState yangNetworkStates, DeviceId deviceId) {
checkNotNull(yangNetworks, E_NULL_YANG_NETWORKS);
checkNotNull(yangNetworks.network(), E_NULL_YANG_NETWORK_LIST);
checkNotNull(yangNetworkStates, E_NULL_YANG_NETWORKSSTATE);
@@ -240,9 +242,9 @@
if (stateNetwork == null) {
log.info("networkId {} can't be found in yangNetworkStates",
network.networkId());
- teNetwork = yang2TeSubsystemNetwork(network, yangNetworks);
+ teNetwork = yang2TeSubsystemNetwork(network, yangNetworks, deviceId);
} else {
- teNetwork = yang2TeSubsystemNetwork(network, stateNetwork, yangNetworks);
+ teNetwork = yang2TeSubsystemNetwork(network, stateNetwork, yangNetworks, deviceId);
}
networks.add(teNetwork);
}
@@ -279,11 +281,12 @@
}
private static NetworkBuilder te2YangLinks(NetworkBuilder builder,
- Map<KeyId, NetworkLink> teLinks) {
+ Map<KeyId, NetworkLink> teLinks,
+ TeTopologyService teTopologyService) {
List<Link> linkList = Lists.newArrayList();
for (org.onosproject.tetopology.management.api.link.NetworkLink link : teLinks.values()) {
- linkList.add(LinkConverter.teSubsystem2YangLink(link));
+ linkList.add(LinkConverter.teSubsystem2YangLink(link, teTopologyService));
}
AugmentedNdNetworkBuilder ndAugment = DefaultAugmentedNdNetwork.builder();
ndAugment.link(linkList);
@@ -367,7 +370,7 @@
// Add links - link is the augmentation
if (teSubsystem.links() != null) {
- builder = te2YangLinks(builder, teSubsystem.links());
+ builder = te2YangLinks(builder, teSubsystem.links(), teTopologyService);
}
// TE Topology IDs
@@ -421,7 +424,7 @@
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.
yang.ietf.network.rev20151208.ietfnetwork.networksstate.
Network yangNetworkState,
- Networks yangNetworks) {
+ Networks yangNetworks, DeviceId deviceId) {
checkNotNull(yangNetwork, E_NULL_YANG_NETWORK);
checkNotNull(yangNetwork.networkId(), E_NULL_YANG_NETWORKID);
String networkId = yangNetwork.networkId().uri().string();
@@ -432,7 +435,6 @@
Map<KeyId, NetworkLink> teLinks = null;
org.onosproject.tetopology.management.api.TeTopologyId teTopologyId = null;
boolean serverProvided = false;
- DeviceId ownerId = null;
// Supporting networks
if (yangNetwork.supportingNetwork() != null) {
@@ -483,7 +485,7 @@
org.onosproject.tetopology.management.api.DefaultNetwork network =
new org.onosproject.tetopology.management.api.DefaultNetwork(networkKeyId, supportingNetworkIds,
teNodes, teLinks, teTopologyId,
- serverProvided, ownerId);
+ serverProvided, deviceId);
return network;
}
@@ -492,11 +494,13 @@
*
* @param yangNetwork Network YANG object
* @param yangNetworks Networks YANG object
+ * @param deviceId The identifier of RESTCONF server device
* @return network TE Topology subsystem networks object
*/
public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork,
- Networks yangNetworks) {
- return yang2TeDefaultNetwork(yangNetwork, null, yangNetworks);
+ Networks yangNetworks,
+ DeviceId deviceId) {
+ return yang2TeDefaultNetwork(yangNetwork, null, yangNetworks, deviceId);
}
/**
@@ -505,16 +509,17 @@
* @param yangNetwork Network YANG object
* @param yangNetworkState NetworkState YANG object
* @param yangNetworks Networks YANG object
+ * @param deviceId The identifier of RESTCONF server device
* @return teSubsystem TE Topology subsystem networks object
*/
public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork,
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork
- .networksstate.Network yangNetworkState, Networks yangNetworks) {
+ .networksstate.Network yangNetworkState, Networks yangNetworks, DeviceId deviceId) {
checkNotNull(yangNetworkState, E_NULL_YANG_NETWORKSSTATE_NETWORK);
checkNotNull(yangNetworkState.networkRef(), E_NULL_YANG_NETWORKSSTATE_NETWORKREF);
org.onosproject.tetopology.management.api.DefaultNetwork teNetwork =
- yang2TeDefaultNetwork(yangNetwork, yangNetworkState, yangNetworks);
+ yang2TeDefaultNetwork(yangNetwork, yangNetworkState, yangNetworks, deviceId);
String networkref = yangNetworkState.networkRef().toString();
checkState(teNetwork.networkId().toString().equals(networkref),
@@ -567,7 +572,7 @@
returnType = IetfTeTopologyEvent.Type.TE_NODE_EVENT;
break;
default:
- log.error("teTopoEventType2YangIetfTopoEventType: unknown type: {}", type);
+ log.warn("teTopoEventType2YangIetfTopoEventType: unknown type: {}", type);
}
return returnType;
@@ -590,9 +595,7 @@
returnType = TeTopologyEventTypeEnum.UPDATE;
break;
default:
- // log.warn("teTopoEventType2YangIetfTopoEventType: unsupported
- // type: {}",
- // type);
+ log.warn("teTopoEventType2YangteTopoEventType: unsupported type: {}", type);
break;
}
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 cf8d6c1..1557d7d 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
@@ -15,8 +15,12 @@
*/
package org.onosproject.teyang.utils.topology;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.BitSet;
+import java.util.List;
+import java.util.Map;
+
import org.apache.commons.collections.MapUtils;
import org.onlab.packet.Ip4Address;
import org.onosproject.tetopology.management.api.EncodingType;
@@ -47,92 +51,60 @@
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.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.ietfnetwork.networks.network
- .DefaultNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network
- .Node;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.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.network.rev20151208
+ .ietfnetwork.networks.network.DefaultNode;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
+ .ietfnetwork.networks.network.Node;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
+ .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.ietftetopology.networks
- .network.node.AugmentedNwNode;
-import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.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.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
+ .ietftetopology.networks.network.node.AugmentedNwNode;
+import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .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.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.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.te.types.rev20160705.ietftetypes.tetopologyeventtype.TeTopologyEventTypeEnum;
import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev20130715.ietfyangtypes.DottedQuad;
-import java.util.BitSet;
-import java.util.List;
-import java.util.Map;
-
-import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
/**
* Node conversion functions.
@@ -166,7 +138,7 @@
.builder();
teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
.isAbstract(teSubsystemTeNode.flags()
- .get(TeNode.BIT_ABSTRACT));
+ .get(TeNode.BIT_ABSTRACT));
if (teSubsystemTeNode.adminStatus() != null) {
teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
@@ -181,7 +153,7 @@
if (teSubsystemTeNode.underlayTeTopologyId() != null) {
teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
.underlayTopology(teNode2YangUnderlay(teSubsystemTeNode
- .underlayTeTopologyId(), teTopologyService));
+ .underlayTeTopologyId(), teTopologyService));
}
// TODO: should we ignore this from te to yang? as we've already set yang supportingNode
@@ -201,26 +173,26 @@
}
private static TeNodeAttributesBuilder
- te2YangConnectivityMatrix(TeNodeAttributesBuilder teNodeAttributesConfigBuilder,
- Map<Long, ConnectivityMatrix> connectivityMatrices) {
+ te2YangConnectivityMatrix(TeNodeAttributesBuilder teNodeAttributesConfigBuilder,
+ Map<Long, ConnectivityMatrix> connectivityMatrices) {
ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = DefaultConnectivityMatrix.builder();
for (Map.Entry<Long, ConnectivityMatrix> teCmEntry :
- connectivityMatrices.entrySet()) {
+ connectivityMatrices.entrySet()) {
connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
.id(teCmEntry.getKey())
.isAllowed(!teCmEntry.getValue().flags()
- .get(ConnectivityMatrix.BIT_DISALLOWED))
+ .get(ConnectivityMatrix.BIT_DISALLOWED))
.from(new DefaultFrom.FromBuilder() // TODO: for now, assuming that there is
- // only one 'from', and mergingList is empty
- .tpRef(((TeLinkId) teCmEntry.getValue().from()).value())
- .build())
+ // only one 'from', and mergingList is empty
+ .tpRef(((TeLinkId) teCmEntry.getValue().from()).value())
+ .build())
.to(new DefaultTo.ToBuilder() // TODO: for now, assuming that there is only
- // one item in constrainingElements list
- .tpRef(((TeLinkId) teCmEntry.getValue().constrainingElements().get(0)).value())
- .build());
+ // one item in constrainingElements list
+ .tpRef(((TeLinkId) teCmEntry.getValue().constrainingElements().get(0)).value())
+ .build());
teNodeAttributesConfigBuilder = teNodeAttributesConfigBuilder
.addToConnectivityMatrix(connectivityMatrixConfigBuilder
- .build());
+ .build());
}
return teNodeAttributesConfigBuilder;
}
@@ -230,7 +202,7 @@
UnderlayTopology.UnderlayTopologyBuilder underlayBuilder = DefaultUnderlayTopology
.builder()
.teTopologyIdRef(TeTopologyId
- .fromString(String.valueOf(underlayTopology.topologyId())))
+ .fromString(String.valueOf(underlayTopology.topologyId())))
.clientIdRef(underlayTopology.clientId())
.providerIdRef(underlayTopology.providerId());
@@ -250,10 +222,10 @@
checkNotNull(teSubsystemTeNode, E_NULL_TE_SUBSYSTEM_TE_NODE);
TeNodeAttributes
- .TeNodeAttributesBuilder teNodeAttributesStateBuilder =
- DefaultTeNodeAttributes.builder()
- .isAbstract(teSubsystemTeNode.flags()
- .get(TeNode.BIT_ABSTRACT));
+ .TeNodeAttributesBuilder teNodeAttributesStateBuilder =
+ DefaultTeNodeAttributes.builder()
+ .isAbstract(teSubsystemTeNode.flags()
+ .get(TeNode.BIT_ABSTRACT));
if (teSubsystemTeNode.adminStatus() != null) {
teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
@@ -268,12 +240,12 @@
if (teSubsystemTeNode.underlayTeTopologyId() != null) {
teNodeAttributesStateBuilder = teNodeAttributesStateBuilder
.underlayTopology(teNode2YangUnderlay(teSubsystemTeNode
- .underlayTeTopologyId(), teTopologyService));
+ .underlayTeTopologyId(), teTopologyService));
}
if (teSubsystemTeNode.connectivityMatrices() != null) {
teNodeAttributesStateBuilder = te2YangConnectivityMatrix(teNodeAttributesStateBuilder,
- teSubsystemTeNode.connectivityMatrices());
+ teSubsystemTeNode.connectivityMatrices());
}
// TODO: should we ignore this from te to yang? as we've already set yang supportingNode
@@ -285,8 +257,7 @@
if (teSubsystemTeNode.opStatus() != null) {
yangStateBuilder = yangStateBuilder.operStatus(EnumConverter
- .teSubsystem2YangOperStatus(teSubsystemTeNode
- .opStatus()));
+ .teSubsystem2YangOperStatus(teSubsystemTeNode.opStatus()));
}
if (teSubsystemTeNode.sourceTeNodeId() != null) {
@@ -295,10 +266,10 @@
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());
+ .providerIdRef(teSubsystemTeNode.sourceTeNodeId().providerId())
+ // is this correct? Why not sourceTeNodeId().teTopologyKey()?
+ .teTopologyIdRef(teSubsystemTeNode
+ .sourceTeNodeId().topologyId());
issBuilder = issBuilder.topology(topologyBuilder.build());
yangStateBuilder.informationSourceState(issBuilder.build());
}
@@ -319,52 +290,52 @@
}
public static long bytesToLong(byte[] bytes) {
- return ((long) bytes[7] & 255L) << 56
- | ((long) bytes[6] & 255L) << 48
- | ((long) bytes[5] & 255L) << 40
- | ((long) bytes[4] & 255L) << 32
- | ((long) bytes[3] & 255L) << 24
- | ((long) bytes[2] & 255L) << 16
- | ((long) bytes[1] & 255L) << 8 | (long) bytes[0] & 255L;
+ return (bytes[7] & 255L) << 56
+ | (bytes[6] & 255L) << 48
+ | (bytes[5] & 255L) << 40
+ | (bytes[4] & 255L) << 32
+ | (bytes[3] & 255L) << 24
+ | (bytes[2] & 255L) << 16
+ | (bytes[1] & 255L) << 8 | bytes[0] & 255L;
}
}
/**
* TE Node TunnelTerminationPoint object conversion from TE Topology subsystem to YANG.
*
- * @param teTunnelTp TE TunnelTerminationPoint object
+ * @param teTunnelTp TE TunnelTerminationPoint object
* @param teTpId
* @param teTopologyService
* @param teNodeKey
* @return TunnelTerminationPoint YANG object
*/
private static TunnelTerminationPoint teSubsystem2YangTtp(
- org.onosproject.tetopology.management.api.node
- .TunnelTerminationPoint teTunnelTp, Long teTpId,
- TeTopologyService teTopologyService,
- TeNodeKey teNodeKey) {
+ org.onosproject.tetopology.management.api.node
+ .TunnelTerminationPoint teTunnelTp, Long teTpId,
+ TeTopologyService teTopologyService,
+ TeNodeKey teNodeKey) {
checkNotNull(teTunnelTp, E_NULL_TE_SUBSYSTEM_TE_TUNNEL_TP);
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
- .ietftetopology.tenodeaugment.te.tunnelterminationpoint.Config.ConfigBuilder ttpConfigBuilder =
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultConfig.builder();
+ .ietftetopology.tenodeaugment.te.tunnelterminationpoint.Config.ConfigBuilder ttpConfigBuilder =
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.tenodeaugment.te.tunnelterminationpoint.State.StateBuilder ttpStateBuilder =
- org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultState.builder();
+ .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultConfig.builder();
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .ietftetopology.tenodeaugment.te.tunnelterminationpoint.State.StateBuilder ttpStateBuilder =
+ org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
+ .ietftetopology.tenodeaugment.te.tunnelterminationpoint.DefaultState.builder();
// Assuming teTunnelTp only has one interLayerLock
if (teTunnelTp.interLayerLockList() != null && !teTunnelTp.interLayerLockList().isEmpty()) {
ttpConfigBuilder = ttpConfigBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0));
- ttpStateBuilder = ttpStateBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0));
+ ttpStateBuilder = ttpStateBuilder.interLayerLockId(teTunnelTp.interLayerLockList().get(0));
}
TerminationCapability.TerminationCapabilityBuilder
- tcapConfigBuilder = DefaultTerminationCapability.builder();
+ tcapConfigBuilder = DefaultTerminationCapability.builder();
// TODO: retrieve more attributes from teTunnelTp and assign to tcapConfigBuilder.
// For which ones we can do the conversion?
// FIXME: once new yang model is used, we can make llc from teTunnelTp.localLinkConnectivityList()
@@ -377,7 +348,7 @@
.network(netLinkKey.networkId()).links().get(netLinkKey.linkId());
tcapConfigBuilder = tcapConfigBuilder
.linkTp(TpId.fromString(networkLink.source().tpId()
- .toString()));
+ .toString()));
// convert teLinkId to networkLinkKey
ttpConfigBuilder = ttpConfigBuilder.addToTerminationCapability(tcapConfigBuilder.build());
}
@@ -396,13 +367,13 @@
.network(netLinkKey.networkId()).links().get(netLinkKey.linkId());
tcapStateBuilder = tcapStateBuilder
.linkTp(TpId.fromString(networkLink.source().tpId()
- .toString()));
+ .toString()));
ttpStateBuilder = ttpStateBuilder.addToTerminationCapability(tcapStateBuilder.build());
}
}
tunnelTpBuilder = tunnelTpBuilder.config(ttpConfigBuilder.build())
- .state(ttpStateBuilder.build());
+ .state(ttpStateBuilder.build());
return tunnelTpBuilder.build();
}
@@ -410,9 +381,9 @@
/**
* Node object conversion from TE Topology subsystem to YANG.
*
- * @param teSubsystem TE subsystem node
+ * @param teSubsystem TE subsystem node
* @param teTopologyService teTopology core service
- * @param teTopologyKey teTopologyKey
+ * @param teTopologyKey teTopologyKey
* @return YANG node
*/
public static Node teSubsystem2YangNode(org.onosproject.tetopology.management.api.node.NetworkNode teSubsystem,
@@ -430,10 +401,10 @@
.builder();
for (NetworkNodeKey nodeKey : teSubsystem.supportingNodeIds()) {
sNodes.add(spNodeBuilder
- .networkRef(NetworkId
- .fromString(nodeKey.networkId().toString()))
- .nodeRef(NodeId.fromString(nodeKey.nodeId().toString()))
- .build());
+ .networkRef(NetworkId
+ .fromString(nodeKey.networkId().toString()))
+ .nodeRef(NodeId.fromString(nodeKey.nodeId().toString()))
+ .build());
}
builder = builder.supportingNode(sNodes);
}
@@ -446,7 +417,7 @@
for (TerminationPoint teTp : teSubsystemTeTp.values()) {
tpAugmentBuilder.addToTerminationPoint(TerminationPointConverter
- .teSubsystem2YangTerminationPoint(teTp));
+ .teSubsystem2YangTerminationPoint(teTp));
}
builder.addYangAugmentedInfo(tpAugmentBuilder.build(),
AugmentedNdNode.class);
@@ -461,24 +432,21 @@
TeBuilder yangTeBuilder = DefaultTe.builder();
yangTeBuilder = yangTeBuilder.teNodeId(TeNodeId.of(DottedQuad
- .of(Ip4Address.valueOf((int) teSubsystemTeNode
- .teNodeId())
- .toString())));
+ .of(Ip4Address.valueOf((int) teSubsystemTeNode.teNodeId())
+ .toString())));
// Set configuration data
// Set state data
yangTeBuilder = yangTeBuilder.config(teNode2YangConfig(teSubsystemTeNode, teTopologyService))
- .state(teNode2YangState(teSubsystemTeNode, teTopologyService));
+ .state(teNode2YangState(teSubsystemTeNode, teTopologyService));
if (teSubsystemTeNode.tunnelTerminationPoints() != null) {
for (Map.Entry<Long, org.onosproject.tetopology.management.api.node.TunnelTerminationPoint> entry :
teSubsystemTeNode.tunnelTerminationPoints().entrySet()) {
yangTeBuilder = yangTeBuilder
- .addToTunnelTerminationPoint(teSubsystem2YangTtp(
- entry.getValue(), entry.getKey(),
- teTopologyService,
- new TeNodeKey(teTopologyKey,
- teSubsystemTeNode.teNodeId())));
+ .addToTunnelTerminationPoint(teSubsystem2YangTtp(entry
+ .getValue(), entry.getKey(), teTopologyService,
+ new TeNodeKey(teTopologyKey, teSubsystemTeNode.teNodeId())));
}
}
@@ -492,12 +460,12 @@
/**
* Node object conversion from YANG to TE Topology subsystem.
*
- * @param yangNode Node in YANG model
+ * @param yangNode Node in YANG model
* @param yangNetwork YANG network
* @return TE subsystem node
*/
public static org.onosproject.tetopology.management.api.node.NetworkNode
- yang2TeSubsystemNode(Node yangNode, Network yangNetwork) {
+ yang2TeSubsystemNode(Node yangNode, Network yangNetwork) {
checkNotNull(yangNode, E_NULL_YANG_NODE);
org.onosproject.tetopology.management.api.node.DefaultNetworkNode node;
@@ -541,12 +509,12 @@
// TODO: convert connectivity matrix from yang to te
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) {
+ 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) {
Map<Long, ConnectivityMatrix> teCmList = Maps.newHashMap();
@@ -576,8 +544,8 @@
TePathAttributes teAttributes = new
TePathAttributes(cmYang.teDefaultMetric(),
cmYang.performanceMetric() == null ? null :
- (cmYang.performanceMetric().measurement() == null ? null :
- cmYang.performanceMetric().measurement().unidirectionalDelay()),
+ (cmYang.performanceMetric().measurement() == null ? null :
+ cmYang.performanceMetric().measurement().unidirectionalDelay()),
srlgs);
ConnectivityMatrix coreCm = new ConnectivityMatrix(cmYang.id(),
from,
@@ -602,7 +570,7 @@
// 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) {
Map<Long, org.onosproject.tetopology.management.api.node.TunnelTerminationPoint> ttpsMap = Maps
.newHashMap();
for (TunnelTerminationPoint ttpYang : ttps) {
@@ -641,7 +609,7 @@
&& !tpItem.yangAugmentedInfoMap().isEmpty()) {
AugmentedNtTerminationPoint yangTpAugment =
(AugmentedNtTerminationPoint) tpItem
- .yangAugmentedInfo(AugmentedNtTerminationPoint.class);
+ .yangAugmentedInfo(AugmentedNtTerminationPoint.class);
if (yangTpAugment.te() != null && yangTpAugment.te().teTpId() != null) {
elt = new TeLinkId(Long.valueOf(yangTpAugment.te().teTpId().toString()));
break;
@@ -655,7 +623,7 @@
}
}
TePathAttributes teAttributes = null; // how to find these
- // attributes from ttpYang?
+ // attributes from ttpYang?
UnderlayAbstractPath underlayPath = null; // how to find underlayAbstractPath from ttpYang?
LocalLinkConnectivity llc = new LocalLinkConnectivity(eltList,
flags,
@@ -666,15 +634,16 @@
float[] availAdaptBandwidth = null; // how to find availableBandwidth?
org.onosproject.tetopology.management.api.node.
- TunnelTerminationPoint ttpTe = new
- org.onosproject.tetopology.management.api.node.
- DefaultTunnelTerminationPoint(ByteUtils.bytesToLong(ttpYang.tunnelTpId()),
- switchingLayer,
- encodingLayer,
- flags,
- interLayerLockList,
- localLinkConnectivityList,
- availAdaptBandwidth);
+ TunnelTerminationPoint ttpTe = new
+ org.onosproject.tetopology.management.api.node.
+ DefaultTunnelTerminationPoint(ByteUtils.bytesToLong(ttpYang.tunnelTpId()),
+ switchingLayer,
+ encodingLayer,
+ flags,
+ interLayerLockList,
+ localLinkConnectivityList,
+ availAdaptBandwidth,
+ null);
ttpsMap.put(ByteUtils.bytesToLong(ttpYang.tunnelTpId()), ttpTe);
}
@@ -711,28 +680,31 @@
List<Long> teTpIds = Lists.newArrayList();
// ********************************************** to find teLinkIds
+ // teLinkIds should be supposed to get from YANG Link and TP data.
+ // For now, assuming each teTp is sourcing a TE link .
if (MapUtils.isNotEmpty(teTps)) {
for (Map.Entry<KeyId, TerminationPoint> entry : teTps.entrySet()) {
if (entry.getValue().teTpId() != null) {
teTpIds.add(entry.getValue().teTpId());
+ teLinkIds.add(entry.getValue().teTpId());
}
}
}
// ********************************************** to find teTpIds
- if (yangNode.yangAugmentedInfoMap() != null
- && !yangNode.yangAugmentedInfoMap().isEmpty()) {
-
- AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode
- .yangAugmentedInfo(AugmentedNdNode.class);
-
- if (yangTpNodeAugment.terminationPoint() != null) {
- for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
- .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint
- yangTpnode : yangTpNodeAugment.terminationPoint()) {
- teTpIds.add(Long.valueOf(yangTpnode.tpId().uri().string()));
- }
- }
- }
+// if (yangNode.yangAugmentedInfoMap() != null
+// && !yangNode.yangAugmentedInfoMap().isEmpty()) {
+//
+// AugmentedNdNode yangTpNodeAugment = (AugmentedNdNode) yangNode
+// .yangAugmentedInfo(AugmentedNdNode.class);
+//
+// if (yangTpNodeAugment.terminationPoint() != null) {
+// for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology
+// .rev20151208.ietfnetworktopology.networks.network.node.augmentedndnode.TerminationPoint
+// yangTpnode : yangTpNodeAugment.terminationPoint()) {
+// teTpIds.add(Long.valueOf(yangTpnode.tpId().uri().string()));
+// }
+// }
+// }
// **********************************************
Config ynodeAugCfg = yangNodeAugTe.config();
@@ -744,22 +716,22 @@
if (teNodeAttr.underlayTopology() != null) {
underlayTopologyIdId = yang2TeSubsystemNodeUnderlayTopology(teNodeAttr
- .underlayTopology());
+ .underlayTopology());
}
BitSet flags = new BitSet();
if (teNodeAttr.isAbstract()) {
flags.set(TeNode.BIT_ABSTRACT);
}
teData = new CommonNodeData(
- null, // teNodeAttr.name().string(),
- EnumConverter.yang2TeSubsystemAdminStatus(teNodeAttr.adminStatus()),
- EnumConverter.yang2TeSubsystemOpStatus(yangNodeAugTe.state().operStatus()),
- flags);
+ null, // teNodeAttr.name().string(),
+ EnumConverter.yang2TeSubsystemAdminStatus(teNodeAttr.adminStatus()),
+ EnumConverter.yang2TeSubsystemOpStatus(yangNodeAugTe.state().operStatus()),
+ flags);
if (teNodeAttr.connectivityMatrix() != null) {
connMatrices = yang2TeSubsystemNodeConnectivityMatrix(yangNetworkId.uri().toString(),
- yangNodeId.uri().toString(),
- teNodeAttr.connectivityMatrix());
+ yangNodeId.uri().toString(),
+ teNodeAttr.connectivityMatrix());
}
}
@@ -801,7 +773,7 @@
* to its corresponding YANG Object (YO) format.
*
* @param eventType Node event type
- * @param eventData TE Topology node event data
+ * @param eventData TE Topology node event data
* @return YANG Object converted from nodeData
*/
public static TeNodeEvent teNetworkNode2yangTeNodeEvent(TeTopologyEventTypeEnum eventType,
@@ -820,7 +792,7 @@
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.
rev20160708.ietftetopology.tenodeconfigattributesnotification.
TeNodeAttributes teNodeAttributes = node == null ? null
- : teNode2YangTeNodeAttributes(node.teNode());
+ : teNode2YangTeNodeAttributes(node.teNode());
builder.teNodeAttributes(teNodeAttributes);
return builder.build();
@@ -841,31 +813,31 @@
if (teNode.connectivityMatrices() != null) {
org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology
- .tenodeconnectivitymatrixabs.DefaultConnectivityMatrix
- .ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = org.onosproject.yang.gen.v1.urn.ietf.
- params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrixabs.
- DefaultConnectivityMatrix.builder();
+ .tenodeconnectivitymatrixabs.DefaultConnectivityMatrix
+ .ConnectivityMatrixBuilder connectivityMatrixConfigBuilder = org.onosproject.yang.gen.v1.urn.ietf.
+ params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tenodeconnectivitymatrixabs.
+ DefaultConnectivityMatrix.builder();
for (Map.Entry<Long, ConnectivityMatrix> teCmEntry :
- teNode.connectivityMatrices().entrySet()) {
+ teNode.connectivityMatrices().entrySet()) {
connectivityMatrixConfigBuilder = connectivityMatrixConfigBuilder
.id(teCmEntry.getKey())
.isAllowed(!teCmEntry.getValue().flags()
- .get(ConnectivityMatrix.BIT_DISALLOWED))
+ .get(ConnectivityMatrix.BIT_DISALLOWED))
.from(new org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
- .ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix.DefaultFrom
- .FromBuilder() // TODO: for now, assuming that there is
- // only one 'from', and mergingList is empty
- .tpRef(teCmEntry.getValue().from())
- .build())
+ .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
- .ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix
- .DefaultTo.ToBuilder() // TODO: for now, assuming that there is only
- // one item in constrainingElements list
- .tpRef(teCmEntry.getValue().constrainingElements().get(0))
- .build());
+ .ietftetopology.tenodeconnectivitymatrixabs.connectivitymatrix
+ .DefaultTo.ToBuilder() // TODO: for now, assuming that there is only
+ // one item in constrainingElements list
+ .tpRef(teCmEntry.getValue().constrainingElements().get(0))
+ .build());
attrBuilder = attrBuilder
.addToConnectivityMatrix(connectivityMatrixConfigBuilder
- .build());
+ .build());
}
}
@@ -877,7 +849,8 @@
}
/**
- * Retrieves the TE network node key from a YANG network node notification event.
+ * 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
@@ -896,7 +869,7 @@
/**
* Converts YangNode event to NetworkNode.
*
- * @param yangNodeEvent yangNodeEvent
+ * @param yangNodeEvent yangNodeEvent
* @param teTopologyService teTopologyService
* @return NetworkNode
*/
@@ -992,12 +965,12 @@
}
private static ConnectivityMatrix yangNodeEvent2TeConnectivityMatrix(org.onosproject.yang.gen.v1.
- urn.ietf.params.xml.ns.yang.
- ietf.te.topology
- .rev20160708.ietftetopology
- .tenodeconnectivitymatrixabs
- .ConnectivityMatrix yangConnMatrix,
- ConnectivityMatrix oldTeConnMatrix) {
+ urn.ietf.params.xml.ns.yang.
+ ietf.te.topology
+ .rev20160708.ietftetopology
+ .tenodeconnectivitymatrixabs
+ .ConnectivityMatrix yangConnMatrix,
+ ConnectivityMatrix oldTeConnMatrix) {
long id = yangConnMatrix.id();
ElementType from = new TeLinkId((long) (yangConnMatrix.from().tpRef()));
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java
index 40c8025..3a393d6 100644
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java
+++ b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/TeTopologyService.java
@@ -158,4 +158,11 @@
* @return value of termination point key
*/
TerminationPointKey terminationPointKey(TeLinkTpGlobalKey teTpKey);
+
+ /**
+ * Returns the TE controller global identification.
+ *
+ * @return value of controller id
+ */
+ long teContollerId();
}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
index fd419ee..9bfa179 100644
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
+++ b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/DefaultTunnelTerminationPoint.java
@@ -15,16 +15,17 @@
*/
package org.onosproject.tetopology.management.api.node;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.List;
+
+import org.onosproject.tetopology.management.api.EncodingType;
+import org.onosproject.tetopology.management.api.SwitchingType;
+
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.List;
/**
* Default implementation of a tunnel termination point.
@@ -37,6 +38,7 @@
private final List<Long> interLayerLockList;
private final List<LocalLinkConnectivity> localLinkConnectivityList;
private final float[] availAdaptBandwidth;
+ private final TtpKey supportTtpKey;
/**
* Create a tunnel termination point.
@@ -50,6 +52,7 @@
* @param localLinkConnectivityList the local link connectivity list
* @param availAdaptBandwidth the remaining adaptation bandwidth
* at each priority level
+ * @param supportTtpKey supporting TTP key from underlay topology
*/
public DefaultTunnelTerminationPoint(long ttpId,
SwitchingType switchingLayer,
@@ -57,7 +60,8 @@
BitSet flags,
List<Long> interLayerLockList,
List<LocalLinkConnectivity> localLinkConnectivityList,
- float[] availAdaptBandwidth) {
+ float[] availAdaptBandwidth,
+ TtpKey supportTtpKey) {
this.ttpId = ttpId;
this.switchingLayer = switchingLayer;
this.encodingLayer = encodingLayer;
@@ -69,6 +73,7 @@
this.availAdaptBandwidth = availAdaptBandwidth != null ?
Arrays.copyOf(availAdaptBandwidth,
availAdaptBandwidth.length) : null;
+ this.supportTtpKey = supportTtpKey;
}
@Override
@@ -116,10 +121,15 @@
}
@Override
+ public TtpKey supportingTtpId() {
+ return supportTtpKey;
+ }
+
+ @Override
public int hashCode() {
return Objects.hashCode(ttpId, switchingLayer, encodingLayer, flags,
interLayerLockList, localLinkConnectivityList,
- Arrays.hashCode(availAdaptBandwidth));
+ Arrays.hashCode(availAdaptBandwidth), supportTtpKey);
}
@Override
@@ -135,7 +145,8 @@
Objects.equal(flags, that.flags) &&
Objects.equal(interLayerLockList, that.interLayerLockList) &&
Objects.equal(localLinkConnectivityList, that.localLinkConnectivityList) &&
- Arrays.equals(availAdaptBandwidth, that.availAdaptBandwidth);
+ Arrays.equals(availAdaptBandwidth, that.availAdaptBandwidth) &&
+ Objects.equal(supportTtpKey, that.supportTtpKey);
}
return false;
}
@@ -150,6 +161,8 @@
.add("interLayerLockList", interLayerLockList)
.add("localLinkConnectivityList", localLinkConnectivityList)
.add("availAdaptBandwidth", availAdaptBandwidth)
+ .add("supportTtpKey", supportTtpKey)
.toString();
}
+
}
diff --git a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java
index 8da43d2..5f7cccb 100644
--- a/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java
+++ b/apps/tetopology/api/src/main/java/org/onosproject/tetopology/management/api/node/TunnelTerminationPoint.java
@@ -15,12 +15,12 @@
*/
package org.onosproject.tetopology.management.api.node;
-import org.onosproject.tetopology.management.api.EncodingType;
-import org.onosproject.tetopology.management.api.SwitchingType;
-
import java.util.BitSet;
import java.util.List;
+import org.onosproject.tetopology.management.api.EncodingType;
+import org.onosproject.tetopology.management.api.SwitchingType;
+
/**
* Representation of a tunnel termination point.
*/
@@ -88,4 +88,11 @@
* @return list of available adaptation bandwidth
*/
float[] availAdaptBandwidth();
+
+ /**
+ * Returns the supporting TTP identifier.
+ *
+ * @return the supporting TTP key
+ */
+ TtpKey supportingTtpId();
}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
index 4f75d76..3d6be15 100644
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
+++ b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/DistributedTeTopologyStore.java
@@ -39,6 +39,7 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
@@ -137,7 +138,7 @@
implements TeTopologyStore {
private static final String STORE_NAME = "TE_NETWORK_TOPOLOGY_STORE";
private static final String TETOPOLOGYKEY_INTERNALTETOPOLOGY = "TeTopologyKey-InternalTeTopology";
- private static final String NETWORKID_NETWORK = "NetworkId-Network";
+ private static final String NETWORKID_NETWORK = "NetworkId-InternalNetwork";
private static final String TENODEKEY_INTERNALTENODE = "TeNodeKey-InternalTeNode";
private static final String CONNMATRIXKEY_CONNECTIVITYMATRIX = "ConnMatrixKey-ConnectivityMatrix";
private static final String NETWORKNODEKEY_INTERNALNETWORKNODE = "NetworkNodeKey-InternalNetworkNode";
@@ -199,7 +200,8 @@
// Track termination point keys by TE termination point Key
private ConsistentMap<TeLinkTpGlobalKey, TerminationPointKey> tpKeyConsistentMap;
private Map<TeLinkTpGlobalKey, TerminationPointKey> tpKeyMap;
- private BlockingQueue<TeTopologyMapEvent> mapEventQueue;
+ private final BlockingQueue<TeTopologyMapEvent> mapEventQueue = new LinkedBlockingQueue<>();
+
private long providerId;
private static final Serializer TETOPOLOGY_SERIALIZER = Serializer
.using(new KryoNamespace.Builder().register(KryoNamespaces.API)
@@ -373,6 +375,7 @@
tpKeyMap.clear();
ttpConsistentMap.destroy();
ttpMap.clear();
+ mapEventQueue.clear();
log.info("Stopped");
}
@@ -454,10 +457,6 @@
private class InternalTeNodeListener implements MapEventListener<TeNodeKey, InternalTeNode> {
@Override
public void event(MapEvent<TeNodeKey, InternalTeNode> event) {
- // Event should be ignored when the topology is not there.
- if (teTopologyMap.get(event.key().teTopologyKey()) == null) {
- return;
- }
Type type = null;
switch (event.type()) {
case INSERT:
@@ -499,10 +498,6 @@
private class InternalNetworkNodeListener implements MapEventListener<NetworkNodeKey, InternalNetworkNode> {
@Override
public void event(MapEvent<NetworkNodeKey, InternalNetworkNode> event) {
- // Event should be ignored when the network is not there.
- if (networkMap.get(event.key().networkId()) == null) {
- return;
- }
Type type = null;
switch (event.type()) {
case INSERT:
@@ -544,11 +539,6 @@
private class InternalTeLinkListener implements MapEventListener<TeLinkTpGlobalKey, InternalTeLink> {
@Override
public void event(MapEvent<TeLinkTpGlobalKey, InternalTeLink> event) {
- // Event should be ignored when the topology or locol node is not there.
- if (teTopologyMap.get(event.key().teTopologyKey()) == null ||
- teNodeMap.get(event.key().teNodeKey()) == null) {
- return;
- }
Type type = null;
switch (event.type()) {
case INSERT:
@@ -589,10 +579,6 @@
private class InternalNetworkLinkListener implements MapEventListener<NetworkLinkKey, InternalNetworkLink> {
@Override
public void event(MapEvent<NetworkLinkKey, InternalNetworkLink> event) {
- // Event should be ignored when the network is not there.
- if (networkMap.get(event.key().networkId()) == null) {
- return;
- }
Type type = null;
switch (event.type()) {
case INSERT:
@@ -819,6 +805,7 @@
@Override
public void updateNetwork(Network network) {
+ log.debug("updateNetwork {}", network);
InternalNetwork curNetwork = networkMap.get(network.networkId());
TeTopologyKey topoKey = null;
if (network.teTopologyId() != null) {
@@ -1415,8 +1402,8 @@
}
@Override
- public void setMapEventQueue(BlockingQueue<TeTopologyMapEvent> queue) {
- mapEventQueue = queue;
+ public BlockingQueue<TeTopologyMapEvent> mapEventQueue() {
+ return mapEventQueue;
}
@Override
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java
index b980159..a4e6032 100644
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java
+++ b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyConfig.java
@@ -31,12 +31,12 @@
private static final String TENODE_ID_END = "tenode-id-end";
/**
- * Retrieves TE topology provider identifier.
- *
- * @return provider Id
- * @throws ConfigException if the parameters are not correctly configured
- * or conversion of the parameters fails
- */
+ * Retrieves TE topology provider identifier.
+ *
+ * @return provider Id
+ * @throws ConfigException if the parameters are not correctly configured
+ * or conversion of the parameters fails
+ */
public long providerId() throws ConfigException {
try {
return object.path(PROVIDER_ID).asLong();
@@ -45,49 +45,49 @@
}
}
- /**
- * Retrieves TE node starting IPv4 address.
- *
- * @return the IPv4 address
- * @throws ConfigException if the parameters are not correctly configured
- * or conversion of the parameters fails
- */
- public Ip4Address teNodeIpStart() throws ConfigException {
+ /**
+ * Retrieves TE node starting IPv4 address.
+ *
+ * @return the IPv4 address
+ * @throws ConfigException if the parameters are not correctly configured
+ * or conversion of the parameters fails
+ */
+ public Ip4Address teNodeIpStart() throws ConfigException {
try {
return Ip4Address.valueOf(object.path(TENODE_ID_START).asText());
} catch (IllegalArgumentException e) {
throw new ConfigException(CONFIG_VALUE_ERROR, e);
}
- }
+ }
- /**
- * Retrieves TE node end IPv4 address.
- *
- * @return the IPv4 address
- * @throws ConfigException if the parameters are not correctly configured or
- * conversion of the parameters fails
- */
- public Ip4Address teNodeIpEnd() throws ConfigException {
- try {
- return Ip4Address.valueOf(object.path(TENODE_ID_END).asText());
- } catch (IllegalArgumentException e) {
- throw new ConfigException(CONFIG_VALUE_ERROR, e);
- }
- }
+ /**
+ * Retrieves TE node end IPv4 address.
+ *
+ * @return the IPv4 address
+ * @throws ConfigException if the parameters are not correctly configured
+ * or conversion of the parameters fails
+ */
+ public Ip4Address teNodeIpEnd() throws ConfigException {
+ try {
+ return Ip4Address.valueOf(object.path(TENODE_ID_END).asText());
+ } catch (IllegalArgumentException e) {
+ throw new ConfigException(CONFIG_VALUE_ERROR, e);
+ }
+ }
- /**
- * Retrieves if this is a MDSC(Multi-Domain Super Controller).
- *
- * @return MDSC value
- * @throws ConfigException if the parameters are not correctly configured or
- * conversion of the parameters fails
- */
- public String mdsc() throws ConfigException {
- try {
- return object.path(MDSC).asText();
- } catch (IllegalArgumentException e) {
- throw new ConfigException(CONFIG_VALUE_ERROR, e);
- }
- }
+ /**
+ * Retrieves if this is a MDSC(Multi-Domain Super Controller).
+ *
+ * @return MDSC value
+ * @throws ConfigException if the parameters are not correctly configured or
+ * conversion of the parameters fails
+ */
+ public String mdsc() throws ConfigException {
+ try {
+ return object.path(MDSC).asText();
+ } catch (IllegalArgumentException e) {
+ throw new ConfigException(CONFIG_VALUE_ERROR, e);
+ }
+ }
}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
index 1407e0c..30ca4e2 100644
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
+++ b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyManager.java
@@ -40,6 +40,7 @@
import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_NODE_UPDATED;
import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED;
import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_REMOVED;
+import static org.onosproject.tetopology.management.api.link.TeLink.BIT_ACCESS_INTERDOMAIN;
import static org.onosproject.tetopology.management.impl.TeMgrUtil.linkBuilder;
import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkBuilder;
import static org.onosproject.tetopology.management.impl.TeMgrUtil.networkLinkKey;
@@ -51,9 +52,7 @@
import java.util.BitSet;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
@@ -113,6 +112,7 @@
import org.onosproject.tetopology.management.api.node.CommonNodeData;
import org.onosproject.tetopology.management.api.node.ConnectivityMatrix;
import org.onosproject.tetopology.management.api.node.DefaultTeNode;
+import org.onosproject.tetopology.management.api.node.DefaultTunnelTerminationPoint;
import org.onosproject.tetopology.management.api.node.NetworkNode;
import org.onosproject.tetopology.management.api.node.NetworkNodeEventSubject;
import org.onosproject.tetopology.management.api.node.NetworkNodeKey;
@@ -176,8 +176,6 @@
public TeTopologyStore store;
private TeTopologyStoreDelegate delegate = this::post;
- private final BlockingQueue<TeTopologyEvent> eventQueue = new LinkedBlockingQueue<>();
- private final BlockingQueue<TeTopologyMapEvent> mapEventQueue = new LinkedBlockingQueue<>();
private final ConfigFactory<ApplicationId, TeTopologyConfig> factory =
new ConfigFactory<ApplicationId, TeTopologyConfig>(APP_SUBJECT_FACTORY,
TeTopologyConfig.class,
@@ -205,7 +203,6 @@
*/
public void activateBasics() {
store.setDelegate(delegate);
- store.setMapEventQueue(mapEventQueue);
store.setProviderId(providerId);
eventDispatcher.addSink(TeTopologyEvent.class, listenerRegistry);
}
@@ -238,7 +235,6 @@
cfgService.unregisterConfigFactory(factory);
executor.shutdownNow();
executor = null;
- eventQueue.clear();
log.info("Stopped");
}
@@ -315,7 +311,7 @@
public void run() {
try {
TeTopologyMapEvent event;
- while ((event = mapEventQueue.take()) != null) {
+ while ((event = store.mapEventQueue().take()) != null) {
switch (event.type()) {
case TE_TOPOLOGY_ADDED:
case TE_TOPOLOGY_UPDATED:
@@ -335,6 +331,10 @@
break;
case TE_NODE_ADDED:
case TE_NODE_UPDATED:
+ if (store.teTopology(event.teNodeKey().teTopologyKey()) == null) {
+ // Event should be ignored when the topology is not there.
+ break;
+ }
TeNode teNode = store.teNode(event.teNodeKey());
post(new TeTopologyEvent(event.type(),
new TeNodeEventSubject(event.teNodeKey(), teNode)));
@@ -344,6 +344,10 @@
}
break;
case TE_NODE_REMOVED:
+ if (store.teTopology(event.teNodeKey().teTopologyKey()) == null) {
+ // Event should be ignored when the topology is not there.
+ break;
+ }
post(new TeTopologyEvent(TE_NODE_REMOVED,
new TeNodeEventSubject(event.teNodeKey(), null)));
if (mdsc && isCustomizedLearnedTopology(event.teNodeKey().teTopologyKey())) {
@@ -352,6 +356,11 @@
break;
case TE_LINK_ADDED:
case TE_LINK_UPDATED:
+ if (store.teTopology(event.teLinkKey().teTopologyKey()) == null ||
+ store.teNode(event.teLinkKey().teNodeKey()) == null) {
+ // Event should be ignored when the topology or node is not there.
+ break;
+ }
TeLink teLink = store.teLink(event.teLinkKey());
post(new TeTopologyEvent(event.type(),
new TeLinkEventSubject(event.teLinkKey(), teLink)));
@@ -362,6 +371,11 @@
}
break;
case TE_LINK_REMOVED:
+ if (store.teTopology(event.teLinkKey().teTopologyKey()) == null ||
+ store.teNode(event.teLinkKey().teNodeKey()) == null) {
+ // Event should be ignored when the topology or node is not there.
+ break;
+ }
post(new TeTopologyEvent(TE_LINK_REMOVED,
new TeLinkEventSubject(event.teLinkKey(), null)));
if (mdsc && isCustomizedLearnedTopology(event.teLinkKey().teTopologyKey())) {
@@ -382,21 +396,37 @@
break;
case NODE_ADDED:
case NODE_UPDATED:
+ if (store.network(event.networkNodeKey().networkId()) == null) {
+ // Event should be ignored when the network is not there.
+ break;
+ }
NetworkNode node = store.networkNode(event.networkNodeKey());
post(new TeTopologyEvent(event.type(),
new NetworkNodeEventSubject(event.networkNodeKey(), node)));
break;
case NODE_REMOVED:
+ if (store.network(event.networkNodeKey().networkId()) == null) {
+ // Event should be ignored when the network is not there.
+ break;
+ }
post(new TeTopologyEvent(NODE_REMOVED,
new NetworkNodeEventSubject(event.networkNodeKey(), null)));
break;
case LINK_ADDED:
case LINK_UPDATED:
+ if (store.network(event.networkLinkKey().networkId()) == null) {
+ // Event should be ignored when the network is not there.
+ break;
+ }
NetworkLink link = store.networkLink(event.networkLinkKey());
post(new TeTopologyEvent(event.type(),
new NetworkLinkEventSubject(event.networkLinkKey(), link)));
break;
case LINK_REMOVED:
+ if (store.network(event.networkLinkKey().networkId()) == null) {
+ // Event should be ignored when the network is not there.
+ break;
+ }
post(new TeTopologyEvent(LINK_REMOVED,
new NetworkLinkEventSubject(event.networkLinkKey(), null)));
break;
@@ -452,7 +482,21 @@
srcNode.opStatus(), srcNode.flags()); // No change
Map<Long, ConnectivityMatrix> connMatrices = srcNode.connectivityMatrices();
List<Long> teLinkIds = srcNode.teLinkIds(); // No change
- Map<Long, TunnelTerminationPoint> ttps = srcNode.tunnelTerminationPoints();
+ Map<Long, TunnelTerminationPoint> ttps = null;
+ if (MapUtils.isNotEmpty(srcNode.tunnelTerminationPoints())) {
+ ttps = Maps.newHashMap();
+ for (Map.Entry<Long, TunnelTerminationPoint> entry : srcNode.tunnelTerminationPoints().entrySet()) {
+ TunnelTerminationPoint ttp = entry.getValue();
+ ttps.put(entry.getKey(),
+ new DefaultTunnelTerminationPoint(ttp.ttpId(), ttp.switchingLayer(),
+ ttp.encodingLayer(), ttp.flags(),
+ ttp.interLayerLockList(),
+ ttp.localLinkConnectivityList(),
+ ttp.availAdaptBandwidth(),
+ null)); //Remove supporting TTP Ids
+ }
+ }
+
List<Long> teTpIds = srcNode.teTerminationPointIds(); // No change
DefaultTeNode newNode = new DefaultTeNode(mergedTeNodeId, underlayTopologyId,
supportTeNodeId, sourceTeNodeId, common, connMatrices, teLinkIds,
@@ -504,8 +548,21 @@
exLink.maxAvailLspBandwidth(),
exLink.minAvailLspBandwidth(),
exLink.oduResource());
+ BitSet flags = exLink.flags();
+ if (peerTeLinkKey != null &&
+ externalLink != null && externalLink.plugId() != null) {
+ // Assuming this is an inter-domain link which is merged with its peer,
+ // needs to clear BIT_ACCESS_INTERDOMAIN
+ flags.clear(BIT_ACCESS_INTERDOMAIN);
+ } else if (peerTeLinkKey == null &&
+ externalLink != null && externalLink.plugId() != null) {
+ // Assuming this is an inter-domain link which lost its peer,
+ // needs to clear BIT_ACCESS_INTERDOMAIN
+ flags.set(BIT_ACCESS_INTERDOMAIN);
+ }
+
CommonLinkData common = new CommonLinkData(exLink.adminStatus(), exLink.opStatus(),
- exLink.flags(), exLink.switchingLayer(), exLink.encodingLayer(),
+ flags, exLink.switchingLayer(), exLink.encodingLayer(),
externalLink, underlayPath, teAttributes,
exLink.administrativeGroup(), exLink.interLayerLocks(),
bandwidth);
@@ -793,19 +850,18 @@
teNodeIpEnd = cfgService.getConfig(appId, TeTopologyConfig.class)
.teNodeIpEnd();
mdsc = cfgService.getConfig(appId, TeTopologyConfig.class)
- .mdsc().equalsIgnoreCase(MDSC_MODE);
+ .mdsc().equals(MDSC_MODE);
nextTeNodeId = teNodeIpStart.toInt();
} catch (ConfigException e) {
log.error("Configuration error {}", e);
}
}
-
@Override
public boolean isRelevant(NetworkConfigEvent event) {
return event.configClass().equals(TeTopologyConfig.class) &&
(event.type() == CONFIG_ADDED ||
- event.type() == CONFIG_UPDATED);
+ event.type() == CONFIG_UPDATED);
}
}
@@ -826,6 +882,7 @@
@Override
public TeTopology teTopology(TeTopologyKey topologyId) {
if (mergedTopology != null &&
+ topologyId != null &&
topologyId.equals(mergedTopologyKey)) {
return mergedTopology;
}
@@ -955,4 +1012,9 @@
KeyId.keyId(Long.toString(teTpKey.teLinkTpId()))) :
store.terminationPointKey(teTpKey);
}
+
+ @Override
+ public long teContollerId() {
+ return providerId;
+ }
}
diff --git a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java
index bede7b3..09b8db7 100644
--- a/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java
+++ b/apps/tetopology/app/src/main/java/org/onosproject/tetopology/management/impl/TeTopologyStore.java
@@ -274,11 +274,11 @@
void setNextTeNodeId(TeTopologyKey topologyKey, long nextNodeId);
/**
- * Sets the queue to store the events originating from consistent maps.
+ * Returns the queue to store the events originating from consistent maps.
*
- * @param queue a blocking queue
+ * @return value of the blocking queue
*/
- void setMapEventQueue(BlockingQueue<TeTopologyMapEvent> queue);
+ BlockingQueue<TeTopologyMapEvent> mapEventQueue();
/**
* Sets the provider ID.
diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java
index 8ce1241..9ed72ba 100644
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java
+++ b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/DefaultBuilder.java
@@ -113,7 +113,7 @@
EncodingType.LSP_ENCODING_ODUK,
new BitSet(TeConstants.FLAG_MAX_BITS),
null, null,
- ODU2BW); //10G for ODU2
+ ODU2BW, null); //10G for ODU2
}
private static TerminationPoint tpBuilder(long teTpId) {
diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
index 7f4bb80..f4ff72d 100644
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
+++ b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
@@ -1026,12 +1026,13 @@
}
@Override
- public void setMapEventQueue(BlockingQueue<TeTopologyMapEvent> queue) {
+ public void setProviderId(long providerId) {
+ this.providerId = providerId;
}
@Override
- public void setProviderId(long providerId) {
- this.providerId = providerId;
+ public BlockingQueue<TeTopologyMapEvent> mapEventQueue() {
+ return null;
}
}
diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java
index 03d21fb..f6c0db0 100644
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java
+++ b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/TeTopologyManagerTest.java
@@ -128,6 +128,7 @@
.teNode(new TeNodeKey(DefaultBuilder.teTopologyKey(),
DefaultBuilder.teNode().teNodeId()));
assertNotNull("TeNode should be found", teNode);
+ assertTrue("TE node should be identical", teNode.equals(DefaultBuilder.teNode()));
assertTrue("Number of TTPs should be 1",
teNode.tunnelTerminationPoints().size() == 1);
TeLink teLink = service
diff --git a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/TeTopologyRestconfProvider.java b/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/TeTopologyRestconfProvider.java
index a377e51..f75027d 100644
--- a/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/TeTopologyRestconfProvider.java
+++ b/providers/ietfte/topology/src/main/java/org/onosproject/provider/te/topology/TeTopologyRestconfProvider.java
@@ -275,7 +275,7 @@
//Convert the YO to TE Core data and update TE Core.
for (Network nw : ietfNetwork.networks().network()) {
topologyProviderService.networkUpdated(
- NetworkConverter.yang2TeSubsystemNetwork(nw, ietfNetwork.networks()));
+ NetworkConverter.yang2TeSubsystemNetwork(nw, ietfNetwork.networks(), deviceId));
}
}