Refactor external peer router store, fix NPE due to MAC is not ready
Change-Id: Id0381d9d1d7e0888dfbf1fc20acdd44d0a303e4c
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkEvent.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkEvent.java
index 5815b7a..84c9b21 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkEvent.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkEvent.java
@@ -32,6 +32,7 @@
private final Port port;
private final Subnet subnet;
private final String securityGroupId;
+ private final ExternalPeerRouter peerRouter;
public enum Type {
/**
@@ -97,11 +98,32 @@
/**
* Signifies that the OpenStack security group rule is removed from a specific port.
*/
- OPENSTACK_PORT_SECURITY_GROUP_REMOVED
+ OPENSTACK_PORT_SECURITY_GROUP_REMOVED,
+
+ /**
+ * Signifies that the external peer router is created.
+ */
+ EXTERNAL_PEER_ROUTER_CREATED,
+
+ /**
+ * Signifies that the external peer router is updated.
+ */
+ EXTERNAL_PEER_ROUTER_UPDATED,
+
+ /**
+ * Signifies that the external peer router MAC is updated.
+ */
+ EXTERNAL_PEER_ROUTER_MAC_UPDATED,
+
+ /**
+ * Signifies that the external peer router is removed.
+ */
+ EXTERNAL_PEER_ROUTER_REMOVED,
}
/**
* Creates an event of a given type for the specified network and the current time.
+ *
* @param type openstack network event type
* @param network openstack network
*/
@@ -110,6 +132,7 @@
this.port = null;
this.subnet = null;
this.securityGroupId = null;
+ this.peerRouter = null;
}
/**
@@ -125,6 +148,7 @@
this.port = port;
this.subnet = null;
this.securityGroupId = null;
+ this.peerRouter = null;
}
/**
@@ -140,6 +164,7 @@
this.port = null;
this.subnet = subnet;
this.securityGroupId = null;
+ this.peerRouter = null;
}
/**
@@ -154,6 +179,21 @@
this.port = port;
this.subnet = null;
this.securityGroupId = securityGroupId;
+ this.peerRouter = null;
+ }
+
+ /**
+ * Creates an event of a given type for the specified external peer router.
+ *
+ * @param type openstack network event type
+ * @param peerRouter external peer router
+ */
+ public OpenstackNetworkEvent(Type type, ExternalPeerRouter peerRouter) {
+ super(type, null);
+ this.port = null;
+ this.subnet = null;
+ this.securityGroupId = null;
+ this.peerRouter = peerRouter;
}
/**
@@ -175,6 +215,15 @@
}
/**
+ * Returns the external peer router.
+ *
+ * @return external peer router; null if the event is not peer router specific
+ */
+ public ExternalPeerRouter peerRouter() {
+ return peerRouter;
+ }
+
+ /**
* Returns the security group rule IDs updated.
*
* @return openstack security group
@@ -195,6 +244,7 @@
.add("port", port)
.add("subnet", subnet)
.add("security group", securityGroupId())
+ .add("external peer router", peerRouter)
.toString();
}
}
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkStore.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkStore.java
index a584044..f4a5c4c 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkStore.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/api/OpenstackNetworkStore.java
@@ -140,6 +140,43 @@
Set<Port> ports();
/**
+ * Returns external peer router with the given IP address.
+ *
+ * @param ipAddress IP address
+ * @return external peer router
+ */
+ ExternalPeerRouter externalPeerRouter(String ipAddress);
+
+ /**
+ * Returns all external peer routers.
+ *
+ * @return set of external peer routers
+ */
+ Set<ExternalPeerRouter> externalPeerRouters();
+
+ /**
+ * Creates a new external peer router.
+ *
+ * @param peerRouter the new external peer router
+ */
+ void createExternalPeerRouter(ExternalPeerRouter peerRouter);
+
+ /**
+ * Updates an existing external peer router.
+ *
+ * @param peerRouter the updated external peer router
+ */
+ void updateExternalPeerRouter(ExternalPeerRouter peerRouter);
+
+ /**
+ * Removes an existing external peer router with the given IP address.
+ *
+ * @param ipAddress IP address
+ * @return removed external peer router
+ */
+ ExternalPeerRouter removeExternalPeerRouter(String ipAddress);
+
+ /**
* Removes the existing network and ports.
*/
void clear();