ONOS-2622
Fix error of north app and update onos-app-vtnrsc package

Change-Id: I375002ff26d2ab3ada879a92a1d47bcdb8980054
diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java
new file mode 100644
index 0000000..24ddb9f
--- /dev/null
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java
@@ -0,0 +1,100 @@
+/*

+ * Copyright 2015 Open Porting 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.vtnrsc.virtualport;

+

+import java.util.Collection;

+

+import org.onosproject.net.DeviceId;

+import org.onosproject.vtnrsc.TenantId;

+import org.onosproject.vtnrsc.TenantNetworkId;

+import org.onosproject.vtnrsc.VirtualPort;

+import org.onosproject.vtnrsc.VirtualPortId;

+

+/**

+ * Service for interacting with the inventory of virtualPort.

+ */

+public interface VirtualPortService {

+    /**

+     * Returns if the virtualPort is existed.

+     *

+     * @param virtualPortId virtualPort identifier

+     * @return true or false if one with the given identifier is not existed.

+     */

+    boolean exists(VirtualPortId virtualPortId);

+

+    /**

+     * Returns the virtualPort with the identifier.

+     *

+     * @param virtualPortId virtualPort ID

+     * @return VirtualPort or null if one with the given ID is not know.

+     */

+    VirtualPort getPort(VirtualPortId virtualPortId);

+

+    /**

+     * Returns the collection of the currently known virtualPort.

+     * @return collection of VirtualPort.

+     */

+    Collection<VirtualPort> getPorts();

+

+    /**

+     * Returns the collection of the virtualPorts associated with the networkId.

+     *

+     * @param networkId  the network identifer

+     * @return collection of virtualPort.

+     */

+    Collection<VirtualPort> getPorts(TenantNetworkId networkId);

+

+    /**

+     * Returns the collection of the virtualPorts associated with the tenantId.

+     *

+     * @param tenantId   the tenant identifier

+     * @return collection of virtualPorts.

+     */

+    Collection<VirtualPort> getPorts(TenantId tenantId);

+

+    /**

+     * Returns the collection of the virtualPorts associated with the deviceId.

+     *

+     * @param deviceId   the device identifier

+     * @return collection of virtualPort.

+     */

+    Collection<VirtualPort> getPorts(DeviceId deviceId);

+

+    /**

+     * Creates virtualPorts by virtualPorts.

+     *

+     * @param virtualPorts the iterable collection of virtualPorts

+     * @return true if all given identifiers created successfully.

+     */

+    boolean createPorts(Iterable<VirtualPort> virtualPorts);

+

+    /**

+     * Updates virtualPorts by virtualPorts.

+     *

+     * @param virtualPorts the iterable  collection of virtualPorts

+     * @return true if all given identifiers updated successfully.

+     */

+    boolean updatePorts(Iterable<VirtualPort> virtualPorts);

+

+    /**

+     * Deletes virtualPortIds by virtualPortIds.

+     *

+     * @param virtualPortIds the iterable collection of virtualPort identifiers

+     * @return true or false if one with the given identifier to delete is

+     *         successfully.

+     */

+    boolean removePorts(Iterable<VirtualPortId> virtualPortIds);

+}

diff --git a/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
new file mode 100644
index 0000000..8477b32
--- /dev/null
+++ b/apps/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
@@ -0,0 +1,182 @@
+/*

+ * Copyright 2015 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.vtnrsc.virtualport.impl;

+

+import static com.google.common.base.Preconditions.checkNotNull;

+

+import java.util.Collection;

+import java.util.Collections;

+import java.util.concurrent.ConcurrentHashMap;

+

+import org.apache.felix.scr.annotations.Activate;

+import org.apache.felix.scr.annotations.Component;

+import org.apache.felix.scr.annotations.Deactivate;

+import org.apache.felix.scr.annotations.Reference;

+import org.apache.felix.scr.annotations.ReferenceCardinality;

+import org.apache.felix.scr.annotations.Service;

+import org.onosproject.net.DeviceId;

+import org.onosproject.store.service.StorageService;

+import org.onosproject.vtnrsc.TenantId;

+import org.onosproject.vtnrsc.TenantNetworkId;

+import org.onosproject.vtnrsc.VirtualPort;

+import org.onosproject.vtnrsc.VirtualPortId;

+import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;

+import org.onosproject.vtnrsc.virtualport.VirtualPortService;

+import org.slf4j.Logger;

+import org.slf4j.LoggerFactory;

+

+/**

+ * Provides implementation of the VirtualPort APIs.

+ */

+@Component(immediate = true)

+@Service

+public class VirtualPortManager implements VirtualPortService {

+

+    private final Logger log = LoggerFactory.getLogger(getClass());

+

+    private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null";

+    private static final String VIRTUALPORT_NOT_NULL = "VirtualPort  cannot be null";

+    private static final String TENANTID_NOT_NULL = "TenantId  cannot be null";

+    private static final String NETWORKID_NOT_NULL = "NetworkId  cannot be null";

+    private static final String DEVICEID_NOT_NULL = "DeviceId  cannot be null";

+

+    protected ConcurrentHashMap<VirtualPortId, VirtualPort> vPortStore =

+            new ConcurrentHashMap<>();

+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)

+    protected StorageService storageService;

+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)

+    protected TenantNetworkService networkService;

+

+    @Activate

+    public void activate() {

+        log.info("Started");

+    }

+

+    @Deactivate

+    public void deactivate() {

+        vPortStore.clear();

+        log.info("Stoppped");

+    }

+

+    @Override

+    public boolean exists(VirtualPortId vPortId) {

+        checkNotNull(vPortId, VIRTUALPORT_ID_NULL);

+        return vPortStore.containsKey(vPortId);

+    }

+

+    @Override

+    public VirtualPort getPort(VirtualPortId vPortId) {

+        checkNotNull(vPortId, VIRTUALPORT_ID_NULL);

+        return vPortStore.get(vPortId);

+    }

+

+    @Override

+    public Collection<VirtualPort> getPorts() {

+        return Collections.unmodifiableCollection(vPortStore.values());

+    }

+

+    @Override

+    public Collection<VirtualPort> getPorts(TenantNetworkId networkId) {

+        checkNotNull(networkId, NETWORKID_NOT_NULL);

+        Collection<VirtualPort> vPortWithNetworkIds = vPortStore.values();

+        for (VirtualPort vPort : vPortWithNetworkIds) {

+            if (!vPort.networkId().equals(networkId)) {

+                vPortWithNetworkIds.remove(vPort);

+            }

+        }

+        return vPortWithNetworkIds;

+    }

+

+    @Override

+    public Collection<VirtualPort> getPorts(TenantId tenantId) {

+        checkNotNull(tenantId, TENANTID_NOT_NULL);

+        Collection<VirtualPort> vPortWithTenantIds = vPortStore.values();

+        for (VirtualPort vPort : vPortWithTenantIds) {

+            if (!vPort.tenantId().equals(tenantId)) {

+                vPortWithTenantIds.remove(vPort);

+            }

+        }

+        return vPortWithTenantIds;

+    }

+

+    @Override

+    public Collection<VirtualPort> getPorts(DeviceId deviceId) {

+        checkNotNull(deviceId, DEVICEID_NOT_NULL);

+        Collection<VirtualPort> vPortWithDeviceIds = vPortStore.values();

+        for (VirtualPort vPort : vPortWithDeviceIds) {

+            if (!vPort.deviceId().equals(deviceId)) {

+                vPortWithDeviceIds.remove(vPort);

+            }

+        }

+        return vPortWithDeviceIds;

+    }

+

+    @Override

+    public boolean createPorts(Iterable<VirtualPort> vPorts) {

+        checkNotNull(vPorts, VIRTUALPORT_NOT_NULL);

+        for (VirtualPort vPort : vPorts) {

+            log.debug("vPortId is  {} ", vPort.portId().toString());

+            vPortStore.put(vPort.portId(), vPort);

+            if (!vPortStore.containsKey(vPort.portId())) {

+                log.debug("The virtualPort is created failed whose identifier is {} ",

+                          vPort.portId().toString());

+                return false;

+            }

+        }

+        return true;

+    }

+

+    @Override

+    public boolean updatePorts(Iterable<VirtualPort> vPorts) {

+        checkNotNull(vPorts, VIRTUALPORT_NOT_NULL);

+        if (vPorts != null) {

+            for (VirtualPort vPort : vPorts) {

+                vPortStore.put(vPort.portId(), vPort);

+                if (!vPortStore.containsKey(vPort.portId())) {

+                    log.debug("The virtualPort is not exist whose identifier is {}",

+                              vPort.portId().toString());

+                    return false;

+                }

+

+                vPortStore.put(vPort.portId(), vPort);

+

+                if (!vPort.equals(vPortStore.get(vPort.portId()))) {

+                    log.debug("The virtualPort is updated failed whose  identifier is {}",

+                              vPort.portId().toString());

+                    return false;

+                }

+            }

+        }

+        return true;

+    }

+

+    @Override

+    public boolean removePorts(Iterable<VirtualPortId> vPortIds) {

+        checkNotNull(vPortIds, VIRTUALPORT_ID_NULL);

+        if (vPortIds != null) {

+            for (VirtualPortId vPortId : vPortIds) {

+                vPortStore.remove(vPortId);

+                if (vPortStore.containsKey(vPortId)) {

+                    log.debug("The virtualPort is removed failed whose identifier is {}",

+                              vPortId.toString());

+                    return false;

+                }

+            }

+        }

+        return true;

+    }

+

+}