Fix: associate tunnel ingress rules with network events
Change-Id: If5e5ca996d6c3c106450454c3a944a3c9871a6b9
(cherry picked from commit b689e57976810f5c80aed99f5c4d1c8c37f4016b)
diff --git a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtSecurityGroupHandler.java b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtSecurityGroupHandler.java
index c4802a6..09cc288 100644
--- a/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtSecurityGroupHandler.java
+++ b/apps/kubevirt-networking/app/src/main/java/org/onosproject/kubevirtnetworking/impl/KubevirtSecurityGroupHandler.java
@@ -379,6 +379,23 @@
if (deviceId == null) {
return;
}
+
+ // we check whether the given device is available from the store
+ // if not we will wait until the device is eventually created
+ // FIXME: it would be better to listen to device event to perform
+ // pipeline initialization rather on network events.
+ while (true) {
+ if (deviceService.getDevice(deviceId) != null) {
+ break;
+ } else {
+ try {
+ sleep(SLEEP_MS);
+ } catch (InterruptedException e) {
+ log.error("Failed to install security group default rules.");
+ }
+ }
+ }
+
initializeTenantIngressTable(deviceId, install);
initializeTenantEgressTable(deviceId, install);
initializeTenantConnTrackTable(deviceId, install);