summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/api/src/main/java/org/onosproject/net/config
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/net/config')
-rw-r--r--framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java72
-rw-r--r--framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicLinkConfig.java33
2 files changed, 103 insertions, 2 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
index 2fe2b2c0..92946312 100644
--- a/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
+++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
@@ -15,13 +15,83 @@
*/
package org.onosproject.net.config.basics;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import org.onlab.packet.IpAddress;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.HostId;
+import java.util.HashSet;
+import java.util.Set;
/**
* Basic configuration for network end-station hosts.
*/
public class BasicHostConfig extends BasicElementConfig<HostId> {
+ private static final String IPS = "ips";
+ private static final String LOCATION = "location";
- // TODO: determine what aspects of configuration to add for hosts
+ @Override
+ public boolean isValid() {
+ return hasOnlyFields(IPS, LOCATION) &&
+ this.location() != null &&
+ this.ipAddresses() != null;
+ }
+ /**
+ * Gets location of the host.
+ *
+ * @return location of the host. Or null if not specified with correct format.
+ */
+ public ConnectPoint location() {
+ String location = get(LOCATION, null);
+
+ if (location != null) {
+ try {
+ return ConnectPoint.deviceConnectPoint(location);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Sets the location of the host.
+ *
+ * @param location location of the host.
+ * @return the config of the host.
+ */
+ public BasicHostConfig setLocation(String location) {
+ return (BasicHostConfig) setOrClear(LOCATION, location);
+ }
+
+ /**
+ * Gets IP addresses of the host.
+ *
+ * @return IP addresses of the host. Or null if not specified with correct format.
+ */
+ public Set<IpAddress> ipAddresses() {
+ HashSet<IpAddress> ipAddresses = new HashSet<>();
+ if (object.has(IPS)) {
+ ArrayNode ipNodes = (ArrayNode) object.path(IPS);
+ try {
+ ipNodes.forEach(ipNode -> {
+ ipAddresses.add(IpAddress.valueOf(ipNode.asText()));
+ });
+ return ipAddresses;
+ } catch (Exception e) {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Sets the IP addresses of the host.
+ *
+ * @param ipAddresses IP addresses of the host.
+ * @return the config of the host.
+ */
+ public BasicHostConfig setIps(Set<IpAddress> ipAddresses) {
+ return (BasicHostConfig) setOrClear(IPS, ipAddresses);
+ }
}
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