CORD-380 Added host provider for cordvtn service

- Renamed CordVtnConfigManager to CordVtnNodeManager
- Moved all node bootstrap logic to CordVtnNodeManager
- CordVtnService now provides VM add/remove and service dependency create/remove
- Made CordVtn implement HostProvider so that it can inject/eject VM to the system

Change-Id: I0011ac692ecea240d2d7fe48b3e7a1db4973b76e
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
index 5448ef1..8995314 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
@@ -21,7 +21,7 @@
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 import org.onosproject.net.DeviceId;
 
@@ -63,7 +63,7 @@
         checkArgument(ovsdb.contains(":"), "OVSDB address should be ip:port format");
         checkArgument(bridgeId.startsWith("of:"), "bridgeId should be of:dpid format");
 
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
         String[] ipPort = ovsdb.split(":");
         CordVtnNode node = new CordVtnNode(hostname,
                                            IpAddress.valueOf(ipPort[0]),
@@ -71,6 +71,6 @@
                                            DeviceId.deviceId(bridgeId),
                                            phyPortName,
                                            IpAddress.valueOf(localIp));
-        service.addNode(node);
+        nodeManager.addNode(node);
     }
 }
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
index 185acd7..f8afbd9 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
@@ -20,7 +20,7 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cordvtn.CordVtnNode;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 
 /**
  * Checks detailed node init state.
@@ -35,8 +35,8 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
-        CordVtnNode node = service.getNodes()
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
+        CordVtnNode node = nodeManager.getNodes()
                 .stream()
                 .filter(n -> n.hostname().equals(hostname))
                 .findFirst()
@@ -47,6 +47,6 @@
             return;
         }
 
-        print(service.checkNodeInitState(node));
+        print(nodeManager.checkNodeInitState(node));
     }
 }
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java
index 0446fc6..1bdc84a 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java
@@ -19,7 +19,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 
 import java.util.NoSuchElementException;
@@ -37,12 +37,12 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
 
         for (String hostname : hostnames) {
             CordVtnNode node;
             try {
-                node = service.getNodes()
+                node = nodeManager.getNodes()
                         .stream()
                         .filter(n -> n.hostname().equals(hostname))
                         .findFirst().get();
@@ -51,7 +51,7 @@
                 continue;
             }
 
-            service.deleteNode(node);
+            nodeManager.deleteNode(node);
         }
     }
 }
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java
index dd77a9c..ab8b389 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java
@@ -19,7 +19,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 
 import java.util.NoSuchElementException;
@@ -37,12 +37,12 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
 
         for (String hostname : hostnames) {
             CordVtnNode node;
             try {
-                node = service.getNodes()
+                node = nodeManager.getNodes()
                         .stream()
                         .filter(n -> n.hostname().equals(hostname))
                         .findFirst().get();
@@ -51,7 +51,7 @@
                 continue;
             }
 
-            service.initNode(node);
+            nodeManager.initNode(node);
         }
     }
 }
diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
index 51641c4..48e1112 100644
--- a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
+++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
@@ -21,7 +21,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 
 import java.util.Collections;
@@ -36,12 +36,12 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
-        List<CordVtnNode> nodes = service.getNodes();
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
+        List<CordVtnNode> nodes = nodeManager.getNodes();
         Collections.sort(nodes, CordVtnNode.CORDVTN_NODE_COMPARATOR);
 
         if (outputJson()) {
-            print("%s", json(service, nodes));
+            print("%s", json(nodeManager, nodes));
         } else {
             for (CordVtnNode node : nodes) {
                 print("hostname=%s, ovsdb=%s, br-int=%s, phyPort=%s, localIp=%s, init=%s",
@@ -50,13 +50,13 @@
                       node.intBrId().toString(),
                       node.phyPortName(),
                       node.localIp().toString(),
-                      getState(service, node));
+                      getState(nodeManager, node));
             }
-            print("Total %s nodes", service.getNodeCount());
+            print("Total %s nodes", nodeManager.getNodeCount());
         }
     }
 
-    private JsonNode json(CordVtnService service, List<CordVtnNode> nodes) {
+    private JsonNode json(CordVtnNodeManager nodeManager, List<CordVtnNode> nodes) {
         ObjectMapper mapper = new ObjectMapper();
         ArrayNode result = mapper.createArrayNode();
         for (CordVtnNode node : nodes) {
@@ -67,12 +67,12 @@
                                .put("brInt", node.intBrId().toString())
                                .put("phyPort", node.phyPortName())
                                .put("localIp", node.localIp().toString())
-                               .put("init", getState(service, node)));
+                               .put("init", getState(nodeManager, node)));
         }
         return result;
     }
 
-    private String getState(CordVtnService service, CordVtnNode node) {
-        return service.getNodeInitState(node) ? "COMPLETE" : "INCOMPLETE";
+    private String getState(CordVtnNodeManager nodeManager, CordVtnNode node) {
+        return nodeManager.getNodeInitState(node) ? "COMPLETE" : "INCOMPLETE";
     }
 }