Release resources when intent is withdrawn (ONOS-2048).
Create optical circuits using CLI (ONOS-2049).
Change-Id: I8e52e698a897b869147afffdc0294956df76aa0c
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 6f00174..97341d7 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddOpticalIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddOpticalIntentCommand.java
@@ -18,13 +18,18 @@
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.OchPort;
+import org.onosproject.net.OduCltPort;
import org.onosproject.net.OduSignalType;
+import org.onosproject.net.Port;
+import org.onosproject.net.device.DeviceService;
import org.onosproject.net.intent.Intent;
import org.onosproject.net.intent.IntentService;
+import org.onosproject.net.intent.OpticalCircuitIntent;
import org.onosproject.net.intent.OpticalConnectivityIntent;
/**
- * Installs optical connectivity intents.
+ * Installs optical connectivity or circuit intents, depending on given port types.
*/
@Command(scope = "onos", name = "add-optical-intent",
description = "Installs optical connectivity intent")
@@ -48,14 +53,33 @@
ConnectPoint egress = ConnectPoint.deviceConnectPoint(egressDeviceString);
- // FIXME: Hardcoded ODU signal type
- Intent intent = OpticalConnectivityIntent.builder()
- .appId(appId())
- .key(key())
- .src(ingress)
- .dst(egress)
- .signalType(OduSignalType.ODU4)
- .build();
+ DeviceService deviceService = get(DeviceService.class);
+ Port srcPort = deviceService.getPort(ingress.deviceId(), ingress.port());
+ Port dstPort = deviceService.getPort(egress.deviceId(), egress.port());
+
+ Intent intent;
+ // FIXME: Hardcoded signal types
+ if (srcPort instanceof OduCltPort && dstPort instanceof OduCltPort) {
+ intent = OpticalCircuitIntent.builder()
+ .appId(appId())
+ .key(key())
+ .src(ingress)
+ .dst(egress)
+ .signalType(OduCltPort.SignalType.CLT_10GBE)
+ .build();
+ } else if (srcPort instanceof OchPort && dstPort instanceof OchPort) {
+ intent = OpticalConnectivityIntent.builder()
+ .appId(appId())
+ .key(key())
+ .src(ingress)
+ .dst(egress)
+ .signalType(OduSignalType.ODU4)
+ .build();
+ } else {
+ print("Unable to create optical intent between connect points {} and {}", ingress, egress);
+ return;
+ }
+
service.submit(intent);
print("Optical intent submitted:\n%s", intent.toString());
}