Fix openstack telemetry, networking, vtap app maven build

Change-Id: If86f0439bd0a4330dc19a3a67c83db836925701f
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
index 31f32bf..4f89c3c 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackNodeCodec.java
@@ -26,7 +26,7 @@
 import org.onosproject.openstacknode.api.OpenstackAuth;
 import org.onosproject.openstacknode.api.OpenstackNode;
 import org.onosproject.openstacknode.api.OpenstackPhyInterface;
-import org.onosproject.openstacknode.impl.DefaultOpenstackNode;
+import org.onosproject.openstacknode.api.DefaultOpenstackNode;
 import org.slf4j.Logger;
 
 import java.util.ArrayList;
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNode.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNode.java
deleted file mode 100644
index e6592b0..0000000
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNode.java
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- * Copyright 2017-present Open Networking Foundation
- *
- * 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.openstacknode.impl;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Strings;
-import org.onlab.osgi.DefaultServiceDirectory;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.MacAddress;
-import org.onosproject.core.GroupId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.group.DefaultGroupKey;
-import org.onosproject.net.group.GroupKey;
-import org.onosproject.openstacknode.api.NodeState;
-import org.onosproject.openstacknode.api.OpenstackAuth;
-import org.onosproject.openstacknode.api.OpenstackNode;
-import org.onosproject.openstacknode.api.OpenstackPhyInterface;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Objects;
-import java.util.Optional;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.onosproject.net.AnnotationKeys.PORT_MAC;
-import static org.onosproject.net.AnnotationKeys.PORT_NAME;
-import static org.onosproject.openstacknode.api.Constants.DEFAULT_TUNNEL;
-import static org.onosproject.openstacknode.api.Constants.PATCH_INTG_BRIDGE;
-
-/**
- * Representation of a openstack node.
- */
-public class DefaultOpenstackNode implements OpenstackNode {
-
-    private final String hostname;
-    private final NodeType type;
-    private final DeviceId intgBridge;
-    private final IpAddress managementIp;
-    private final IpAddress dataIp;
-    private final String vlanIntf;
-    private final String uplinkPort;
-    private final NodeState state;
-    private final Collection<OpenstackPhyInterface> phyIntfs;
-    private final OpenstackAuth auth;
-    private final String endPoint;
-
-    private static final String NOT_NULL_MSG = "Node % cannot be null";
-
-    private static final String OVSDB = "ovsdb:";
-
-    /**
-     * A default constructor of Openstack Node.
-     *
-     * @param hostname      hostname
-     * @param type          node type
-     * @param intgBridge    integration bridge
-     * @param managementIp  management IP address
-     * @param dataIp        data IP address
-     * @param vlanIntf      VLAN interface
-     * @param uplinkPort    uplink port name
-     * @param state         node state
-     * @param phyIntfs      physical interfaces
-     * @param auth          keystone authentication info
-     * @param endPoint      openstack endpoint URL
-     */
-    protected DefaultOpenstackNode(String hostname, NodeType type,
-                                   DeviceId intgBridge,
-                                   IpAddress managementIp,
-                                   IpAddress dataIp,
-                                   String vlanIntf,
-                                   String uplinkPort,
-                                   NodeState state,
-                                   Collection<OpenstackPhyInterface> phyIntfs,
-                                   OpenstackAuth auth,
-                                   String endPoint) {
-        this.hostname = hostname;
-        this.type = type;
-        this.intgBridge = intgBridge;
-        this.managementIp = managementIp;
-        this.dataIp = dataIp;
-        this.vlanIntf = vlanIntf;
-        this.uplinkPort = uplinkPort;
-        this.state = state;
-        this.phyIntfs = phyIntfs;
-        this.auth = auth;
-        this.endPoint = endPoint;
-    }
-
-    @Override
-    public String hostname() {
-        return hostname;
-    }
-
-    @Override
-    public NodeType type() {
-        return type;
-    }
-
-    @Override
-    public DeviceId ovsdb() {
-        return DeviceId.deviceId(OVSDB + managementIp().toString());
-    }
-
-    @Override
-    public DeviceId intgBridge() {
-        return intgBridge;
-    }
-
-    @Override
-    public IpAddress managementIp() {
-        return managementIp;
-    }
-
-    @Override
-    public IpAddress dataIp() {
-        return dataIp;
-    }
-
-    @Override
-    public String vlanIntf() {
-        return vlanIntf;
-    }
-
-    @Override
-    public String uplinkPort() {
-        return uplinkPort;
-    }
-
-    @Override
-    public NodeState state() {
-        return state;
-    }
-
-    @Override
-    public GroupKey gatewayGroupKey(NetworkMode mode) {
-        return new DefaultGroupKey(intgBridge.toString().concat(mode.name()).getBytes());
-    }
-
-    @Override
-    public PortNumber uplinkPortNum() {
-        if (uplinkPort == null) {
-            return null;
-        }
-
-        DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
-        Port port = deviceService.getPorts(intgBridge).stream()
-                .filter(p -> p.isEnabled() &&
-                        Objects.equals(p.annotations().value(PORT_NAME), uplinkPort))
-                .findAny().orElse(null);
-
-        return port != null ? port.number() : null;
-
-    }
-    @Override
-    public PortNumber tunnelPortNum() {
-        if (dataIp == null) {
-            return null;
-        }
-        DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
-        Port port = deviceService.getPorts(intgBridge).stream()
-                .filter(p -> p.isEnabled() &&
-                        Objects.equals(p.annotations().value(PORT_NAME), DEFAULT_TUNNEL))
-                .findAny().orElse(null);
-        return port != null ? port.number() : null;
-    }
-
-    @Override
-    public PortNumber vlanPortNum() {
-        if (vlanIntf == null) {
-            return null;
-        }
-        DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
-        Port port = deviceService.getPorts(intgBridge).stream()
-                .filter(p -> p.isEnabled() &&
-                        Objects.equals(p.annotations().value(PORT_NAME), vlanIntf))
-                .findAny().orElse(null);
-        return port != null ? port.number() : null;
-    }
-
-    @Override
-    public PortNumber patchPortNum() {
-        if (type == NodeType.COMPUTE) {
-            return null;
-        }
-        DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
-        Port port = deviceService.getPorts(intgBridge).stream()
-                .filter(p -> p.isEnabled() &&
-                        Objects.equals(p.annotations().value(PORT_NAME), PATCH_INTG_BRIDGE))
-                .findAny().orElse(null);
-        return port != null ? port.number() : null;
-    }
-
-    @Override
-    public MacAddress vlanPortMac() {
-        if (vlanIntf == null) {
-            return null;
-        }
-        DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
-        Port port = deviceService.getPorts(intgBridge).stream()
-                .filter(p -> p.annotations().value(PORT_NAME).equals(vlanIntf))
-                .findAny().orElse(null);
-        return port != null ? MacAddress.valueOf(port.annotations().value(PORT_MAC)) : null;
-    }
-
-    @Override
-    public GroupId gatewayGroupId(NetworkMode mode) {
-        return new GroupId(intgBridge.toString().concat(mode.name()).hashCode());
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof DefaultOpenstackNode) {
-            DefaultOpenstackNode that = (DefaultOpenstackNode) obj;
-            return Objects.equals(hostname, that.hostname) &&
-                    Objects.equals(type, that.type) &&
-                    Objects.equals(intgBridge, that.intgBridge) &&
-                    Objects.equals(managementIp, that.managementIp) &&
-                    Objects.equals(dataIp, that.dataIp) &&
-                    Objects.equals(uplinkPort, that.uplinkPort) &&
-                    Objects.equals(vlanIntf, that.vlanIntf) &&
-                    Objects.equals(phyIntfs, that.phyIntfs) &&
-                    Objects.equals(auth, that.auth) &&
-                    Objects.equals(endPoint, that.endPoint);
-        }
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(hostname,
-                type,
-                intgBridge,
-                managementIp,
-                dataIp,
-                vlanIntf,
-                uplinkPort,
-                phyIntfs,
-                auth,
-                endPoint);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(getClass())
-                .add("hostname", hostname)
-                .add("type", type)
-                .add("integrationBridge", intgBridge)
-                .add("managementIp", managementIp)
-                .add("dataIp", dataIp)
-                .add("vlanIntf", vlanIntf)
-                .add("uplinkPort", uplinkPort)
-                .add("state", state)
-                .add("phyIntfs", phyIntfs)
-                .add("auth", auth)
-                .add("endpoint", endPoint)
-                .toString();
-    }
-
-    @Override
-    public OpenstackNode updateState(NodeState newState) {
-        return new Builder()
-                .type(type)
-                .hostname(hostname)
-                .intgBridge(intgBridge)
-                .managementIp(managementIp)
-                .dataIp(dataIp)
-                .vlanIntf(vlanIntf)
-                .uplinkPort(uplinkPort)
-                .state(newState)
-                .phyIntfs(phyIntfs)
-                .authentication(auth)
-                .endPoint(endPoint)
-                .build();
-    }
-
-    @Override
-    public Collection<OpenstackPhyInterface> phyIntfs() {
-
-        if (phyIntfs == null) {
-            return new ArrayList<>();
-        }
-
-        return phyIntfs;
-    }
-
-    @Override
-    public PortNumber phyIntfPortNum(String providerPhysnet) {
-        Optional<OpenstackPhyInterface> openstackPhyInterface =
-                phyIntfs.stream().filter(p -> p.network().equals(providerPhysnet)).findAny();
-
-        if (openstackPhyInterface.isPresent()) {
-            DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
-            Port port = deviceService.getPorts(intgBridge).stream()
-                    .filter(p -> p.isEnabled() &&
-                            Objects.equals(p.annotations().value(PORT_NAME), openstackPhyInterface.get().intf()))
-                    .findAny().orElse(null);
-
-            return port != null ? port.number() : null;
-        } else {
-            return null;
-        }
-
-    }
-
-    @Override
-    public OpenstackAuth authentication() {
-        return auth;
-    }
-
-    @Override
-    public String endPoint() {
-        return endPoint;
-    }
-
-    /**
-     * Returns new builder instance.
-     *
-     * @return openstack node builder
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    /**
-     * Returns new builder instance with the given node as a default value.
-     *
-     * @param osNode openstack node
-     * @return openstack node builder
-     */
-    public static Builder from(OpenstackNode osNode) {
-        return new Builder()
-                .hostname(osNode.hostname())
-                .type(osNode.type())
-                .intgBridge(osNode.intgBridge())
-                .managementIp(osNode.managementIp())
-                .dataIp(osNode.dataIp())
-                .vlanIntf(osNode.vlanIntf())
-                .uplinkPort(osNode.uplinkPort())
-                .state(osNode.state())
-                .phyIntfs(osNode.phyIntfs())
-                .authentication(osNode.authentication())
-                .endPoint(osNode.endPoint());
-    }
-
-    /**
-     * A builder class for openstack Node.
-     */
-    public static final class Builder implements OpenstackNode.Builder {
-
-        private String hostname;
-        private NodeType type;
-        private DeviceId intgBridge;
-        private IpAddress managementIp;
-        private IpAddress dataIp;
-        private String vlanIntf;
-        private String uplinkPort;
-        private NodeState state;
-        private Collection<OpenstackPhyInterface> phyIntfs;
-        private OpenstackAuth auth;
-        private String endPoint;
-
-        // private constructor not intended to use from external
-        private Builder() {
-        }
-
-        @Override
-        public DefaultOpenstackNode build() {
-            checkArgument(hostname != null, NOT_NULL_MSG, "hostname");
-            checkArgument(type != null, NOT_NULL_MSG, "type");
-            checkArgument(state != null, NOT_NULL_MSG, "state");
-            checkArgument(managementIp != null, NOT_NULL_MSG, "management IP");
-
-            if (type != NodeType.CONTROLLER) {
-                checkArgument(intgBridge != null, NOT_NULL_MSG, "integration bridge");
-
-                if (dataIp == null && Strings.isNullOrEmpty(vlanIntf)) {
-                    throw new IllegalArgumentException("Either data IP or VLAN interface is required");
-                }
-            } else {
-                checkArgument(endPoint != null, NOT_NULL_MSG, "endpoint URL");
-            }
-
-            if (type == NodeType.GATEWAY && uplinkPort == null) {
-                throw new IllegalArgumentException("Uplink port is required for gateway node");
-            }
-
-            return new DefaultOpenstackNode(hostname,
-                    type,
-                    intgBridge,
-                    managementIp,
-                    dataIp,
-                    vlanIntf,
-                    uplinkPort,
-                    state,
-                    phyIntfs,
-                    auth,
-                    endPoint);
-        }
-
-        @Override
-        public Builder hostname(String hostname) {
-            if (!Strings.isNullOrEmpty(hostname)) {
-                this.hostname = hostname;
-            }
-            return this;
-        }
-
-        @Override
-        public Builder type(NodeType type) {
-            this.type = type;
-            return this;
-        }
-
-        @Override
-        public Builder intgBridge(DeviceId intgBridge) {
-            this.intgBridge = intgBridge;
-            return this;
-        }
-
-        @Override
-        public Builder managementIp(IpAddress managementIp) {
-            this.managementIp = managementIp;
-            return this;
-        }
-
-        @Override
-        public Builder dataIp(IpAddress dataIp) {
-            this.dataIp = dataIp;
-            return this;
-        }
-
-        @Override
-        public Builder vlanIntf(String vlanIntf) {
-            this.vlanIntf = vlanIntf;
-            return this;
-        }
-
-        @Override
-        public Builder uplinkPort(String uplinkPort) {
-            this.uplinkPort = uplinkPort;
-            return this;
-        }
-
-        @Override
-        public Builder state(NodeState state) {
-            this.state = state;
-            return this;
-        }
-
-        @Override
-        public Builder phyIntfs(Collection<OpenstackPhyInterface> phyIntfs) {
-            this.phyIntfs = phyIntfs;
-            return this;
-        }
-
-        @Override
-        public Builder authentication(OpenstackAuth auth) {
-            this.auth = auth;
-            return this;
-        }
-
-        @Override
-        public Builder endPoint(String endPoint) {
-            this.endPoint = endPoint;
-            return this;
-        }
-    }
-}
-
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java
index 4b40775..d766473 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/impl/DistributedOpenstackNodeStore.java
@@ -25,6 +25,7 @@
 import org.onlab.util.KryoNamespace;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
+import org.onosproject.openstacknode.api.DefaultOpenstackNode;
 import org.onosproject.openstacknode.api.NodeState;
 import org.onosproject.openstacknode.api.OpenstackNode;
 import org.onosproject.openstacknode.api.OpenstackNodeEvent;