In vnet CLI, separates virutal port creation and binding operations.
Original usage with specifiying a phyiscal port is also in supporting.

Changes.
1. vnet-create-port allow to create virtual port
   without a specific virtual port
2. vnet-bind-port command is added to newly bind or to update
3. Virtual binding point is changed from Port to ConnectPoint.

Change-Id: I4c8f9a2b9b2786ba519ead3559d7f005390fee86
diff --git a/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java
index 0c2757c..c49e3c5 100644
--- a/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java
@@ -23,12 +23,8 @@
 import org.onosproject.incubator.net.virtual.VirtualDevice;
 import org.onosproject.incubator.net.virtual.VirtualNetworkAdminService;
 import org.onosproject.incubator.net.virtual.VirtualNetworkService;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Device;
+import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DeviceService;
 
@@ -56,24 +52,29 @@
     Integer portNum = null;
 
     @Argument(index = 3, name = "physDeviceId", description = "Physical Device ID",
-            required = true, multiValued = false)
+            required = false, multiValued = false)
     String physDeviceId = null;
 
     @Argument(index = 4, name = "physPortNum", description = "Physical device port number",
-            required = true, multiValued = false)
+            required = false, multiValued = false)
     Integer physPortNum = null;
 
     @Override
     protected void execute() {
         VirtualNetworkAdminService service = get(VirtualNetworkAdminService.class);
         DeviceService deviceService = get(DeviceService.class);
+
         VirtualDevice virtualDevice = getVirtualDevice(DeviceId.deviceId(deviceId));
         checkNotNull(virtualDevice, "The virtual device does not exist.");
 
-        DefaultAnnotations annotations = DefaultAnnotations.builder().build();
-        Device physDevice = new DefaultDevice(null, DeviceId.deviceId(physDeviceId),
-                                              null, null, null, null, null, null, annotations);
-        Port realizedBy = new DefaultPort(physDevice, PortNumber.portNumber(physPortNum), true);
+        ConnectPoint realizedBy = null;
+        if (physDeviceId != null && physPortNum != null) {
+            checkNotNull(physPortNum, "The physical port does not specified.");
+            realizedBy = new ConnectPoint(DeviceId.deviceId(physDeviceId),
+                                               PortNumber.portNumber(physPortNum));
+            checkNotNull(realizedBy, "The physical port does not exist.");
+        }
+
         service.createVirtualPort(NetworkId.networkId(networkId), DeviceId.deviceId(deviceId),
                                   PortNumber.portNumber(portNum), realizedBy);
         print("Virtual port successfully created.");