Slightly improve add-optical-connectivity usability
Change-Id: I1d1f01c56ae0e75a525d181b400b9d75ce1e575d
diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
index 8dc73c1..7ef2c00 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
@@ -593,11 +593,13 @@
// Avoid inactive links
if (l.state() == Link.State.INACTIVE) {
+ log.trace("{} is not active", l);
return -1.0;
}
// Avoid cross connect links with used ports
if (isCrossConnectLink(l) && usedCrossConnectLinkSet.contains(l)) {
+ log.trace("Cross connect {} in use", l);
return -1.0;
}
@@ -606,6 +608,7 @@
if (hasEnoughBandwidth(l.src()) && hasEnoughBandwidth(l.dst())) {
return 1.0;
} else {
+ log.trace("Not enought bandwidth on {}", l);
return -1.0;
}
} else {
@@ -639,7 +642,13 @@
// Check if enough amount of bandwidth resource remains
ContinuousResource resource = Resources.continuous(cp.deviceId(), cp.port(), Bandwidth.class)
.resource(bandwidth.bps());
- return resourceService.isAvailable(resource);
+ try {
+ return resourceService.isAvailable(resource);
+ } catch (Exception e) {
+ log.error("Resource service failed checking availability of {}",
+ resource, e);
+ throw e;
+ }
}
}
return false;
diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java
index 3df2ff8..8d8c30a 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/cli/AddOpticalConnectivityCommand.java
@@ -19,8 +19,11 @@
import org.apache.karaf.shell.commands.Command;
import org.onlab.util.Bandwidth;
import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.cli.net.ConnectPointCompleter;
import org.onosproject.newoptical.api.OpticalConnectivityId;
import org.onosproject.newoptical.api.OpticalPathService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import org.onosproject.net.PortNumber;
@@ -29,6 +32,11 @@
description = "Configure optical domain connectivity")
public class AddOpticalConnectivityCommand extends AbstractShellCommand {
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ // for OSGi import workaround
+ ConnectPointCompleter portCompleter;
+
@Argument(index = 0, name = "ingress", description = "Ingress connect point",
required = true, multiValued = false)
String ingressStr = null;
@@ -41,8 +49,9 @@
required = false, multiValued = false)
String bandwidthStr = null;
+ // not supported yet
@Argument(index = 3, name = "latency", description = "Latency",
- required = true, multiValued = false)
+ required = false, multiValued = false)
String latencyStr = null;
@@ -63,10 +72,15 @@
print("Trying to setup connectivity between %s and %s.", ingress, egress);
OpticalConnectivityId id = opticalPathService.setupConnectivity(ingress, egress, bandwidth, null);
if (id == null) {
- print("Failed.");
+ print("Failed. See ONOS log for more details.");
+ print(" log:set TRACE org.onosproject.newoptical.OpticalPathProvisioner");
return;
}
+ // FIXME This is the last chance to know the Optical path ID.
+ // there's no other way to know existing Optical Path ID
print("Optical path ID : %s", id.id());
+ log.info("Optical path ID {} for connectivity between %s and %s: {}",
+ id.id(), ingress, egress);
}
private ConnectPoint readConnectPoint(String str) {
diff --git a/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 7d7f035..72bdcaa 100644
--- a/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/apps/newoptical/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -18,10 +18,18 @@
<command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
<command>
<action class="org.onosproject.newoptical.cli.AddOpticalConnectivityCommand"/>
+ <completers>
+ <ref component-id="connectPointCompleter"/>
+ <ref component-id="connectPointCompleter"/>
+ <null/>
+ </completers>
</command>
<command>
<action class="org.onosproject.newoptical.cli.RemoveOpticalConnectivityCommand"/>
</command>
</command-bundle>
+ <!-- TODO complete only applicable ports -->
+ <bean id="connectPointCompleter" class="org.onosproject.cli.net.ConnectPointCompleter"/>
+
</blueprint>