ONOS-5682 Trigger DeviceEvent when virtual device or port is added/updated/removed

Change-Id: I4f9b62551c4106c5dd8d2ccc977a09e4e8c93a43
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
index d3390a6..f525028 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
@@ -543,7 +543,7 @@
             virtualPortSet = new HashSet<>();
         }
 
-        Device device = deviceIdVirtualDeviceMap.get(deviceId);
+        VirtualDevice device = deviceIdVirtualDeviceMap.get(deviceId);
         checkNotNull(device, "The device has not been created for deviceId: " + deviceId);
 
         boolean exist = virtualPortSet.stream().anyMatch(
@@ -556,7 +556,7 @@
         virtualPortSet.add(virtualPort);
         networkIdVirtualPortSetMap.put(networkId, virtualPortSet);
         notifyDelegate(new VirtualNetworkEvent(VirtualNetworkEvent.Type.VIRTUAL_PORT_ADDED,
-                                               networkId, virtualPort));
+                                               networkId, device, virtualPort));
         return virtualPort;
     }
 
@@ -572,7 +572,7 @@
                         p.number().equals(portNumber)).findFirst().get();
         checkNotNull(vPort, "The virtual port has not been added.");
 
-        Device device = deviceIdVirtualDeviceMap.get(deviceId);
+        VirtualDevice device = deviceIdVirtualDeviceMap.get(deviceId);
         checkNotNull(device, "The device has not been created for deviceId: "
                 + deviceId);
 
@@ -581,12 +581,15 @@
         virtualPortSet.add(vPort);
         networkIdVirtualPortSetMap.put(networkId, virtualPortSet);
         notifyDelegate(new VirtualNetworkEvent(VirtualNetworkEvent.Type.VIRTUAL_PORT_UPDATED,
-                                               networkId, vPort));
+                                               networkId, device, vPort));
     }
 
     @Override
     public void removePort(NetworkId networkId, DeviceId deviceId, PortNumber portNumber) {
         checkState(networkExists(networkId), "The network has not been added.");
+        VirtualDevice device = deviceIdVirtualDeviceMap.get(deviceId);
+        checkNotNull(device, "The device has not been created for deviceId: "
+                + deviceId);
 
         Set<VirtualPort> virtualPortSet = new HashSet<>();
         networkIdVirtualPortSetMap.get(networkId).forEach(port -> {
@@ -608,7 +611,7 @@
             if (portRemoved.get()) {
                 virtualPortSet.forEach(virtualPort -> notifyDelegate(
                         new VirtualNetworkEvent(VirtualNetworkEvent.Type.VIRTUAL_PORT_REMOVED,
-                                                networkId, virtualPort)
+                                                networkId, device, virtualPort)
                 ));
             }
         }