diff --git a/apps/cfm/nbi/BUILD b/apps/cfm/nbi/BUILD index c28e664fb9..d86f380e42 100644 --- a/apps/cfm/nbi/BUILD +++ b/apps/cfm/nbi/BUILD @@ -13,6 +13,10 @@ osgi_jar_with_tests( api_title = "L2 Monitoring CFM", api_version = "1.0", exclude_tests = ["org/onosproject/cfm/impl/CfmResourceTest"], + karaf_command_packages = [ + "org.onosproject.cfm.cli", + "org.onosproject.cfm.cli.completer", + ], test_deps = TEST_DEPS, web_context = "/onos/cfm", deps = COMPILE_DEPS, diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java index 911510e9bf..3f16c7747b 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaAddCommand.java @@ -17,9 +17,14 @@ package org.onosproject.cfm.cli; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onlab.packet.VlanId; +import org.onosproject.cfm.cli.completer.CfmMaCcmIntervalCompleter; +import org.onosproject.cfm.cli.completer.CfmMaNameTypeCompleter; +import org.onosproject.cfm.cli.completer.CfmMdNameCompleter; import org.onosproject.cli.AbstractShellCommand; +import org.onosproject.cli.PlaceholderCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.Component; import org.onosproject.incubator.net.l2monitoring.cfm.DefaultComponent; import org.onosproject.incubator.net.l2monitoring.cfm.DefaultMaintenanceAssociation; @@ -40,22 +45,26 @@ public class CfmMaAddCommand extends AbstractShellCommand { @Argument(name = "name", description = "Maintenance Domain name and type (in brackets)", required = true) + @Completion(CfmMdNameCompleter.class) private String mdName = null; @Argument(index = 1, name = "name-type", - description = "Maintenance Assocation name type", + description = "Maintenance Association name type", required = true) + @Completion(CfmMaNameTypeCompleter.class) private String nameType = null; @Argument(index = 2, name = "name", description = "Maintenance Assocation name. Restrictions apply depending " + "on name-type", required = true) + @Completion(PlaceholderCompleter.class) private String name = null; @Argument(index = 3, name = "ccm-interval", description = "CCM Interval values from list", required = true) + @Completion(CfmMaCcmIntervalCompleter.class) private String ccmInterval = null; @Argument(index = 4, name = "numeric-id", diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java index 31cdcb4904..6e0943eaac 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMaDeleteCommand.java @@ -17,7 +17,9 @@ package org.onosproject.cfm.cli; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.onosproject.cfm.cli.completer.CfmMaNameCompleter; import org.onosproject.cli.AbstractShellCommand; import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdShort; import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId; @@ -37,6 +39,7 @@ public class CfmMaDeleteCommand extends AbstractShellCommand { description = "Maintenance Domain name and type (in brackets) " + "and the Maintenance Association name and type (in brackets)", required = true) + @Completion(CfmMaNameCompleter.class) private String name = null; @Override diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java index 2b5a2bff8e..5c7cc91884 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdAddCommand.java @@ -17,8 +17,12 @@ package org.onosproject.cfm.cli; import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.onosproject.cfm.cli.completer.CfmMdLevelCompleter; +import org.onosproject.cfm.cli.completer.CfmMdNameTypeCompleter; import org.onosproject.cli.AbstractShellCommand; +import org.onosproject.cli.PlaceholderCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.DefaultMaintenanceDomain; import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain; import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId; @@ -36,21 +40,25 @@ public class CfmMdAddCommand extends AbstractShellCommand { @Argument(name = "name-type", description = "Maintenance Domain name type", required = true) + @Completion(CfmMdNameTypeCompleter.class) private String nameType = null; @Argument(index = 1, name = "name", description = "Maintenance Domain name. Restrictions apply depending " + "on name-type. Leave empty if name type is none", required = true) + @Completion(PlaceholderCompleter.class) private String name = null; @Argument(index = 2, name = "level", description = "Maintenance Domain level LEVEL0-LEVEL7", required = true) + @Completion(CfmMdLevelCompleter.class) private String level = null; @Argument(index = 3, name = "numeric-id", description = "An optional numeric id for Maintenance Domain [1-65535]") + @Completion(PlaceholderCompleter.class) private Short numericId = null; @Override diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java index 7cd07a1d35..3b48d418a6 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdDeleteCommand.java @@ -17,7 +17,9 @@ package org.onosproject.cfm.cli; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.onosproject.cfm.cli.completer.CfmMdNameCompleter; import org.onosproject.cli.AbstractShellCommand; import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId; import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmConfigException; @@ -34,6 +36,7 @@ public class CfmMdDeleteCommand extends AbstractShellCommand { @Argument(name = "name", description = "Maintenance Domain name and type (in brackets)", required = true) + @Completion(CfmMdNameCompleter.class) private String name = null; @Override diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java index 09bd80705f..be97f280c8 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMdListMdCommand.java @@ -17,7 +17,9 @@ package org.onosproject.cfm.cli; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.onosproject.cfm.cli.completer.CfmMdNameCompleter; import org.onosproject.cli.AbstractShellCommand; import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceAssociation; import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain; @@ -35,6 +37,7 @@ import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmMdService; public class CfmMdListMdCommand extends AbstractShellCommand { @Argument(name = "name", description = "Maintenance Domain name and type (in brackets)") + @Completion(CfmMdNameCompleter.class) private String name = null; @Override diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java index f7c130fa8e..23eed3e27a 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListCommand.java @@ -17,7 +17,9 @@ package org.onosproject.cfm.cli; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.onosproject.cfm.cli.completer.CfmMepIdCompleter; import org.onosproject.cli.AbstractShellCommand; import org.onosproject.incubator.net.l2monitoring.cfm.MepEntry; import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdShort; @@ -43,6 +45,7 @@ public class CfmMepListCommand extends AbstractShellCommand { private final Logger log = getLogger(getClass()); @Argument(name = "md", description = "Maintenance Domain name and type (in brackets) - will use all MDs if not specified") + @Completion(CfmMepIdCompleter.class) private String mdStr = null; @Argument(index = 1, name = "ma", description = "Maintenance Association name and type (in brackets) - requires MD") diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java index ca60a1c02c..bdff1e8258 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/CfmMepListDeviceCommand.java @@ -17,7 +17,9 @@ package org.onosproject.cfm.cli; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.onosproject.cfm.cli.completer.CfmDeviceIdCompleter; import org.onosproject.cli.AbstractShellCommand; import org.onosproject.incubator.net.l2monitoring.cfm.Mep; import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmConfigException; @@ -34,6 +36,7 @@ public class CfmMepListDeviceCommand extends AbstractShellCommand { @Argument(name = "device", description = "Device Id", required = true) + @Completion(CfmDeviceIdCompleter.class) private String deviceStr = null; @Override diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompMhfCompleter.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompMhfCompleter.java index 499b84dae4..2d5019be73 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompMhfCompleter.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompMhfCompleter.java @@ -15,6 +15,7 @@ */ package org.onosproject.cfm.cli.completer; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onosproject.cli.AbstractChoicesCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.Component; @@ -24,6 +25,7 @@ import java.util.List; /** * CLI completer for Component MEP Half Function creation. */ +@Service public class CfmCompMhfCompleter extends AbstractChoicesCompleter { @Override public List choices() { diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompTagTypeCompleter.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompTagTypeCompleter.java index d9197802a7..b0c8dd3f7f 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompTagTypeCompleter.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmCompTagTypeCompleter.java @@ -15,6 +15,7 @@ */ package org.onosproject.cfm.cli.completer; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onosproject.cli.AbstractChoicesCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.Component; @@ -24,6 +25,7 @@ import java.util.List; /** * CLI completer for Component TagType creation. */ +@Service public class CfmCompTagTypeCompleter extends AbstractChoicesCompleter { @Override public List choices() { diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaCcmIntervalCompleter.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaCcmIntervalCompleter.java index 6599ed35a8..9a47323bf8 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaCcmIntervalCompleter.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaCcmIntervalCompleter.java @@ -15,6 +15,7 @@ */ package org.onosproject.cfm.cli.completer; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onosproject.cli.AbstractChoicesCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceAssociation; @@ -24,6 +25,7 @@ import java.util.List; /** * CLI completer for Ccm Interval creation. */ +@Service public class CfmMaCcmIntervalCompleter extends AbstractChoicesCompleter { @Override public List choices() { diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaNameCompleter.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaNameCompleter.java index 1463804180..e1f6a6d214 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaNameCompleter.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMaNameCompleter.java @@ -15,6 +15,7 @@ */ package org.onosproject.cfm.cli.completer; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onosproject.cli.AbstractChoicesCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmMdService; @@ -26,6 +27,7 @@ import static org.onosproject.cli.AbstractShellCommand.get; /** * CLI completer for MA Name creation. */ +@Service public class CfmMaNameCompleter extends AbstractChoicesCompleter { @Override public List choices() { diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdLevelCompleter.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdLevelCompleter.java index 374e549623..a006850ea3 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdLevelCompleter.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdLevelCompleter.java @@ -15,6 +15,7 @@ */ package org.onosproject.cfm.cli.completer; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onosproject.cli.AbstractChoicesCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain; @@ -24,6 +25,7 @@ import java.util.List; /** * CLI completer for MD Level creation. */ +@Service public class CfmMdLevelCompleter extends AbstractChoicesCompleter { @Override public List choices() { diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdNameCompleter.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdNameCompleter.java index 7a336e74fe..7badb1bcc7 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdNameCompleter.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMdNameCompleter.java @@ -15,6 +15,7 @@ */ package org.onosproject.cfm.cli.completer; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onosproject.cli.AbstractChoicesCompleter; import static org.onosproject.cli.AbstractShellCommand.get; import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmMdService; @@ -25,6 +26,7 @@ import java.util.List; /** * CLI completer for MD Name creation. */ +@Service public class CfmMdNameCompleter extends AbstractChoicesCompleter { @Override public List choices() { diff --git a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMepIdCompleter.java b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMepIdCompleter.java index a26a460e42..23aa3244a6 100644 --- a/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMepIdCompleter.java +++ b/apps/cfm/nbi/src/main/java/org/onosproject/cfm/cli/completer/CfmMepIdCompleter.java @@ -15,6 +15,7 @@ */ package org.onosproject.cfm.cli.completer; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.onosproject.cli.AbstractChoicesCompleter; import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmConfigException; import org.onosproject.incubator.net.l2monitoring.cfm.service.CfmMdService; @@ -30,6 +31,7 @@ import static org.slf4j.LoggerFactory.getLogger; /** * CLI completer for Mep Id creation. */ +@Service public class CfmMepIdCompleter extends AbstractChoicesCompleter { private final Logger log = getLogger(getClass()); diff --git a/cli/src/main/java/org/onosproject/cli/PlaceholderCompleter.java b/cli/src/main/java/org/onosproject/cli/PlaceholderCompleter.java index 537aa286f1..30ef05405a 100644 --- a/cli/src/main/java/org/onosproject/cli/PlaceholderCompleter.java +++ b/cli/src/main/java/org/onosproject/cli/PlaceholderCompleter.java @@ -16,6 +16,7 @@ package org.onosproject.cli; +import org.apache.karaf.shell.api.action.lifecycle.Service; import org.apache.karaf.shell.api.console.CommandLine; import org.apache.karaf.shell.api.console.Session; import org.apache.karaf.shell.support.completers.StringsCompleter; @@ -27,6 +28,7 @@ import java.util.SortedSet; * A completer that can be used as a placeholder for arguments that don't * need/want completers. */ +@Service public class PlaceholderCompleter extends AbstractCompleter { @Override