Link config enhancements:
o Links can be injected using configs
o fix for AllowedEntity check on links
o config for link durability
o Link operator methods for creating Link descriptions
Change-Id: I8a1fabc688a2e7eeb579feced451a6c1ba7e3232
diff --git a/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java b/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java
index a6b08f6..801092f 100644
--- a/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java
+++ b/core/net/src/main/java/org/onosproject/net/link/impl/BasicLinkOperator.java
@@ -16,12 +16,14 @@
package org.onosproject.net.link.impl;
import static org.slf4j.LoggerFactory.getLogger;
+import static com.google.common.base.Preconditions.checkNotNull;
import java.time.Duration;
import org.onosproject.net.AnnotationKeys;
import org.onosproject.net.config.ConfigOperator;
import org.onosproject.net.config.basics.BasicLinkConfig;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.Link;
import org.onosproject.net.SparseAnnotations;
@@ -81,6 +83,46 @@
if (cfg.bandwidth() != DEF_BANDWIDTH) {
b.set(AnnotationKeys.BANDWIDTH, String.valueOf(cfg.bandwidth()));
}
+ if (cfg.isDurable() != null) {
+ b.set(AnnotationKeys.DURABLE, String.valueOf(cfg.isDurable()));
+ }
return DefaultAnnotations.union(an, b.build());
}
+
+ /**
+ * Generates a link description from a link description entity. The endpoints
+ * must be specified to indicate directionality.
+ *
+ * @param src the source ConnectPoint
+ * @param dst the destination ConnectPoint
+ * @param link the link config entity
+ * @return a linkDescription based on the config
+ */
+ public static LinkDescription descriptionOf(
+ ConnectPoint src, ConnectPoint dst, Link link) {
+ checkNotNull(src, "Must supply a source endpoint");
+ checkNotNull(dst, "Must supply a destination endpoint");
+ checkNotNull(link, "Must supply a link");
+ return new DefaultLinkDescription(
+ src, dst, link.type(), (SparseAnnotations) link.annotations());
+ }
+
+ /**
+ * Generates a link description from a link config entity. This is for
+ * links that cannot be discovered and has to be injected. The endpoints
+ * must be specified to indicate directionality.
+ *
+ * @param src the source ConnectPoint
+ * @param dst the destination ConnectPoint
+ * @param link the link config entity
+ * @return a linkDescription based on the config
+ */
+ public static LinkDescription descriptionOf(
+ ConnectPoint src, ConnectPoint dst, BasicLinkConfig link) {
+ checkNotNull(src, "Must supply a source endpoint");
+ checkNotNull(dst, "Must supply a destination endpoint");
+ checkNotNull(link, "Must supply a link config");
+ return new DefaultLinkDescription(
+ src, dst, link.type(), combine(link, DefaultAnnotations.EMPTY));
+ }
}