OpenstackRouting refactoring

- Replace OpenstackPortInfo with HostService
- Replace OpenstackRoutingConfig with OpenstackNodeService
  (Remove OpenstackRoutingConfig)
- Rebased with 10330 (existing_vm)
- Added initialization process using OpenstackNodeListener

Change-Id: If2ce8eb86d242a7180c9154e1a0f1668b266bf1c
diff --git a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/AbstractVmHandler.java b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/AbstractVmHandler.java
index 9bf2baa..d7b7a8a 100644
--- a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/AbstractVmHandler.java
+++ b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/AbstractVmHandler.java
@@ -26,6 +26,7 @@
 import org.onosproject.net.host.HostEvent;
 import org.onosproject.net.host.HostListener;
 import org.onosproject.net.host.HostService;
+import org.onosproject.openstacknetworking.Constants;
 import org.slf4j.Logger;
 
 import java.util.Objects;
@@ -36,7 +37,7 @@
 
 import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static org.onlab.util.Tools.groupedThreads;
-import static org.onosproject.openstacknetworking.switching.Constants.*;
+import static org.onosproject.openstacknetworking.Constants.*;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
diff --git a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/Constants.java b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/Constants.java
deleted file mode 100644
index b173f29..0000000
--- a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/Constants.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.openstacknetworking.switching;
-
-import org.onlab.packet.Ip4Address;
-import org.onlab.packet.Ip4Prefix;
-import org.onlab.packet.IpPrefix;
-
-/**
- * Provides constants used in OpenStack node services.
- */
-public final class Constants {
-
-    private Constants() {
-    }
-
-    public static final String APP_ID = "org.onosproject.openstackswitching";
-
-    public static final String PORTNAME_PREFIX_VM = "tap";
-    public static final String PORTNAME_PREFIX_ROUTER = "qr-";
-    public static final String PORTNAME_PREFIX_TUNNEL = "vxlan";
-
-    // TODO remove this
-    public static final String ROUTER_INTERFACE = "network:router_interface";
-    public static final String DEVICE_OWNER_GATEWAY = "network:router_gateway";
-
-    public static final Ip4Address DNS_SERVER_IP = Ip4Address.valueOf("8.8.8.8");
-    public static final IpPrefix IP_PREFIX_ANY = Ip4Prefix.valueOf("0.0.0.0/0");
-    public static final int DHCP_INFINITE_LEASE = -1;
-
-    public static final String NETWORK_ID = "networkId";
-    public static final String PORT_ID = "portId";
-    public static final String VXLAN_ID = "vxlanId";
-    public static final String TENANT_ID = "tenantId";
-    public static final String GATEWAY_IP = "gatewayIp";
-    public static final String CREATE_TIME = "createTime";
-
-    public static final int SWITCHING_RULE_PRIORITY = 30000;
-    public static final int TUNNELTAG_RULE_PRIORITY = 30000;
-    public static final int ACL_RULE_PRIORITY = 30000;
-}
\ No newline at end of file
diff --git a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackArpHandler.java b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackArpHandler.java
index c855403..c31bfd9 100644
--- a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackArpHandler.java
+++ b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackArpHandler.java
@@ -48,7 +48,7 @@
 import java.util.Set;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.openstacknetworking.switching.Constants.*;
+import static org.onosproject.openstacknetworking.Constants.*;
 
 /**
  * Handles ARP packet from VMs.
diff --git a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSecurityGroupRulePopulator.java b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSecurityGroupRulePopulator.java
index 7477404..b963988 100644
--- a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSecurityGroupRulePopulator.java
+++ b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSecurityGroupRulePopulator.java
@@ -50,7 +50,7 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import static org.onosproject.openstacknetworking.switching.Constants.*;
+import static org.onosproject.openstacknetworking.Constants.*;
 
 /**
  * Populates flows rules for Security Groups of VMs.
diff --git a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java
index 5388e9b..55fce2c 100644
--- a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java
+++ b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingManager.java
@@ -16,7 +16,6 @@
 package org.onosproject.openstacknetworking.switching;
 
 import com.google.common.base.Strings;
-import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -27,7 +26,6 @@
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.VlanId;
-import org.onlab.util.Tools;
 import org.onosproject.core.CoreService;
 import org.onosproject.dhcp.DhcpService;
 import org.onosproject.dhcp.IpAssignment;
@@ -54,8 +52,6 @@
 import org.onosproject.openstackinterface.OpenstackNetwork;
 import org.onosproject.openstackinterface.OpenstackPort;
 import org.onosproject.openstackinterface.OpenstackSubnet;
-import org.onosproject.openstacknetworking.OpenstackPortInfo;
-import org.onosproject.openstacknetworking.OpenstackSwitchingService;
 import org.onosproject.openstacknode.OpenstackNode;
 import org.onosproject.openstacknode.OpenstackNodeEvent;
 import org.onosproject.openstacknode.OpenstackNodeListener;
@@ -64,7 +60,6 @@
 import org.slf4j.LoggerFactory;
 
 import java.util.Date;
-import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -74,7 +69,7 @@
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onosproject.net.AnnotationKeys.PORT_NAME;
-import static org.onosproject.openstacknetworking.switching.Constants.*;
+import static org.onosproject.openstacknetworking.Constants.*;
 
 @Service
 @Component(immediate = true)
@@ -82,7 +77,7 @@
  * Populates forwarding rules for VMs created by Openstack.
  */
 public final class OpenstackSwitchingManager extends AbstractProvider
-        implements OpenstackSwitchingService, HostProvider {
+        implements HostProvider {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
@@ -153,41 +148,6 @@
         // no probe is required
     }
 
-    @Override
-    // TODO remove this and openstackPortInfo
-    public Map<String, OpenstackPortInfo> openstackPortInfo() {
-        Map<String, OpenstackPortInfo> portInfoMap = Maps.newHashMap();
-
-        Tools.stream(hostService.getHosts()).filter(this::isValidHost).forEach(host -> {
-            Port port = deviceService.getPort(
-                    host.location().deviceId(),
-                    host.location().port());
-
-            OpenstackPortInfo portInfo = OpenstackPortInfo.builder()
-                    .setDeviceId(host.location().deviceId())
-                    .setHostMac(host.mac())
-                    .setNetworkId(host.annotations().value(NETWORK_ID))
-                    .setGatewayIP(Ip4Address.valueOf(host.annotations().value(GATEWAY_IP)))
-                    .setVni(Long.valueOf(host.annotations().value(VXLAN_ID)))
-                    .setHostIp(host.ipAddresses().stream().findFirst().get().getIp4Address())
-                    .build();
-
-            portInfoMap.put(port.annotations().value(PORT_NAME), portInfo);
-        });
-
-        return portInfoMap;
-    }
-
-    // TODO remove this and openstackPortInfo
-    private boolean isValidHost(Host host) {
-        return !host.ipAddresses().isEmpty() &&
-                host.annotations().value(VXLAN_ID) != null &&
-                host.annotations().value(NETWORK_ID) != null &&
-                host.annotations().value(TENANT_ID) != null &&
-                host.annotations().value(GATEWAY_IP) != null &&
-                host.annotations().value(PORT_ID) != null;
-    }
-
     private void processPortAdded(Port port) {
         // TODO check the node state is COMPLETE
         OpenstackPort osPort = openstackService.port(port);
diff --git a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingRulePopulator.java b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingRulePopulator.java
index 732be7d..b3707a8 100644
--- a/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingRulePopulator.java
+++ b/apps/openstacknetworking/switching/src/main/java/org/onosproject/openstacknetworking/switching/OpenstackSwitchingRulePopulator.java
@@ -47,7 +47,7 @@
 import java.util.Optional;
 
 import static org.onosproject.net.flow.instructions.ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_SET_TUNNEL_DST;
-import static org.onosproject.openstacknetworking.switching.Constants.*;
+import static org.onosproject.openstacknetworking.Constants.*;
 
 /**
  * Populates switching flow rules.