Add keys to intents
- use Key class rather than String for intent keys
- add CLI option to specify a string key
- add key field to constructors for connectivity intents
- translate id into a key if no key is specified
Change-Id: I69ffbad93bc3daddf06a67cb0cffa2130e781b37
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java
index 22bc137..eb5161b 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java
@@ -54,7 +54,8 @@
TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
List<Constraint> constraints = buildConstraints();
- HostToHostIntent intent = new HostToHostIntent(appId(), oneId, twoId,
+ HostToHostIntent intent = new HostToHostIntent(appId(), key(),
+ oneId, twoId,
selector, treatment,
constraints);
service.submit(intent);
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java
index 868fc7a..69feb35 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java
@@ -72,7 +72,8 @@
TrafficTreatment treatment = buildTrafficTreatment();
List<Constraint> constraints = buildConstraints();
- Intent intent = new MultiPointToSinglePointIntent(appId(), selector, treatment,
+ Intent intent = new MultiPointToSinglePointIntent(appId(), key(),
+ selector, treatment,
ingressPoints, egress,
constraints);
service.submit(intent);
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddOpticalIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddOpticalIntentCommand.java
index a70550e..c743575 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddOpticalIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddOpticalIntentCommand.java
@@ -56,7 +56,7 @@
PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString));
ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber);
- Intent intent = new OpticalConnectivityIntent(appId(), ingress, egress);
+ Intent intent = new OpticalConnectivityIntent(appId(), key(), ingress, egress);
service.submit(intent);
print("Optical intent submitted:\n%s", intent.toString());
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddPointToPointIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddPointToPointIntentCommand.java
index 2f50856..980acfe 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddPointToPointIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddPointToPointIntentCommand.java
@@ -15,9 +15,6 @@
*/
package org.onosproject.cli.net;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.PortNumber.portNumber;
-
import java.util.List;
import org.apache.karaf.shell.commands.Argument;
@@ -32,6 +29,9 @@
import org.onosproject.net.intent.IntentService;
import org.onosproject.net.intent.PointToPointIntent;
+import static org.onosproject.net.DeviceId.deviceId;
+import static org.onosproject.net.PortNumber.portNumber;
+
/**
* Installs point-to-point connectivity intents.
*/
@@ -67,8 +67,10 @@
List<Constraint> constraints = buildConstraints();
- Intent intent = new PointToPointIntent(appId(), selector, treatment,
- ingress, egress, constraints);
+ Intent intent = new PointToPointIntent(appId(),
+ key(),
+ selector, treatment,
+ ingress, egress, constraints);
service.submit(intent);
print("Point to point intent submitted:\n%s", intent.toString());
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
index 8d962a6..74704d0 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
@@ -71,13 +71,15 @@
TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
List<Constraint> constraints = buildConstraints();
- SinglePointToMultiPointIntent intent = new SinglePointToMultiPointIntent(
- appId(),
- selector,
- treatment,
- ingressPoint,
- egressPoints,
- constraints);
+ SinglePointToMultiPointIntent intent =
+ new SinglePointToMultiPointIntent(
+ appId(),
+ key(),
+ selector,
+ treatment,
+ ingressPoint,
+ egressPoints,
+ constraints);
service.submit(intent);
print("Single point to multipoint intent submitted:\n%s", intent.toString());
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
index d0633e6..a8a28e2 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
@@ -28,6 +28,7 @@
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.intent.Constraint;
+import org.onosproject.net.intent.Key;
import org.onosproject.net.intent.constraint.BandwidthConstraint;
import org.onosproject.net.intent.constraint.LambdaConstraint;
import org.onosproject.net.intent.constraint.LinkTypeConstraint;
@@ -81,6 +82,10 @@
required = false, multiValued = false)
private boolean lambda = false;
+ @Option(name = "-k", aliases = "--key", description = "Intent Key",
+ required = false, multiValued = false)
+ private String intentKey = null;
+
// Treatments
@Option(name = "--setEthSrc", description = "Rewrite Source MAC Address",
@@ -180,4 +185,19 @@
return constraints;
}
+
+ /**
+ * Creates a key for an intent based on command line arguments. If a key
+ * has been specified, it is returned. If no key is specified, null
+ * is returned.
+ *
+ * @return intent key if specified, null otherwise
+ */
+ protected Key key() {
+ Key key = null;
+ if (intentKey != null) {
+ key = Key.of(intentKey, appId());
+ }
+ return key;
+ }
}