[ONOS-3583] Update VTNRSC's bug:null exception.
Change-Id: I6edbef13270acf75899bccca383602caa5b1a562
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java
index 37a2c50..6781b60 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/service/impl/VtnRscManager.java
@@ -227,6 +227,10 @@
checkNotNull(event, EVENT_NOT_NULL);
Host host = event.subject();
String ifaceId = host.annotations().value(IFACEID);
+ if (ifaceId == null) {
+ log.error("The ifaceId of Host is null");
+ return;
+ }
VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
TenantId tenantId = virtualPortService.getPort(hPortId).tenantId();
DeviceId deviceId = host.location().deviceId();
@@ -477,18 +481,21 @@
checkNotNull(deviceId, DEVICEID_NOT_NULL);
checkNotNull(tenantId, TENANTID_NOT_NULL);
Set<Host> hostSet = hostService.getConnectedHosts(deviceId);
- for (Host h : hostSet) {
- String ifaceId = h.annotations().value(IFACEID);
- VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
- if (virtualPortService.getPort(hPortId).tenantId() != tenantId) {
- hostSet.remove(h);
- } else {
- if (!isServiceFunction(hPortId)) {
- hostSet.remove(h);
+ Set<Host> sfcHostSet = new HashSet<Host>();
+ if (hostSet != null) {
+ for (Host h : hostSet) {
+ String ifaceId = h.annotations().value(IFACEID);
+ if (ifaceId != null) {
+ VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
+ if (virtualPortService.getPort(hPortId).tenantId().tenantId()
+ .equals(tenantId.tenantId())
+ && isServiceFunction(hPortId)) {
+ sfcHostSet.add(h);
+ }
}
}
}
- if (hostSet.size() == 1 && hostSet.contains(host)) {
+ if (sfcHostSet.size() == 1 && sfcHostSet.contains(host)) {
return true;
}
return false;
@@ -509,18 +516,21 @@
checkNotNull(deviceId, DEVICEID_NOT_NULL);
checkNotNull(tenantId, TENANTID_NOT_NULL);
Set<Host> hostSet = hostService.getConnectedHosts(deviceId);
- for (Host h : hostSet) {
- String ifaceId = h.annotations().value(IFACEID);
- VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
- if (virtualPortService.getPort(hPortId).tenantId() != tenantId) {
- hostSet.remove(h);
- } else {
- if (isServiceFunction(hPortId)) {
- hostSet.remove(h);
+ Set<Host> sfcHostSet = new HashSet<Host>();
+ if (hostSet != null) {
+ for (Host h : hostSet) {
+ String ifaceId = h.annotations().value(IFACEID);
+ if (ifaceId != null) {
+ VirtualPortId hPortId = VirtualPortId.portId(ifaceId);
+ if (virtualPortService.getPort(hPortId).tenantId().tenantId()
+ .equals(tenantId.tenantId())
+ && !isServiceFunction(hPortId)) {
+ sfcHostSet.add(h);
+ }
}
}
}
- if (hostSet.size() == 1 && hostSet.contains(host)) {
+ if (sfcHostSet.size() == 1 && sfcHostSet.contains(host)) {
return true;
}
return false;