invalidation on node change
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java
index 8862ffc..0eedd7b 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/TenantManager.java
@@ -659,19 +659,17 @@
case NODE_DELETED:
case NODE_UPDATED:
case NODE_REPLACED:
-// Filter filter = Filter.builder().build();
-// DataNode node = dynamicConfigService.readNode(FpcUtil.tenants, filter);
-// getModelObjects(node, null).forEach(
-// modelObject -> {
-// DefaultTenants tenants = (DefaultTenants) modelObject;
-// tenants.tenant()
-// .parallelStream()
-// .forEach(tenant -> cacheManager.tenantCache.put(
-// tenant.tenantId(),
-// Optional.of((DefaultTenant) tenant))
-// );
-// }
-// );
+// List<NodeKey> nodeKeys = event.subject().nodeKeys();
+// if (nodeKeys.size() >= 4) {
+// NodeKey nodeKey = nodeKeys.get(3);
+// if (nodeKey.schemaId().name().equals("dpns") && nodeKey instanceof ListKey) {
+// Object dpnId = ((ListKey) nodeKey).keyLeafs().get(0).leafValue();
+// cacheManager.dpnsCache.invalidate(FpcDpnId.fromString(dpnId.toString()));
+// } else if (nodeKey.schemaId().name().equals("contexts") && nodeKey instanceof ListKey) {
+// Object contextId = ((ListKey) nodeKey).keyLeafs().get(0).leafValue();
+// cacheManager.contextsCache.invalidate(FpcContextId.fromString(contextId.toString()));
+// }
+// }
break;
default:
log.warn(UNKNOWN_EVENT, event.type());
@@ -695,7 +693,17 @@
* @return true if event is supported; false otherwise
*/
private boolean isSupported(DynamicConfigEvent event) {
- return true;
+ ResourceId rsId = event.subject();
+ List<NodeKey> storeKeys = rsId.nodeKeys();
+ List<NodeKey> regKeys = tenants.nodeKeys();
+ // store[0] = tenants, reg[0] = /
+ if (storeKeys != null) {
+ int storeSize = storeKeys.size();
+ if (storeSize >= 4) {
+ return storeKeys.get(0).equals(regKeys.get(1));
+ }
+ }
+ return false;
}
@Override
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java
index 6b9c86a..c691bea 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/CacheManager.java
@@ -59,6 +59,7 @@
}
}
} catch (Exception e) {
+ // let store to populate and retry
Thread.sleep(1000);
return load(fpcContextId);
}
@@ -86,6 +87,7 @@
}
}
} catch (Exception e) {
+ // let store to populate and retry
Thread.sleep(1000);
return load(fpcDpnId);
}
@@ -106,6 +108,4 @@
public void addManager(TenantManager manager) {
this.tenantManager = manager;
}
-
-
}
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java
index 5c6b3ce..5e61d74 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/Converter.java
@@ -23,6 +23,9 @@
public class Converter {
private static final Logger log = LoggerFactory.getLogger(Converter.class);
+ public static Function<String, FpcIdentity> getFpcIdentity = (v) -> new FpcIdentity(new FpcIdentityUnion(v));
+ public static Function<String, ClientIdentifier> getClientIdentity = (v) -> new ClientIdentifier(getFpcIdentity.apply(v));
+
/**
* Short to Byte
*
@@ -112,9 +115,6 @@
return value;
}
- public static Function<String, FpcIdentity> getFpcIdentity = (v) -> new FpcIdentity(new FpcIdentityUnion(v));
- public static Function<String, ClientIdentifier> getClientIdentity = (v) -> new ClientIdentifier(getFpcIdentity.apply(v));
-
public static DefaultContexts convertContext(org.onosproject.yang.gen.v1.ietfdmmfpcagent.rev20160803.ietfdmmfpcagent.payload.Contexts contexts) {
DefaultContexts ctx = new DefaultContexts();
FpcContextId fpcContextId = contexts.contextId();
diff --git a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java
index a0ff5f7..37f302a 100644
--- a/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java
+++ b/apps/fpcagent/src/main/java/org/onosproject/fpcagent/util/FpcUtil.java
@@ -49,9 +49,11 @@
public static final String UNKNOWN_EVENT = "FPC Agent listener: unknown event: {}";
public static final String EVENT_NULL = "Event cannot be null";
public static final String FPC_APP_ID = "org.onosproject.fpcagent";
- protected static final Logger log = LoggerFactory.getLogger(FpcUtil.class);
+
+ private static final Logger log = LoggerFactory.getLogger(FpcUtil.class);
private static final Map<String, FpcDpnId> uplinkDpnMap = Maps.newConcurrentMap();
private static final Map<String, Short> nodeToTopicMap = Maps.newConcurrentMap();
+
public static ModelConverter modelConverter = null;
// Resource ID for Configure DPN RPC command
public static ResourceId configureDpn;
@@ -65,15 +67,15 @@
public static ResourceId registerClientResourceId;
public static ResourceId deregisterClientResourceId;
- public static FpcIdentity defaultIdentity = getFpcIdentity.apply("default");
+ public static final FpcIdentity defaultIdentity = getFpcIdentity.apply("default");
- private static byte DPN_HELLO = 0b0000_0001;
- private static byte DPN_BYE = 0b0000_0010;
- private static byte DOWNLINK_DATA_NOTIFICATION = 0b0000_0101;
- private static byte DPN_STATUS_INDICATION = 0b0000_1100;
- private static byte DPN_OVERLOAD_INDICATION = 0b0000_0101;
- private static byte DPN_REPLY = 0b0000_0100;
- private static String DOWNLINK_DATA_NOTIFICATION_STRING = "Downlink-Data-Notification";
+ private static final byte DPN_HELLO = 0b0000_0001;
+ private static final byte DPN_BYE = 0b0000_0010;
+ private static final byte DOWNLINK_DATA_NOTIFICATION = 0b0000_0101;
+ private static final byte DPN_STATUS_INDICATION = 0b0000_1100;
+ private static final byte DPN_OVERLOAD_INDICATION = 0b0000_0101;
+ private static final byte DPN_REPLY = 0b0000_0100;
+ private static final String DOWNLINK_DATA_NOTIFICATION_STRING = "Downlink-Data-Notification";
/**
* Returns resource id from model converter.
@@ -102,12 +104,7 @@
tenants = getResourceVal(tenantsId);
- TenantKeys tenantKeys = new TenantKeys();
- tenantKeys.tenantId(defaultIdentity);
-
- ModelObjectId defaultTenantId = ModelObjectId.builder()
- .addChild(DefaultTenants.class)
- .addChild(DefaultTenant.class, tenantKeys)
+ ModelObjectId defaultTenantId = defaultTenantBuilder()
.build();
defaultTenant = getResourceVal(defaultTenantId);