ONOS-6382 fail removal of non-existent virtual network with IllegalStateException

Change-Id: I50a81f79660ff6fc63a5426368f2edbcec993155
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java
index 44395ef..202046e 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java
@@ -189,6 +189,18 @@
     }
 
     /**
+     * Tests removal of a virtual network twice.
+     */
+    @Test(expected = IllegalStateException.class)
+    public void testRemoveVnetTwice() {
+        manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
+        VirtualNetwork virtualNetwork =
+                manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
+        manager.removeVirtualNetwork(virtualNetwork.id());
+        manager.removeVirtualNetwork(virtualNetwork.id());
+    }
+
+    /**
      * Tests add and remove of virtual networks.
      */
     @Test
@@ -205,10 +217,6 @@
             manager.removeVirtualNetwork(virtualNetwork.id());
             assertEquals("The expected virtual network size does not match",
                          --remaining, manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1)).size());
-            // attempt to remove the same virtual network again.
-            manager.removeVirtualNetwork(virtualNetwork.id());
-            assertEquals("The expected virtual network size does not match",
-                         remaining, manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1)).size());
         }
         virtualNetworks = manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1));
         assertTrue("The virtual network set should be empty.", virtualNetworks.isEmpty());
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 81a9a3c..529a0cd 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
@@ -353,35 +353,35 @@
     @Override
     public void removeNetwork(NetworkId networkId) {
         // Make sure that the virtual network exists before attempting to remove it.
-        if (networkExists(networkId)) {
-            //Remove all the devices of this network
-            Set<VirtualDevice> deviceSet = getDevices(networkId);
-            if (deviceSet != null) {
-                deviceSet.forEach(virtualDevice -> removeDevice(networkId, virtualDevice.id()));
-            }
-            //TODO update both maps in one transaction.
+        checkState(networkExists(networkId), "The network does not exist.");
 
-            VirtualNetwork virtualNetwork = networkIdVirtualNetworkMap.remove(networkId);
-            if (virtualNetwork == null) {
-                return;
-            }
-            TenantId tenantId = virtualNetwork.tenantId();
-
-            Set<NetworkId> networkIdSet = new HashSet<>();
-            tenantIdNetworkIdSetMap.get(tenantId).forEach(networkId1 -> {
-                if (networkId1.id().equals(networkId.id())) {
-                    networkIdSet.add(networkId1);
-                }
-            });
-
-            tenantIdNetworkIdSetMap.compute(virtualNetwork.tenantId(), (id, existingNetworkIds) -> {
-                if (existingNetworkIds == null || existingNetworkIds.isEmpty()) {
-                    return new HashSet<>();
-                } else {
-                    return new HashSet<>(Sets.difference(existingNetworkIds, networkIdSet));
-                }
-            });
+        //Remove all the devices of this network
+        Set<VirtualDevice> deviceSet = getDevices(networkId);
+        if (deviceSet != null) {
+            deviceSet.forEach(virtualDevice -> removeDevice(networkId, virtualDevice.id()));
         }
+        //TODO update both maps in one transaction.
+
+        VirtualNetwork virtualNetwork = networkIdVirtualNetworkMap.remove(networkId);
+        if (virtualNetwork == null) {
+            return;
+        }
+        TenantId tenantId = virtualNetwork.tenantId();
+
+        Set<NetworkId> networkIdSet = new HashSet<>();
+        tenantIdNetworkIdSetMap.get(tenantId).forEach(networkId1 -> {
+            if (networkId1.id().equals(networkId.id())) {
+                networkIdSet.add(networkId1);
+            }
+        });
+
+        tenantIdNetworkIdSetMap.compute(virtualNetwork.tenantId(), (id, existingNetworkIds) -> {
+            if (existingNetworkIds == null || existingNetworkIds.isEmpty()) {
+                return new HashSet<>();
+            } else {
+                return new HashSet<>(Sets.difference(existingNetworkIds, networkIdSet));
+            }
+        });
     }
 
     /**
@@ -395,6 +395,7 @@
         return (networkIdVirtualNetworkMap.containsKey(networkId));
     }
 
+
     @Override
     public VirtualDevice addDevice(NetworkId networkId, DeviceId deviceId) {
         checkState(networkExists(networkId), "The network has not been added.");