Fix: resolve the service not found exception caused by openstack4j

Change-Id: I33a5c7e6b91758a61662a77a1b347fd0239219eb
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
index fe5f483..e8747cc 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackNetworkManager.java
@@ -17,6 +17,7 @@
 
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
@@ -26,6 +27,7 @@
 import org.onlab.packet.ARP;
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 import org.onlab.util.KryoNamespace;
@@ -51,9 +53,11 @@
 import org.onosproject.store.service.ConsistentMap;
 import org.onosproject.store.service.Serializer;
 import org.onosproject.store.service.StorageService;
+import org.openstack4j.model.common.IdEntity;
 import org.openstack4j.model.network.ExternalGateway;
 import org.openstack4j.model.network.IP;
 import org.openstack4j.model.network.Network;
+import org.openstack4j.model.network.NetworkType;
 import org.openstack4j.model.network.Port;
 import org.openstack4j.model.network.Router;
 import org.openstack4j.model.network.Subnet;
@@ -111,6 +115,8 @@
     private static final String ERR_DUPLICATE = " already exists";
     private static final String PORT_NAME_PREFIX_VM = "tap";
 
+    private static final int PREFIX_LENGTH = 32;
+
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected CoreService coreService;
@@ -356,6 +362,49 @@
     }
 
     @Override
+    public Set<IpPrefix> getFixedIpsByNetworkType(String type) {
+        if (type == null) {
+            return Sets.newHashSet();
+        }
+
+        Set<Network> networks = osNetworkStore.networks();
+        Set<String> networkIds = Sets.newConcurrentHashSet();
+
+        switch (type.toUpperCase()) {
+            case "FLAT" :
+                networkIds = networks.stream()
+                        .filter(n -> n.getNetworkType() == NetworkType.FLAT)
+                        .map(IdEntity::getId).collect(Collectors.toSet());
+                break;
+            case "VXLAN" :
+                networkIds = networks.stream()
+                        .filter(n -> n.getNetworkType() == NetworkType.VXLAN)
+                        .map(IdEntity::getId).collect(Collectors.toSet());
+                break;
+            case "VLAN" :
+                networkIds = networks.stream()
+                        .filter(n -> n.getNetworkType() == NetworkType.VLAN)
+                        .map(IdEntity::getId).collect(Collectors.toSet());
+                break;
+            default:
+                break;
+        }
+
+        Set<IP> ips = Sets.newConcurrentHashSet();
+        for (String networkId : networkIds) {
+            osNetworkStore.ports()
+                    .stream()
+                    .filter(p -> p.getNetworkId().equals(networkId))
+                    .filter(p -> p.getFixedIps() != null)
+                    .forEach(p -> ips.addAll(p.getFixedIps()));
+        }
+
+        return ips.stream().map(ip -> IpPrefix.valueOf(
+                IpAddress.valueOf(ip.getIpAddress()), PREFIX_LENGTH))
+                .collect(Collectors.toSet());
+    }
+
+    @Override
     public ExternalPeerRouter externalPeerRouter(IpAddress ipAddress) {
         if (externalPeerRouterMap.containsKey(ipAddress.toString())) {
             return externalPeerRouterMap.get(ipAddress.toString()).value();