Phaneendra Manda
Committed by Jonathan Hart

[ONOS-4895] Add a method to get VirtualPort based on mac

Change-Id: I3cd6c1ce43f33315f6b73342c6f6393376fff8de
...@@ -20,6 +20,7 @@ import java.util.concurrent.ConcurrentHashMap; ...@@ -20,6 +20,7 @@ import java.util.concurrent.ConcurrentHashMap;
20 import java.util.concurrent.ConcurrentMap; 20 import java.util.concurrent.ConcurrentMap;
21 21
22 import org.onlab.packet.IpAddress; 22 import org.onlab.packet.IpAddress;
23 +import org.onlab.packet.MacAddress;
23 import org.onosproject.net.DeviceId; 24 import org.onosproject.net.DeviceId;
24 import org.onosproject.vtnrsc.FixedIp; 25 import org.onosproject.vtnrsc.FixedIp;
25 import org.onosproject.vtnrsc.TenantId; 26 import org.onosproject.vtnrsc.TenantId;
...@@ -52,6 +53,11 @@ public class VirtualPortAdapter implements VirtualPortService { ...@@ -52,6 +53,11 @@ public class VirtualPortAdapter implements VirtualPortService {
52 } 53 }
53 54
54 @Override 55 @Override
56 + public VirtualPort getPort(MacAddress mac) {
57 + return null;
58 + }
59 +
60 + @Override
55 public Collection<VirtualPort> getPorts() { 61 public Collection<VirtualPort> getPorts() {
56 return null; 62 return null;
57 } 63 }
......
...@@ -18,6 +18,7 @@ package org.onosproject.vtnrsc.virtualport; ...@@ -18,6 +18,7 @@ package org.onosproject.vtnrsc.virtualport;
18 import java.util.Collection; 18 import java.util.Collection;
19 19
20 import org.onlab.packet.IpAddress; 20 import org.onlab.packet.IpAddress;
21 +import org.onlab.packet.MacAddress;
21 import org.onosproject.event.ListenerService; 22 import org.onosproject.event.ListenerService;
22 import org.onosproject.net.DeviceId; 23 import org.onosproject.net.DeviceId;
23 import org.onosproject.vtnrsc.FixedIp; 24 import org.onosproject.vtnrsc.FixedIp;
...@@ -55,6 +56,14 @@ public interface VirtualPortService extends ListenerService<VirtualPortEvent, Vi ...@@ -55,6 +56,14 @@ public interface VirtualPortService extends ListenerService<VirtualPortEvent, Vi
55 VirtualPort getPort(FixedIp fixedIP); 56 VirtualPort getPort(FixedIp fixedIP);
56 57
57 /** 58 /**
59 + * Returns the virtualPort associated with the mac address.
60 + *
61 + * @param mac the mac address
62 + * @return virtualPort.
63 + */
64 + VirtualPort getPort(MacAddress mac);
65 +
66 + /**
58 * Returns the virtualPort associated with the networkId and ip. 67 * Returns the virtualPort associated with the networkId and ip.
59 * 68 *
60 * @param networkId the TenantNetworkId identifier 69 * @param networkId the TenantNetworkId identifier
......
...@@ -31,6 +31,7 @@ import org.apache.felix.scr.annotations.Reference; ...@@ -31,6 +31,7 @@ import org.apache.felix.scr.annotations.Reference;
31 import org.apache.felix.scr.annotations.ReferenceCardinality; 31 import org.apache.felix.scr.annotations.ReferenceCardinality;
32 import org.apache.felix.scr.annotations.Service; 32 import org.apache.felix.scr.annotations.Service;
33 import org.onlab.packet.IpAddress; 33 import org.onlab.packet.IpAddress;
34 +import org.onlab.packet.MacAddress;
34 import org.onlab.util.KryoNamespace; 35 import org.onlab.util.KryoNamespace;
35 import org.onosproject.core.ApplicationId; 36 import org.onosproject.core.ApplicationId;
36 import org.onosproject.core.CoreService; 37 import org.onosproject.core.CoreService;
...@@ -79,6 +80,7 @@ implements VirtualPortService { ...@@ -79,6 +80,7 @@ implements VirtualPortService {
79 private static final String NETWORKID_NOT_NULL = "NetworkId cannot be null"; 80 private static final String NETWORKID_NOT_NULL = "NetworkId cannot be null";
80 private static final String DEVICEID_NOT_NULL = "DeviceId cannot be null"; 81 private static final String DEVICEID_NOT_NULL = "DeviceId cannot be null";
81 private static final String FIXEDIP_NOT_NULL = "FixedIp cannot be null"; 82 private static final String FIXEDIP_NOT_NULL = "FixedIp cannot be null";
83 + private static final String MAC_NOT_NULL = "Mac address cannot be null";
82 private static final String IP_NOT_NULL = "Ip cannot be null"; 84 private static final String IP_NOT_NULL = "Ip cannot be null";
83 private static final String EVENT_NOT_NULL = "event cannot be null"; 85 private static final String EVENT_NOT_NULL = "event cannot be null";
84 86
...@@ -164,6 +166,21 @@ implements VirtualPortService { ...@@ -164,6 +166,21 @@ implements VirtualPortService {
164 } 166 }
165 167
166 @Override 168 @Override
169 + public VirtualPort getPort(MacAddress mac) {
170 + checkNotNull(mac, MAC_NOT_NULL);
171 + List<VirtualPort> vPorts = new ArrayList<>();
172 + vPortStore.values().stream().forEach(p -> {
173 + if (p.macAddress().equals(mac)) {
174 + vPorts.add(p);
175 + }
176 + });
177 + if (vPorts.size() == 0) {
178 + return null;
179 + }
180 + return vPorts.get(0);
181 + }
182 +
183 + @Override
167 public VirtualPort getPort(TenantNetworkId networkId, IpAddress ip) { 184 public VirtualPort getPort(TenantNetworkId networkId, IpAddress ip) {
168 checkNotNull(networkId, NETWORKID_NOT_NULL); 185 checkNotNull(networkId, NETWORKID_NOT_NULL);
169 checkNotNull(ip, IP_NOT_NULL); 186 checkNotNull(ip, IP_NOT_NULL);
......