[ONOS-7731] Update api interface & implementation of openstack vtap app
Change-Id: I7c3c7888b00a7357b13e3b1756e9cd0a1bb6a5c0
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtap.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtap.java
index 6f74e81..ad189e2 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtap.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtap.java
@@ -22,15 +22,14 @@
import java.util.Set;
/**
- * Abstraction of an OpenstackVtap.
+ * Abstraction of an openstack vtap.
*/
public interface OpenstackVtap extends Annotated {
/**
- * Openstack vTap type.
+ * List of openstack vtap types.
*/
enum Type {
-
/**
* Indicates mirroring both TX and RX traffic.
*/
@@ -47,9 +46,9 @@
VTAP_TX(0x1),
/**
- * Indicates do not mirroring any traffic.
+ * Indicates selection of mirroring any traffic.
*/
- VTAP_NONE(0);
+ VTAP_ANY(0x0);
private final int type;
@@ -63,97 +62,96 @@
}
/**
- * OpenstackVtap identifier.
+ * Returns the openstack vtap identifier.
*
- * @return OpenstackVtap id
+ * @return vtap ID
*/
OpenstackVtapId id();
/**
- * Returns OpenstackVtap type.
+ * Returns the openstack vtap type.
*
- * @return type
+ * @return type of vtap
*/
Type type();
/**
- * Returns the vTap criterion.
+ * Returns the openstack vtap criterion.
*
- * @return vTap criterion
+ * @return criterion of vtap
*/
- OpenstackVtapCriterion vTapCriterion();
+ OpenstackVtapCriterion vtapCriterion();
/**
- * Returns a collection of TX device identifiers.
+ * Returns a collection of device identifiers for tx.
*
- * @return device identifiers
+ * @return device identifiers for tx
*/
Set<DeviceId> txDeviceIds();
/**
- * Returns a collection of RX device identifiers.
+ * Returns a collection of device identifiers for rx.
*
- * @return device identifiers
+ * @return device identifiers for rx
*/
Set<DeviceId> rxDeviceIds();
/**
- * Builder of new openstack vTap instance.
+ * Builder of new openstack vtap instance.
*/
interface Builder {
-
/**
- * Returns openstack vTap builder with supplied vTap identifier.
+ * Returns openstack vtap builder with supplied id.
*
- * @param id vTap identifier
- * @return openstack vTap builder
+ * @param id openstack vtap id
+ * @return openstack vtap builder
*/
Builder id(OpenstackVtapId id);
/**
- * Returns openstack vTap builder with supplied vTap type.
+ * Returns openstack vtap builder with supplied type.
*
- * @param type vTap type
- * @return openstack vTap builder
+ * @param type of the vtap
+ * @return openstack vtap builder
*/
Builder type(OpenstackVtap.Type type);
/**
- * Returns openstack vTap builder with supplied vTap criterion.
+ * Returns openstack vtap builder with supplied criterion.
*
- * @param vTapCriterion vTap criterion
- * @return openstack vTap builder
+ * @param vtapCriterion for the vtap
+ * @return openstack vtap builder
*/
- Builder vTapCriterion(OpenstackVtapCriterion vTapCriterion);
+ Builder vtapCriterion(OpenstackVtapCriterion vtapCriterion);
/**
- * Returns openstack vTap builder with supplied TX device identifiers.
+ * Returns openstack vtap builder with supplied tx deviceId set.
*
- * @param txDeviceIds TX device identifiers
- * @return openstack vTap builder
+ * @param txDeviceIds deviceId set for tx
+ * @return openstack vtap builder
*/
Builder txDeviceIds(Set<DeviceId> txDeviceIds);
/**
- * Returns openstack vTap builder with supplied RX device identifiers.
+ * Returns openstack vtap builder with supplied rx deviceId set.
*
- * @param rxDeviceIds RX device identifiers
- * @return openstack vTap builder
+ * @param rxDeviceIds deviceId set for rx
+ * @return openstack vtap builder
*/
Builder rxDeviceIds(Set<DeviceId> rxDeviceIds);
/**
- * Returns openstack vTap builder with supplied annotations.
+ * Returns openstack vtap builder with supplied annotations.
*
* @param annotations a set of annotations
- * @return openstack vTap builder
+ * @return openstack vtap builder
*/
- Builder annotations(SparseAnnotations... annotations);
+ Builder annotations(SparseAnnotations annotations);
/**
- * Builds an immutable openstack vTap instance.
+ * Builds an immutable OpenstackVtap instance.
*
- * @return openstack vTap instance
+ * @return openstack vtap instance
*/
OpenstackVtap build();
}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapAdminService.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapAdminService.java
index da9fd24..1828bee 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapAdminService.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapAdminService.java
@@ -15,60 +15,24 @@
*/
package org.onosproject.openstackvtap.api;
-import org.onlab.packet.VlanId;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-
/**
- * Service for administering the inventory of vTap.
+ * Service for administering the inventory of openstack vtap.
*/
public interface OpenstackVtapAdminService extends OpenstackVtapService {
/**
- * Creates a new vTap based on the specified description.
- *
- * @param type vTap type
- * @param vTapCriterion criterion of a vTap
- * @return created vTap object or null if error occurred
+ * Initializes the flow rules and group tables, tunneling interface for all completed compute nodes.
*/
- OpenstackVtap createVtap(OpenstackVtap.Type type, OpenstackVtapCriterion vTapCriterion);
+ void initVtap();
/**
- * Updates the existing vTap based on the given vTap instance.
- *
- * @param vTapId vTap identifier
- * @param vTap vTap instance to be modified
- * @return updated vTap object or null if error occurred
+ * Clears the flow rules and group tables, tunneling interfaces for all compute nodes.
*/
- OpenstackVtap updateVtap(OpenstackVtapId vTapId, OpenstackVtap vTap);
+ void clearVtap();
/**
- * Removes the specified vTap with given vTap identifier.
- *
- * @param vTapId vTap identifier
- * @return removed vTap object or null if error occurred
+ * Purges all flow rules and group tables, tunneling interface for openstack vtap.
*/
- OpenstackVtap removeVtap(OpenstackVtapId vTapId);
+ void purgeVtap();
- /**
- * Sets output port and VLAN tag for vTap.
- *
- * @param deviceId device identifier
- * @param type vTap type
- * @param portNumber port number
- * @param vlanId VLAN tag
- */
- void setVtapOutput(DeviceId deviceId, OpenstackVtap.Type type,
- PortNumber portNumber, VlanId vlanId);
-
- /**
- * Sets output port and VNI for vTap.
- *
- * @param deviceId device identifier
- * @param type vTap type
- * @param portNumber port number
- * @param vni virtual network index (VNI) of VxLAN
- */
- void setVtapOutput(DeviceId deviceId, OpenstackVtap.Type type,
- PortNumber portNumber, int vni);
}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapCriterion.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapCriterion.java
index eb21b0c..088f12d 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapCriterion.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapCriterion.java
@@ -19,35 +19,35 @@
import org.onlab.packet.TpPort;
/**
- * A vTAP criterion used for mirroring traffic.
+ * A vtap criterion used for mirroring traffic.
*/
public interface OpenstackVtapCriterion {
/**
- * Returns IP Prefix of Source VM.
+ * Returns IP prefix of source.
*
- * @return source IP prefix
+ * @return source IP prefix of vtap criterion
*/
IpPrefix srcIpPrefix();
/**
- * Returns IP Prefix of Destination VM.
+ * Returns IP prefix of destination.
*
- * @return destination IP prefix
+ * @return destination IP prefix of vtap criterion
*/
IpPrefix dstIpPrefix();
/**
* Returns IP protocol.
*
- * @return IP protocol
+ * @return IP protocol of vtap criterion
*/
byte ipProtocol();
/**
* Returns source transport port.
*
- * @return source transport port number
+ * @return source transport port of vtap criterion
*/
TpPort srcTpPort();
@@ -55,60 +55,59 @@
/**
* Returns destination transport port.
*
- * @return destination transport port number
+ * @return destination transport port of vtap criterion
*/
TpPort dstTpPort();
/**
- * Builder of new openstack vTap criteria.
+ * Builder of new OpenstackVtapCriterion instance.
*/
interface Builder {
-
/**
- * Builds an immutable openstack vTap criterion instance.
+ * Returns openstack vtap criterion builder with supplied source IP prefix.
*
- * @return openstack vTap criterion
- */
- OpenstackVtapCriterion build();
-
- /**
- * Returns openstack vTap criterion builder with supplied srcIpPrefix.
- *
- * @param srcIpPrefix Source IP address
- * @return openstack vTap criterion builder
+ * @param srcIpPrefix Source IP prefix
+ * @return openstack vtap criterion builder
*/
Builder srcIpPrefix(IpPrefix srcIpPrefix);
/**
- * Returns openstack vTap criterion builder with supplied srcIpPrefix.
+ * Returns openstack vtap criterion builder with supplied destination IP prefix.
*
- * @param dstIpPrefix Destination IP Prefix
- * @return openstack vTap criterion builder
+ * @param dstIpPrefix Destination IP prefix
+ * @return openstack vtap criterion builder
*/
Builder dstIpPrefix(IpPrefix dstIpPrefix);
/**
- * Returns openstack vTap criterion builder with supplied ipProtocol.
+ * Returns openstack vtap criterion builder with supplied ipProtocol.
*
- * @param ipProtocol IP protocol number
- * @return openstack vTap criterion builder
+ * @param ipProtocol IP protocol
+ * @return openstack vtap criterion builder
*/
Builder ipProtocol(byte ipProtocol);
/**
- * Returns openstack vTap criterion builder with supplied srcTpPort.
+ * Returns openstack vtap criterion builder with supplied source port.
*
- * @param srcTpPort Source transport port number
- * @return openstack vTap criterion builder
+ * @param srcTpPort Source transport port
+ * @return openstack vtap criterion builder
*/
Builder srcTpPort(TpPort srcTpPort);
/**
- * Returns openstack vTap criterion builder with supplied dstTpPort.
+ * Returns openstack vtap criterion builder with supplied destination port.
*
- * @param dstTpPort Destination transport port number
- * @return openstack vTap criterion builder
+ * @param dstTpPort Destination transport port
+ * @return openstack vtap criterion builder
*/
Builder dstTpPort(TpPort dstTpPort);
+
+ /**
+ * Builds an immutable OpenstackVtapCriterion instance.
+ *
+ * @return OpenstackVtapCriterion criterion
+ */
+ OpenstackVtapCriterion build();
}
}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapEvent.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapEvent.java
index 70c1e11..d44c9f9 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapEvent.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapEvent.java
@@ -19,81 +19,166 @@
import org.onosproject.event.AbstractEvent;
import static com.google.common.base.MoreObjects.toStringHelper;
+import static com.google.common.base.Preconditions.checkState;
/**
- * Describes vTap event.
+ * Describes openstack vtap event.
*/
-public class OpenstackVtapEvent extends AbstractEvent<OpenstackVtapEvent.Type, OpenstackVtap> {
+public class OpenstackVtapEvent extends AbstractEvent<OpenstackVtapEvent.Type, Object> {
+
+ private static final String INVALID_OBJ_TYPE = "Invalid OpenstackVtapEvent object type of %";
/**
- * Type of vTap events.
+ * Type of openstack vtap events.
*/
public enum Type {
/**
- * Signifies that a new vTap has been added.
+ * Signifies that a new openstack vtap network has been added.
+ */
+ VTAP_NETWORK_ADDED,
+
+ /**
+ * Signifies that a openstack vtap network has been changed.
+ */
+ VTAP_NETWORK_UPDATED,
+
+ /**
+ * Signifies that a openstack vtap network has been removed.
+ */
+ VTAP_NETWORK_REMOVED,
+
+ /**
+ * Signifies that a new openstack vtap has been added.
*/
VTAP_ADDED,
/**
- * Signifies that a vTap has been removed.
- */
- VTAP_REMOVED,
-
- /**
- * Signifies that a vTap data changed.
+ * Signifies that a openstack vtap has been changed.
*/
VTAP_UPDATED,
+
+ /**
+ * Signifies that a openstack vtap has been removed.
+ */
+ VTAP_REMOVED,
}
- private OpenstackVtap prevSubject;
+ private final Object prevSubject;
/**
- * Creates an event of a given type and for the specified vTap and the
- * current time.
+ * Creates an event with previous openstack vtap network subject.
*
- * @param type vTap event type
- * @param vTap event vTap subject
+ * The openstack vtap network subject is null if the type is removed
+ * The previous openstack vtap network subject is null if the type is added
+ *
+ * @param type openstack vtap event type
+ * @param vtapNetwork event openstack vtap network subject
+ * @param prevVtapNetwork previous openstack vtap network subject
*/
- public OpenstackVtapEvent(Type type, OpenstackVtap vTap) {
- super(type, vTap);
+ public OpenstackVtapEvent(Type type,
+ OpenstackVtapNetwork vtapNetwork,
+ OpenstackVtapNetwork prevVtapNetwork) {
+ super(type, vtapNetwork);
+ prevSubject = prevVtapNetwork;
}
/**
- * Creates an event of a given type and for the specified vTap and time.
+ * Creates an event of a given type and for the specified openstack vtap network and time.
*
- * @param type vTap event type
- * @param vTap event vTap subject
- * @param time occurrence time
+ * @param type openstack vtap event type
+ * @param vtapNetwork event openstack vtap network subject
+ * @param prevVtapNetwork previous openstack vtap network subject
+ * @param time occurrence time
*/
- public OpenstackVtapEvent(Type type, OpenstackVtap vTap, long time) {
- super(type, vTap, time);
+ public OpenstackVtapEvent(Type type,
+ OpenstackVtapNetwork vtapNetwork,
+ OpenstackVtapNetwork prevVtapNetwork,
+ long time) {
+ super(type, vtapNetwork, time);
+ prevSubject = prevVtapNetwork;
}
/**
- * Creates an event with previous subject.
+ * Creates an event with previous openstack vtap subject.
*
- * The previous subject is ignored if the type is not moved or updated
+ * The openstack vtap subject is null if the type is removed
+ * The previous openstack vtap subject is null if the type is added
*
- * @param type vTap event type
- * @param vTap event vTap subject
- * @param prevSubject previous vTap subject
+ * @param type openstack vtap event type
+ * @param vtap event openstack vtap subject
+ * @param prevVtap previous openstack vtap subject
*/
- public OpenstackVtapEvent(Type type, OpenstackVtap vTap, OpenstackVtap prevSubject) {
- super(type, vTap);
- if (type == Type.VTAP_UPDATED) {
- this.prevSubject = prevSubject;
- }
+ public OpenstackVtapEvent(Type type, OpenstackVtap vtap, OpenstackVtap prevVtap) {
+ super(type, vtap);
+ prevSubject = prevVtap;
}
/**
- * Gets the previous subject in this vTap event.
+ * Creates an event of a given type and for the specified openstack vtap and time.
+ *
+ * @param type openstack vtap event type
+ * @param vtap event openstack vtap subject
+ * @param prevVtap previous openstack vtap subject
+ * @param time occurrence time
+ */
+ public OpenstackVtapEvent(Type type, OpenstackVtap vtap, OpenstackVtap prevVtap, long time) {
+ super(type, vtap, time);
+ prevSubject = prevVtap;
+ }
+
+ /**
+ * Gets the previous subject in this openstack vtap event.
*
* @return the previous subject, or null if previous subject is not
* specified.
*/
- public OpenstackVtap prevSubject() {
- return this.prevSubject;
+ public Object prevSubject() {
+ return prevSubject;
+ }
+
+ /**
+ * Gets the openstack vtap network in this openstack vtap event.
+ *
+ * @return the subject, or null if the type is removed
+ */
+ public OpenstackVtapNetwork openstackVtapNetwork() {
+ Object obj = subject();
+ checkState(obj == null || obj instanceof OpenstackVtapNetwork, INVALID_OBJ_TYPE, obj);
+ return (OpenstackVtapNetwork) obj;
+ }
+
+ /**
+ * Gets the previous openstack vtap network in this openstack vtap event.
+ *
+ * @return the previous subject, or null if type is added
+ */
+ public OpenstackVtapNetwork prevOpenstackVtapNetwork() {
+ Object obj = prevSubject;
+ checkState(obj == null || obj instanceof OpenstackVtapNetwork, INVALID_OBJ_TYPE, obj);
+ return (OpenstackVtapNetwork) obj;
+ }
+
+ /**
+ * Gets the openstack vtap in this openstack vtap event.
+ *
+ * @return the subject, or null if the type is removed
+ */
+ public OpenstackVtap openstackVtap() {
+ Object obj = subject();
+ checkState(obj == null || obj instanceof OpenstackVtap, INVALID_OBJ_TYPE, obj);
+ return (OpenstackVtap) obj;
+ }
+
+ /**
+ * Gets the previous openstack vtap in this openstack vtap event.
+ *
+ * @return the previous subject, or null if type is added
+ */
+ public OpenstackVtap prevOpenstackVtap() {
+ Object obj = prevSubject;
+ checkState(obj == null || obj instanceof OpenstackVtap, INVALID_OBJ_TYPE, obj);
+ return (OpenstackVtap) obj;
}
@Override
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapId.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapId.java
index ce8945d..c70fb03 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapId.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapId.java
@@ -19,12 +19,12 @@
import java.util.UUID;
/**
- * Immutable representation of an openstack vTap identifier.
+ * Immutable representation of an openstack vtap identifier.
*/
public final class OpenstackVtapId {
/**
- * Represents either no vTap, or an unspecified vTap.
+ * Represents either no vtap, or an unspecified vtap.
*/
public static final OpenstackVtapId NONE = new OpenstackVtapId(null);
@@ -50,35 +50,35 @@
}
/**
- * Creates a vTap identifier using the supplied UUID.
+ * Creates a vtap identifier using the supplied UUID.
*
- * @param uuid vTap UUID
- * @return vTap identifier
+ * @param uuid vtap UUID
+ * @return vtap identifier
*/
- public static OpenstackVtapId vTapId(UUID uuid) {
+ public static OpenstackVtapId vtapId(UUID uuid) {
return new OpenstackVtapId(uuid);
}
/**
- * Creates a vTap identifier using the supplied string format of UUID.
+ * Creates a vtap identifier using the supplied string format of UUID.
*
- * @param uuidString vTap UUID
- * @return vTap identifier
+ * @param uuidString vtap UUID
+ * @return vtap identifier
*/
- public static OpenstackVtapId vTapId(String uuidString) {
+ public static OpenstackVtapId vtapId(String uuidString) {
try {
- return vTapId(UUID.fromString(uuidString));
+ return vtapId(UUID.fromString(uuidString));
} catch (Exception e) {
throw new IllegalArgumentException("Invalid UUID string: " + uuidString);
}
}
/**
- * Creates a OpenstackVtap id using random uuid.
+ * Creates a openstack vtap id using random uuid.
*
- * @return OpenstackVtap identifier
+ * @return openstack vtap identifier
*/
- public static OpenstackVtapId vTapId() {
+ public static OpenstackVtapId vtapId() {
return new OpenstackVtapId(UUID.randomUUID());
}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapListener.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapListener.java
index ebea5ed..9df7384 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapListener.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapListener.java
@@ -18,7 +18,7 @@
import org.onosproject.event.EventListener;
/**
- * Entity capable of receiving user related events.
+ * Entity capable of receiving openstack vtap related events.
*/
public interface OpenstackVtapListener extends EventListener<OpenstackVtapEvent> {
}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapNetwork.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapNetwork.java
new file mode 100644
index 0000000..daa95a8
--- /dev/null
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapNetwork.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.openstackvtap.api;
+
+import org.onlab.packet.IpAddress;
+import org.onosproject.net.Annotated;
+import org.onosproject.net.SparseAnnotations;
+
+/**
+ * Abstraction of an openstack vtap network.
+ */
+public interface OpenstackVtapNetwork extends Annotated {
+
+ /**
+ * List of valid openstack vtap tunneling modes.
+ */
+ enum Mode {
+ /**
+ * Indicates GRE tunneling.
+ */
+ GRE,
+
+ /**
+ * Indicates VXLAN tunneling.
+ */
+ VXLAN
+ }
+
+ /**
+ * Returns the OpenstackVtapNetwork mode.
+ *
+ * @return mode of vtap tunneling
+ */
+ Mode mode();
+
+ /**
+ * Returns the network id of the vtap tunneling.
+ *
+ * @return networkId (e.g., gre key, vxlan vni)
+ */
+ Integer networkId();
+
+ /**
+ * Returns the vtap server IP address used for tunneling.
+ *
+ * @return ip address for vtap server
+ */
+ IpAddress serverIp();
+
+ /**
+ * Builder of new OpenstackVtapNetwork instance.
+ */
+ interface Builder {
+ /**
+ * Returns openstack vtap network builder with supplied OpenstackVtapNetwork mode.
+ *
+ * @param mode mode of vtap tunneling
+ * @return openstack vtap network builder
+ */
+ Builder mode(Mode mode);
+
+ /**
+ * Returns openstack vtap network builder with supplied networkId for tunneling.
+ *
+ * @param networkId (e.g., gre key, vxlan vni)
+ * @return openstack vtap network builder
+ */
+ Builder networkId(Integer networkId);
+
+ /**
+ * Returns openstack vtap network builder with supplied server IP address.
+ *
+ * @param serverIp ip address for vtap server
+ * @return openstack vtap network builder
+ */
+ Builder serverIp(IpAddress serverIp);
+
+ /**
+ * Returns openstack vtap network builder with supplied annotations.
+ *
+ * @param annotations a set of annotations
+ * @return openstack vtap network builder
+ */
+ Builder annotations(SparseAnnotations annotations);
+
+ /**
+ * Builds an immutable OpenstackVtapNetwork instance.
+ *
+ * @return OpenstackVtapNetwork instance
+ */
+ OpenstackVtapNetwork build();
+ }
+}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapService.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapService.java
index 5041aaf..bfb63a0 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapService.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapService.java
@@ -15,47 +15,111 @@
*/
package org.onosproject.openstackvtap.api;
+import org.onlab.packet.IpAddress;
import org.onosproject.event.ListenerService;
import org.onosproject.net.DeviceId;
import java.util.Set;
/**
- * Service for interacting with the inventory of vTap.
+ * Service for interacting with the inventory of openstack vtap.
*/
public interface OpenstackVtapService
extends ListenerService<OpenstackVtapEvent, OpenstackVtapListener> {
/**
- * Returns the number of vTaps in the store.
+ * Creates a new openstack vtap network based on the specified description.
*
- * @param type vTap type
- * @return vTap count
+ * @param mode mode of vtap network
+ * @param networkId network id of the vtap tunneling network
+ * @param serverIp server IP address used for tunneling
+ * @return created openstack vtap network object or null if error occurred
+ */
+ OpenstackVtapNetwork createVtapNetwork(OpenstackVtapNetwork.Mode mode, Integer networkId, IpAddress serverIp);
+
+ /**
+ * Updates the openstack vtap network based on the specified description.
+ *
+ * @param description description of vtap network
+ * @return updated openstack vtap network object or null if error occurred
+ */
+ OpenstackVtapNetwork updateVtapNetwork(OpenstackVtapNetwork description);
+
+ /**
+ * Removes the specified openstack vtap network.
+ *
+ * @return removed openstack vtap network object or null if error occurred
+ */
+ OpenstackVtapNetwork removeVtapNetwork();
+
+ /**
+ * Returns the openstack vtap network.
+ *
+ * @return openstack vtap network or null if not exists
+ */
+ OpenstackVtapNetwork getVtapNetwork();
+
+ /**
+ * Returns a set of devices which are associated with the openstack vtap network.
+ *
+ * @return set of devices
+ */
+ Set<DeviceId> getVtapNetworkDevices();
+
+ /**
+ * Creates a new openstack vtap based on the specified type and criterion.
+ *
+ * @param type type of vtap (all,rx,tx)
+ * @param vtapCriterion criterion of vtap
+ * @return created openstack vtap object or null if error occurred
+ */
+ OpenstackVtap createVtap(OpenstackVtap.Type type, OpenstackVtapCriterion vtapCriterion);
+
+ /**
+ * Updates the openstack vtap with specified description.
+ *
+ * @param description description of vtap
+ * @return updated openstack vtap object or null if error occurred
+ */
+ OpenstackVtap updateVtap(OpenstackVtap description);
+
+ /**
+ * Removes the specified openstack vtap with given vtap identifier.
+ *
+ * @param vtapId vtap identifier
+ * @return removed openstack vtap object or null if error occurred
+ */
+ OpenstackVtap removeVtap(OpenstackVtapId vtapId);
+
+ /**
+ * Returns the number of openstack vtaps for the given type.
+ *
+ * @param type type of vtap (any,rx,tx,all)
+ * @return number of openstack vtaps
*/
int getVtapCount(OpenstackVtap.Type type);
/**
- * Returns a collection of selected vTaps in the store.
+ * Returns a set of openstack vtaps for the given type.
*
- * @param type vTap type
- * @return iterable collection of selected vTaps
+ * @param type type of vtap (any,rx,tx,all)
+ * @return set of openstack vtaps
*/
Set<OpenstackVtap> getVtaps(OpenstackVtap.Type type);
/**
- * Returns the vTap with the specified identifier.
+ * Returns the openstack vtap with the specified identifier.
*
- * @param vTapId vTap identifier
- * @return vTap or null if not exist
+ * @param vtapId vtap identifier
+ * @return openstack vtap or null if one with the given identifier is not known
*/
- OpenstackVtap getVtap(OpenstackVtapId vTapId);
+ OpenstackVtap getVtap(OpenstackVtapId vtapId);
/**
- * Returns a collection of vTaps which are associated with the given device.
+ * Returns a set of openstack vtaps which are associated with the given device.
*
- * @param type vTap type
- * @param deviceId device identifier
- * @return a set of vTaps
+ * @param deviceId device identifier
+ * @return set of openstack vtaps
*/
- Set<OpenstackVtap> getVtapsByDeviceId(OpenstackVtap.Type type, DeviceId deviceId);
+ Set<OpenstackVtap> getVtapsByDeviceId(DeviceId deviceId);
}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStore.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStore.java
index 15c945e..da9364d 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStore.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStore.java
@@ -21,92 +21,162 @@
import java.util.Set;
/**
- * Manages inventory of OpenstackVtap states; not intended for direct use.
+ * Manages inventory of openstack vtap datum; not intended for direct use.
*/
public interface OpenstackVtapStore
extends Store<OpenstackVtapEvent, OpenstackVtapStoreDelegate> {
/**
- * Creates a new vTap or updates the existing one based on the specified
- * description.
+ * Creates a new openstack vtap network based on the specified description.
*
- * @param vTapId vTap identifier
- * @param description vTap description data
- * @param replaceFlag replace device set if true, merge device set otherwise
- * @return created or updated vTap object or null if error occurred
+ * @param key vtap network identifier
+ * @param description description of vtap network
+ * @return created openstack vtap network object or null if error occurred
*/
- OpenstackVtap createOrUpdateVtap(OpenstackVtapId vTapId, OpenstackVtap description, boolean replaceFlag);
+ OpenstackVtapNetwork createVtapNetwork(Integer key, OpenstackVtapNetwork description);
/**
- * Removes the specified vTap from the inventory by the given vTap identifier.
+ * Updates the openstack vtap network based on the specified description.
*
- * @param vTapId vTap identifier
- * @return removed vTap object or null if error occurred
+ * @param key vtap network identifier
+ * @param description description of vtap network
+ * @return updated openstack vtap network object or null if error occurred
*/
- OpenstackVtap removeVtapById(OpenstackVtapId vTapId);
+ OpenstackVtapNetwork updateVtapNetwork(Integer key, OpenstackVtapNetwork description);
/**
- * Adds the specified device id from the vTap entry.
+ * Removes the specified openstack vtap network with the specified identifier.
*
- * @param vTapId vTap identification
- * @param type vTap type
- * @param deviceId device identifier to be added
+ * @param key vtap network identifier
+ * @return removed openstack vtap network object or null if error occurred
+ */
+ OpenstackVtapNetwork removeVtapNetwork(Integer key);
+
+ /**
+ * Removes all openstack vtap networks.
+ */
+ void clearVtapNetworks();
+
+ /**
+ * Returns the number of openstack vtap networks.
+ *
+ * @return number of openstack vtap networks
+ */
+ int getVtapNetworkCount();
+
+ /**
+ * Returns the openstack vtap network with the specified identifier.
+ *
+ * @param key vtap network identifier
+ * @return openstack vtap or null if one with the given identifier is not known
+ */
+ OpenstackVtapNetwork getVtapNetwork(Integer key);
+
+ /**
+ * Adds the specified device id to the specified vtap network entry.
+ *
+ * @param key vtap network identifier
+ * @param deviceId device identifier to be added
* @return true on success, false otherwise
*/
- boolean addDeviceToVtap(OpenstackVtapId vTapId, OpenstackVtap.Type type, DeviceId deviceId);
+ boolean addDeviceToVtapNetwork(Integer key, DeviceId deviceId);
/**
- * Removes the specified device id from the vTap entry.
+ * Removes the specified device id from the specified vtap network entry.
*
- * @param vTapId vTap identification
- * @param type vTap type
- * @param deviceId device identifier to be removed
+ * @param key vtap network identifier
+ * @param deviceId device identifier to be removed
* @return true on success, false otherwise
*/
- boolean removeDeviceFromVtap(OpenstackVtapId vTapId, OpenstackVtap.Type type, DeviceId deviceId);
+ boolean removeDeviceFromVtapNetwork(Integer key, DeviceId deviceId);
/**
- * Adds the specified device id from the vTap entry.
+ * Returns a set of device identifiers from the specified vtap network entry.
*
- * @param vTapId vTap identification
- * @param txDeviceIds TX device identifiers to be updated
- * @param rxDeviceIds RX device identifiers to be updated
- * @param replaceFlag replace device set if true, merge device set otherwise
- * @return true on success, false otherwise
+ * @param key vtap network identifier
+ * @return set of device identifier
*/
- boolean updateDeviceForVtap(OpenstackVtapId vTapId, Set<DeviceId> txDeviceIds,
- Set<DeviceId> rxDeviceIds, boolean replaceFlag);
+ Set<DeviceId> getVtapNetworkDevices(Integer key);
/**
- * Returns the number of vTaps in the store.
+ * Creates a new openstack vtap based on the specified description.
*
- * @param type vTap type
- * @return vTap count
+ * @param description description of vtap
+ * @return created openstack vtap object or null if error occurred
+ */
+ OpenstackVtap createVtap(OpenstackVtap description);
+
+ /**
+ * Updates the openstack vtap with specified description.
+ *
+ * @param description description of vtap
+ * @param replaceDevices replace device set if true, merge device set otherwise
+ * @return updated openstack vtap object or null if error occurred
+ */
+ OpenstackVtap updateVtap(OpenstackVtap description, boolean replaceDevices);
+
+ /**
+ * Removes the specified openstack vtap with given vtap identifier.
+ *
+ * @param vtapId vtap identifier
+ * @return removed openstack vtap object or null if error occurred
+ */
+ OpenstackVtap removeVtap(OpenstackVtapId vtapId);
+
+ /**
+ * Removes all openstack vtaps.
+ */
+ void clearVtaps();
+
+ /**
+ * Returns the number of openstack vtaps for the given type.
+ *
+ * @param type type of vtap (any,rx,tx,all)
+ * @return number of openstack vtaps
*/
int getVtapCount(OpenstackVtap.Type type);
/**
- * Returns a collection of selected vTaps in the store.
+ * Returns a set of openstack vtaps for the given type.
*
- * @param type vTap type
- * @return iterable collection of selected vTaps
+ * @param type type of vtap (any,rx,tx,all)
+ * @return set of openstack vtaps
*/
Set<OpenstackVtap> getVtaps(OpenstackVtap.Type type);
/**
- * Returns the vTap with the specified identifier.
+ * Returns the openstack vtap with the specified identifier.
*
- * @param vTapId vTap identifier
- * @return vtap or null if not found
+ * @param vtapId vtap identifier
+ * @return openstack vtap or null if one with the given identifier is not known
*/
- OpenstackVtap getVtap(OpenstackVtapId vTapId);
+ OpenstackVtap getVtap(OpenstackVtapId vtapId);
/**
- * Returns the set of vTaps whose included on device.
+ * Adds the specified device id to the specified vtap entry.
*
- * @param type vTap type
- * @param deviceId device identifier
- * @return set of vTaps
+ * @param vtapId vtap identifier
+ * @param type type of vtap (any,rx,tx,all)
+ * @param deviceId device identifier to be added
+ * @return true on success, false otherwise
*/
- Set<OpenstackVtap> getVtapsByDeviceId(OpenstackVtap.Type type, DeviceId deviceId);
+ boolean addDeviceToVtap(OpenstackVtapId vtapId, OpenstackVtap.Type type, DeviceId deviceId);
+
+ /**
+ * Removes the specified device id from the vtap entry.
+ *
+ * @param vtapId vtap identifier
+ * @param type type of vtap (any,rx,tx,all)
+ * @param deviceId device identifier to be removed
+ * @return true on success, false otherwise
+ */
+ boolean removeDeviceFromVtap(OpenstackVtapId vtapId, OpenstackVtap.Type type, DeviceId deviceId);
+
+ /**
+ * Returns a set of openstack vtaps which are associated with the given device.
+ *
+ * @param deviceId device identifier
+ * @return set of openstack vtaps
+ */
+ Set<OpenstackVtap> getVtapsByDeviceId(DeviceId deviceId);
}
diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/package-info.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/package-info.java
index 77ad58c..fe00c7c 100644
--- a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/package-info.java
+++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/package-info.java
@@ -15,6 +15,6 @@
*/
/**
- * Application API for Openstack vTap.
+ * Application API for openstack vtap.
*/
package org.onosproject.openstackvtap.api;
\ No newline at end of file