aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java')
-rw-r--r--framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java33
1 files changed, 32 insertions, 1 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java
index e962110c..ed807b8f 100644
--- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java
+++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java
@@ -15,22 +15,32 @@
*/
package org.onosproject.net.config.basics;
+import com.fasterxml.jackson.databind.JsonNode;
import org.onosproject.net.Link;
import org.onosproject.net.LinkKey;
-import com.fasterxml.jackson.databind.JsonNode;
import java.time.Duration;
+import static org.onosproject.net.config.Config.FieldPresence.OPTIONAL;
+
/**
* Basic configuration for network infrastructure link.
*/
public class BasicLinkConfig extends AllowedEntityConfig<LinkKey> {
public static final String TYPE = "type";
+ public static final String METRIC = "metric";
public static final String LATENCY = "latency";
public static final String BANDWIDTH = "bandwidth";
public static final String IS_DURABLE = "durable";
+ @Override
+ public boolean isValid() {
+ return hasOnlyFields(TYPE, METRIC, LATENCY, BANDWIDTH, IS_DURABLE) &&
+ isNumber(METRIC, OPTIONAL) && isNumber(LATENCY, OPTIONAL) &&
+ isNumber(BANDWIDTH, OPTIONAL);
+ }
+
/**
* Returns the link type.
*
@@ -51,6 +61,27 @@ public class BasicLinkConfig extends AllowedEntityConfig<LinkKey> {
}
/**
+ * Returns link metric value for use by
+ * {@link org.onosproject.net.topology.MetricLinkWeight} function.
+ *
+ * @return link metric; -1 if not set
+ */
+ public double metric() {
+ return get(METRIC, -1);
+ }
+
+ /**
+ * Sets the link metric for use by
+ * {@link org.onosproject.net.topology.MetricLinkWeight} function.
+ *
+ * @param metric new metric; null to clear
+ * @return self
+ */
+ public BasicLinkConfig metric(Double metric) {
+ return (BasicLinkConfig) setOrClear(METRIC, metric);
+ }
+
+ /**
* Returns link latency in terms of nanos.
*
* @return link latency; -1 if not set