From 69b36d5d11e81e28e56b46ba44e4b8cd701c5867 Mon Sep 17 00:00:00 2001 From: lishuai Date: Wed, 21 Oct 2015 16:50:16 +0800 Subject: [PATCH] [ONOS-3188] Add the method: Returns the virtualPort associated with the fixedIP. Change-Id: I4f66287a4186cc103070c9182dae64f81fcd6488 --- .../virtualport/VirtualPortService.java | 9 ++++++++ .../virtualport/impl/VirtualPortManager.java | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java index 05ebccf908..0a3ea2cd44 100644 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java +++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/VirtualPortService.java @@ -18,6 +18,7 @@ package org.onosproject.vtnrsc.virtualport; import java.util.Collection; import org.onosproject.net.DeviceId; +import org.onosproject.vtnrsc.FixedIp; import org.onosproject.vtnrsc.TenantId; import org.onosproject.vtnrsc.TenantNetworkId; import org.onosproject.vtnrsc.VirtualPort; @@ -43,6 +44,14 @@ public interface VirtualPortService { */ VirtualPort getPort(VirtualPortId virtualPortId); + /** + * Returns the virtualPort associated with the fixedIP. + * + * @param fixedIP the fixedIP identifier + * @return virtualPort. + */ + VirtualPort getPort(FixedIp fixedIP); + /** * Returns the collection of the currently known virtualPort. * @return collection of VirtualPort. diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java index 926809c99b..c45373b99e 100644 --- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java +++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java @@ -17,9 +17,12 @@ package org.onosproject.vtnrsc.virtualport.impl; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -68,6 +71,7 @@ public class VirtualPortManager implements VirtualPortService { 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"; + private static final String FIXEDIP_NOT_NULL = "FixedIp cannot be null"; protected Map vPortStore; protected ApplicationId appId; @@ -124,6 +128,25 @@ public class VirtualPortManager implements VirtualPortService { return vPortStore.get(vPortId); } + @Override + public VirtualPort getPort(FixedIp fixedIP) { + checkNotNull(fixedIP, FIXEDIP_NOT_NULL); + List vPorts = new ArrayList<>(); + vPortStore.values().stream().forEach(p -> { + Iterator fixedIps = p.fixedIps().iterator(); + while (fixedIps.hasNext()) { + if (fixedIps.next().equals(fixedIP)) { + vPorts.add(p); + break; + } + } + }); + if (vPorts.size() == 0) { + return null; + } + return vPorts.get(0); + } + @Override public Collection getPorts() { return Collections.unmodifiableCollection(vPortStore.values());