[ONOS-3804] [ONOS-3805] Initial L3 flowrules setup for Compute/Gateway nodes and PNAT Handler for OpenstackRouting
- Performs app refactoring (openstackrouting and openstackswitching)
- Implements L3 REST call corresponding openstackRouter and openstackRouterInterface.
- Implements initail L3 rules population to compute/gateway node.
- Implements PNAT rules population corresponding packet-in event.
- Fixs comments and javadocs.
- Rebases on master.
Change-Id: I5ad68810f50dc977737d30c43150c892b978b7cb
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackExternalGateway.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackExternalGateway.java
index 8f1e741..4005f88 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackExternalGateway.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackExternalGateway.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.openstacknetworking;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import org.onlab.packet.Ip4Address;
import java.util.Map;
@@ -60,7 +61,7 @@
* @return External fixed IP informations
*/
public Map<String, Ip4Address> externalFixedIps() {
- return externalFixedIps;
+ return ImmutableMap.copyOf(externalFixedIps);
}
@Override
@@ -137,7 +138,7 @@
* @return OpenstackExternalGateway object
*/
public OpenstackExternalGateway build() {
- return new OpenstackExternalGateway(networkId, enablePnat, externalFixedIps);
+ return new OpenstackExternalGateway(networkId, enablePnat, ImmutableMap.copyOf(externalFixedIps));
}
}
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackFloatingIP.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackFloatingIP.java
index bed0289..569c885 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackFloatingIP.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackFloatingIP.java
@@ -19,12 +19,14 @@
import java.util.Objects;
+import static com.google.common.base.Preconditions.checkNotNull;
+
/**
* An Openstack Neutron Floating IP Model.
*/
public final class OpenstackFloatingIP {
- public enum FloatingIPStatus {
+ public enum FloatingIpStatus {
UP,
DOWN,
ACTIVE,
@@ -33,13 +35,13 @@
private final String tenantId;
private final String networkId;
private final Ip4Address fixedIpAddress;
- private final String portId;
- private final String routerId;
+ private String portId;
+ private String routerId;
private final String id;
private final Ip4Address floatingIpAddress;
- private final FloatingIPStatus status;
+ private final FloatingIpStatus status;
- private OpenstackFloatingIP(FloatingIPStatus status, String id, String tenantId,
+ private OpenstackFloatingIP(FloatingIpStatus status, String id, String tenantId,
String networkId, Ip4Address fixedIpAddress, String portId,
String routerId, Ip4Address floatingIpAddress) {
this.status = status;
@@ -57,7 +59,7 @@
*
* @return floating IP status
*/
- public FloatingIPStatus status() {
+ public FloatingIpStatus status() {
return status;
}
@@ -107,6 +109,15 @@
}
/**
+ * Updates port ID.
+ *
+ * @param portId Updated port ID
+ */
+ public void updatePortId(String portId) {
+ this.portId = portId;
+ }
+
+ /**
* Returns router ID.
*
* @return router ID
@@ -116,6 +127,15 @@
}
/**
+ * Updates router ID.
+ *
+ * @param routerId Updated router ID
+ */
+ public void updateRouterId(String routerId) {
+ this.routerId = routerId;
+ }
+
+ /**
* Returns floating IP address.
*
* @return Floating IP address
@@ -162,7 +182,7 @@
private String routerId;
private String id;
private Ip4Address floatingIpAddress;
- private FloatingIPStatus status;
+ private FloatingIpStatus status;
/**
* Sets tenant ID.
@@ -181,7 +201,7 @@
* @param status Floating IP status
* @return Builder object
*/
- public Builder status(FloatingIPStatus status) {
+ public Builder status(FloatingIpStatus status) {
this.status = status;
return this;
}
@@ -258,8 +278,9 @@
* @return OpenstackFloatingIP object
*/
public OpenstackFloatingIP build() {
- return new OpenstackFloatingIP(status, id, tenantId, networkId,
- fixedIpAddress, portId, routerId, floatingIpAddress);
+ return new OpenstackFloatingIP(checkNotNull(status), checkNotNull(id), checkNotNull(tenantId),
+ checkNotNull(networkId), fixedIpAddress, portId,
+ routerId, checkNotNull(floatingIpAddress));
}
}
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java
index 8e513f1..5230c18 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java
@@ -16,6 +16,7 @@
package org.onosproject.openstacknetworking;
import java.util.Objects;
+import static com.google.common.base.Preconditions.checkNotNull;
/**
* An Openstack Neutron Router Model.
@@ -31,9 +32,9 @@
private final String tenantId;
private final String id;
private final String name;
- private final RouterStatus status;
- private final boolean adminStateUp;
- private final OpenstackExternalGateway gatewayExternalInfo;
+ private RouterStatus status;
+ private boolean adminStateUp;
+ private OpenstackExternalGateway gatewayExternalInfo;
private OpenstackRouter(String id, String tenantId, String name, RouterStatus status,
boolean adminStateUp, OpenstackExternalGateway gatewayExternalInfo) {
@@ -209,8 +210,8 @@
* @return OpenstasckRouter object
*/
public OpenstackRouter build() {
- return new OpenstackRouter(id, tenantId, name, status,
- adminStateUp, gatewayExternalInfo);
+ return new OpenstackRouter(checkNotNull(id), checkNotNull(tenantId), name, checkNotNull(status),
+ checkNotNull(adminStateUp), gatewayExternalInfo);
}
}
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouterInterface.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouterInterface.java
index 972e6c5..78ab815 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouterInterface.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouterInterface.java
@@ -99,12 +99,12 @@
* An Openstack Router Interface Builder class.
*/
public static final class Builder {
- private String id;
- private String tenantId;
- private String subnetId;
- private String portId;
+ private String id;
+ private String tenantId;
+ private String subnetId;
+ private String portId;
- /**
+ /**
* Sets Router Interface ID.
*
* @param id router interface ID
@@ -148,14 +148,14 @@
return this;
}
-
/**
* Builds an Openstack Router Interface object.
*
* @return OpenstackRouterInterface object
*/
public OpenstackRouterInterface build() {
- return new OpenstackRouterInterface(id, tenantId, subnetId, portId);
+ return new OpenstackRouterInterface(checkNotNull(id), checkNotNull(tenantId),
+ checkNotNull(subnetId), checkNotNull(portId));
}
}