[AETHER-76] Impelentation of a new Trellis Troubleshoot Tool (T3) for offline mode
- For the performance improvement, T3 offline mode uses snapshots of the network states
called Network Information Base (NIB) instead of runtime interactions with ONOS core
during troubleshooting a Trellis system.
- Partially tested with some mininet topos for trellis
(https://github.com/opennetworkinglab/routing/tree/master/trellis).
- Usage instruction docs (https://docs.trellisfabric.org/troubleshooting.html).
Change-Id: Ice608f77aa96bfbcadfff34991c4a1b6d93125b6
(cherry picked from commit eaa6329aba67c2577fdca7d3ddf230611e82f9f7)
diff --git a/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java b/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java
index 7b18913..7a5ecc7 100644
--- a/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java
+++ b/app/src/main/java/org/onosproject/t3/cli/TroubleshootSimpleTraceCommand.java
@@ -22,6 +22,7 @@
import org.apache.karaf.shell.api.action.Option;
import org.apache.karaf.shell.api.action.lifecycle.Service;
import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.cli.PlaceholderCompleter;
import org.onosproject.cli.net.EthTypeCompleter;
import org.onosproject.cli.net.HostIdCompleter;
import org.onosproject.net.HostId;
@@ -53,9 +54,11 @@
String dstHost = null;
@Option(name = "-v", aliases = "--verbose", description = "Outputs complete path")
+ @Completion(PlaceholderCompleter.class)
private boolean verbosity1 = false;
@Option(name = "-vv", aliases = "--veryverbose", description = "Outputs flows and groups for every device")
+ @Completion(PlaceholderCompleter.class)
private boolean verbosity2 = false;
@Option(name = "-et", aliases = "--ethType", description = "ETH Type", valueToShowInHelp = "ipv4")
@@ -65,6 +68,14 @@
@Override
protected void doExecute() {
TroubleshootService service = get(TroubleshootService.class);
+ if (service.checkNibsUnavailable()) {
+ print(TroubleshootLoadFileCommand.ERROR_NULL);
+ return;
+ }
+ if (srcHost.equals(dstHost)) {
+ print("Source and destination are same. Use different hosts");
+ return;
+ }
EtherType type = EtherType.valueOf(ethType.toUpperCase());