Completer fixes for core ONOS CLI commands

Change-Id: Icedfc542ad93a2825b592f3deb6cd96d91779544
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
index 546a637..6c69457 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
@@ -20,6 +20,7 @@
 
 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.apache.karaf.shell.api.action.Option;
 import org.onosproject.cfg.ComponentConfigService;
@@ -30,6 +31,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.onosproject.cli.app.ApplicationCommandCompleter;
+import org.onosproject.cli.app.ApplicationNameCompleter;
 
 import static com.google.common.base.Strings.isNullOrEmpty;
 
@@ -56,14 +59,17 @@
     @Argument(index = 0, name = "command",
             description = "Command name (get|set|preset)",
             required = false, multiValued = false)
+    @Completion(ApplicationCommandCompleter.class)
     String command = null;
 
     @Argument(index = 1, name = "component", description = "Component name",
             required = false, multiValued = false)
+    @Completion(ApplicationNameCompleter.class)
     String component = null;
 
     @Argument(index = 2, name = "name", description = "Property name",
             required = false, multiValued = false)
+    @Completion(ComponentPropertyNameCompleter.class)
     String name = null;
 
     @Argument(index = 3, name = "value", description = "Property value",
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java b/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java
index 55baaf6..74bcdc2 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ConfigKeyCompleter.java
@@ -21,6 +21,7 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import org.apache.karaf.shell.api.action.lifecycle.Service;
 import org.onosproject.cli.AbstractChoicesCompleter;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.net.config.Config;
@@ -35,6 +36,7 @@
  * Assumes 2 argument before the one being completed is SubjectClassKey
  * and argument right before the one being completed is SubjectKey.
  */
+@Service
 public class ConfigKeyCompleter extends AbstractChoicesCompleter {
 
     // FIXME ConfigKeyCompleter never gets called??
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
index b155090..fad93ef 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/NetworkConfigCommand.java
@@ -21,6 +21,7 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 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.apache.karaf.shell.api.action.Option;
 import org.onosproject.cli.AbstractShellCommand;
@@ -43,14 +44,17 @@
 
     @Argument(index = 0, name = "subjectClassKey", description = "Subject class key",
             required = false, multiValued = false)
+    @Completion(ComponentConfigCommandCompleter.class)
     String subjectClassKey = null;
 
     @Argument(index = 1, name = "subjectKey", description = "Subject key",
             required = false, multiValued = false)
+    @Completion(ComponentNameCompleter.class)
     String subjectKey = null;
 
     @Argument(index = 2, name = "configKey", description = "Config key",
             required = false, multiValued = false)
+    @Completion(ConfigKeyCompleter.class)
     String configKey = null;
 
     @Option(name = "--remove",