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 new file mode 100644 index 0000000000..6f74e81edd --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtap.java @@ -0,0 +1,160 @@ +/* + * 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.onosproject.net.Annotated; +import org.onosproject.net.DeviceId; +import org.onosproject.net.SparseAnnotations; + +import java.util.Set; + +/** + * Abstraction of an OpenstackVtap. + */ +public interface OpenstackVtap extends Annotated { + + /** + * Openstack vTap type. + */ + enum Type { + + /** + * Indicates mirroring both TX and RX traffic. + */ + VTAP_ALL(0x3), + + /** + * Indicates only mirroring RX traffic. + */ + VTAP_RX(0x2), + + /** + * Indicates only mirroring TX traffic. + */ + VTAP_TX(0x1), + + /** + * Indicates do not mirroring any traffic. + */ + VTAP_NONE(0); + + private final int type; + + Type(int type) { + this.type = type; + } + + public boolean isValid(Type comp) { + return (this.type & comp.type) == comp.type; + } + } + + /** + * OpenstackVtap identifier. + * + * @return OpenstackVtap id + */ + OpenstackVtapId id(); + + /** + * Returns OpenstackVtap type. + * + * @return type + */ + Type type(); + + /** + * Returns the vTap criterion. + * + * @return vTap criterion + */ + OpenstackVtapCriterion vTapCriterion(); + + /** + * Returns a collection of TX device identifiers. + * + * @return device identifiers + */ + Set txDeviceIds(); + + /** + * Returns a collection of RX device identifiers. + * + * @return device identifiers + */ + Set rxDeviceIds(); + + /** + * Builder of new openstack vTap instance. + */ + interface Builder { + + /** + * Returns openstack vTap builder with supplied vTap identifier. + * + * @param id vTap identifier + * @return openstack vTap builder + */ + Builder id(OpenstackVtapId id); + + /** + * Returns openstack vTap builder with supplied vTap type. + * + * @param type vTap type + * @return openstack vTap builder + */ + Builder type(OpenstackVtap.Type type); + + /** + * Returns openstack vTap builder with supplied vTap criterion. + * + * @param vTapCriterion vTap criterion + * @return openstack vTap builder + */ + Builder vTapCriterion(OpenstackVtapCriterion vTapCriterion); + + /** + * Returns openstack vTap builder with supplied TX device identifiers. + * + * @param txDeviceIds TX device identifiers + * @return openstack vTap builder + */ + Builder txDeviceIds(Set txDeviceIds); + + /** + * Returns openstack vTap builder with supplied RX device identifiers. + * + * @param rxDeviceIds RX device identifiers + * @return openstack vTap builder + */ + Builder rxDeviceIds(Set rxDeviceIds); + + /** + * Returns openstack vTap builder with supplied annotations. + * + * @param annotations a set of annotations + * @return openstack vTap builder + */ + Builder annotations(SparseAnnotations... annotations); + + /** + * Builds an immutable 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 new file mode 100644 index 0000000000..da9fd2462d --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapAdminService.java @@ -0,0 +1,74 @@ +/* + * 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.VlanId; +import org.onosproject.net.DeviceId; +import org.onosproject.net.PortNumber; + +/** + * Service for administering the inventory of 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 + */ + OpenstackVtap createVtap(OpenstackVtap.Type type, OpenstackVtapCriterion vTapCriterion); + + /** + * 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 + */ + OpenstackVtap updateVtap(OpenstackVtapId vTapId, OpenstackVtap vTap); + + /** + * Removes the specified vTap with given vTap identifier. + * + * @param vTapId vTap identifier + * @return removed vTap object or null if error occurred + */ + OpenstackVtap removeVtap(OpenstackVtapId vTapId); + + /** + * 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 new file mode 100644 index 0000000000..eb21b0c4dc --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapCriterion.java @@ -0,0 +1,114 @@ +/* + * 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.IpPrefix; +import org.onlab.packet.TpPort; + +/** + * A vTAP criterion used for mirroring traffic. + */ +public interface OpenstackVtapCriterion { + + /** + * Returns IP Prefix of Source VM. + * + * @return source IP prefix + */ + IpPrefix srcIpPrefix(); + + /** + * Returns IP Prefix of Destination VM. + * + * @return destination IP prefix + */ + IpPrefix dstIpPrefix(); + + /** + * Returns IP protocol. + * + * @return IP protocol + */ + byte ipProtocol(); + + /** + * Returns source transport port. + * + * @return source transport port number + */ + + TpPort srcTpPort(); + + /** + * Returns destination transport port. + * + * @return destination transport port number + */ + TpPort dstTpPort(); + + /** + * Builder of new openstack vTap criteria. + */ + interface Builder { + + /** + * Builds an immutable openstack vTap criterion instance. + * + * @return openstack vTap criterion + */ + OpenstackVtapCriterion build(); + + /** + * Returns openstack vTap criterion builder with supplied srcIpPrefix. + * + * @param srcIpPrefix Source IP address + * @return openstack vTap criterion builder + */ + Builder srcIpPrefix(IpPrefix srcIpPrefix); + + /** + * Returns openstack vTap criterion builder with supplied srcIpPrefix. + * + * @param dstIpPrefix Destination IP Prefix + * @return openstack vTap criterion builder + */ + Builder dstIpPrefix(IpPrefix dstIpPrefix); + + /** + * Returns openstack vTap criterion builder with supplied ipProtocol. + * + * @param ipProtocol IP protocol number + * @return openstack vTap criterion builder + */ + Builder ipProtocol(byte ipProtocol); + + /** + * Returns openstack vTap criterion builder with supplied srcTpPort. + * + * @param srcTpPort Source transport port number + * @return openstack vTap criterion builder + */ + Builder srcTpPort(TpPort srcTpPort); + + /** + * Returns openstack vTap criterion builder with supplied dstTpPort. + * + * @param dstTpPort Destination transport port number + * @return openstack vTap criterion builder + */ + Builder dstTpPort(TpPort dstTpPort); + } +} 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 new file mode 100644 index 0000000000..70c1e11571 --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapEvent.java @@ -0,0 +1,108 @@ +/* + * 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.util.Tools; +import org.onosproject.event.AbstractEvent; + +import static com.google.common.base.MoreObjects.toStringHelper; + +/** + * Describes vTap event. + */ +public class OpenstackVtapEvent extends AbstractEvent { + + /** + * Type of vTap events. + */ + public enum Type { + + /** + * Signifies that a new vTap has been added. + */ + VTAP_ADDED, + + /** + * Signifies that a vTap has been removed. + */ + VTAP_REMOVED, + + /** + * Signifies that a vTap data changed. + */ + VTAP_UPDATED, + } + + private OpenstackVtap prevSubject; + + /** + * Creates an event of a given type and for the specified vTap and the + * current time. + * + * @param type vTap event type + * @param vTap event vTap subject + */ + public OpenstackVtapEvent(Type type, OpenstackVtap vTap) { + super(type, vTap); + } + + /** + * Creates an event of a given type and for the specified vTap and time. + * + * @param type vTap event type + * @param vTap event vTap subject + * @param time occurrence time + */ + public OpenstackVtapEvent(Type type, OpenstackVtap vTap, long time) { + super(type, vTap, time); + } + + /** + * Creates an event with previous subject. + * + * The previous subject is ignored if the type is not moved or updated + * + * @param type vTap event type + * @param vTap event vTap subject + * @param prevSubject previous vTap subject + */ + public OpenstackVtapEvent(Type type, OpenstackVtap vTap, OpenstackVtap prevSubject) { + super(type, vTap); + if (type == Type.VTAP_UPDATED) { + this.prevSubject = prevSubject; + } + } + + /** + * Gets the previous subject in this vTap event. + * + * @return the previous subject, or null if previous subject is not + * specified. + */ + public OpenstackVtap prevSubject() { + return this.prevSubject; + } + + @Override + public String toString() { + return toStringHelper(this) + .add("time", Tools.defaultOffsetDataTime(time())) + .add("type", type()) + .add("subject", subject()) + .add("prevSubject", prevSubject()) + .toString(); + } +} 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 new file mode 100644 index 0000000000..ce8945dfb9 --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapId.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 java.util.Objects; +import java.util.UUID; + +/** + * Immutable representation of an openstack vTap identifier. + */ +public final class OpenstackVtapId { + + /** + * Represents either no vTap, or an unspecified vTap. + */ + public static final OpenstackVtapId NONE = new OpenstackVtapId(null); + + private final UUID uuid; + + // Public construction is prohibited + private OpenstackVtapId(UUID uuid) { + this.uuid = uuid; + } + + // Default constructor for serialization + private OpenstackVtapId() { + this.uuid = null; + } + + /** + * Returns an unique UUID. + * + * @return UUID + */ + public UUID uuid() { + return uuid; + } + + /** + * Creates a vTap identifier using the supplied UUID. + * + * @param uuid vTap UUID + * @return vTap identifier + */ + public static OpenstackVtapId vTapId(UUID uuid) { + return new OpenstackVtapId(uuid); + } + + /** + * Creates a vTap identifier using the supplied string format of UUID. + * + * @param uuidString vTap UUID + * @return vTap identifier + */ + public static OpenstackVtapId vTapId(String uuidString) { + try { + return vTapId(UUID.fromString(uuidString)); + } catch (Exception e) { + throw new IllegalArgumentException("Invalid UUID string: " + uuidString); + } + } + + /** + * Creates a OpenstackVtap id using random uuid. + * + * @return OpenstackVtap identifier + */ + public static OpenstackVtapId vTapId() { + return new OpenstackVtapId(UUID.randomUUID()); + } + + @Override + public String toString() { + return uuid.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(uuid); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof OpenstackVtapId) { + final OpenstackVtapId other = (OpenstackVtapId) obj; + return Objects.equals(this.uuid, other.uuid); + } + return false; + } +} 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 new file mode 100644 index 0000000000..ebea5edd27 --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapListener.java @@ -0,0 +1,24 @@ +/* + * 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.onosproject.event.EventListener; + +/** + * Entity capable of receiving user related events. + */ +public interface OpenstackVtapListener extends EventListener { +} 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 f9d8fee892..5041aafa96 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,13 +15,47 @@ */ package org.onosproject.openstackvtap.api; +import org.onosproject.event.ListenerService; +import org.onosproject.net.DeviceId; + +import java.util.Set; + /** - * Openstack vtap interface. + * Service for interacting with the inventory of vTap. */ -public interface OpenstackVtapService { +public interface OpenstackVtapService + extends ListenerService { /** - * A dummy method. + * Returns the number of vTaps in the store. + * + * @param type vTap type + * @return vTap count */ - void dummy(); + int getVtapCount(OpenstackVtap.Type type); + + /** + * Returns a collection of selected vTaps in the store. + * + * @param type vTap type + * @return iterable collection of selected vTaps + */ + Set getVtaps(OpenstackVtap.Type type); + + /** + * Returns the vTap with the specified identifier. + * + * @param vTapId vTap identifier + * @return vTap or null if not exist + */ + OpenstackVtap getVtap(OpenstackVtapId vTapId); + + /** + * Returns a collection of vTaps which are associated with the given device. + * + * @param type vTap type + * @param deviceId device identifier + * @return a set of vTaps + */ + Set getVtapsByDeviceId(OpenstackVtap.Type type, 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 new file mode 100644 index 0000000000..15c945e2b7 --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStore.java @@ -0,0 +1,112 @@ +/* + * 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.onosproject.net.DeviceId; +import org.onosproject.store.Store; + +import java.util.Set; + +/** + * Manages inventory of OpenstackVtap states; not intended for direct use. + */ +public interface OpenstackVtapStore + extends Store { + + /** + * Creates a new vTap or updates the existing one 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 + */ + OpenstackVtap createOrUpdateVtap(OpenstackVtapId vTapId, OpenstackVtap description, boolean replaceFlag); + + /** + * Removes the specified vTap from the inventory by the given vTap identifier. + * + * @param vTapId vTap identifier + * @return removed vTap object or null if error occurred + */ + OpenstackVtap removeVtapById(OpenstackVtapId vTapId); + + /** + * Adds the specified device id from the vTap entry. + * + * @param vTapId vTap identification + * @param type vTap type + * @param deviceId device identifier to be added + * @return true on success, false otherwise + */ + boolean addDeviceToVtap(OpenstackVtapId vTapId, OpenstackVtap.Type type, DeviceId deviceId); + + /** + * Removes the specified device id from the vTap entry. + * + * @param vTapId vTap identification + * @param type vTap type + * @param deviceId device identifier to be removed + * @return true on success, false otherwise + */ + boolean removeDeviceFromVtap(OpenstackVtapId vTapId, OpenstackVtap.Type type, DeviceId deviceId); + + /** + * Adds the specified device id from the vTap 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 + */ + boolean updateDeviceForVtap(OpenstackVtapId vTapId, Set txDeviceIds, + Set rxDeviceIds, boolean replaceFlag); + + /** + * Returns the number of vTaps in the store. + * + * @param type vTap type + * @return vTap count + */ + int getVtapCount(OpenstackVtap.Type type); + + /** + * Returns a collection of selected vTaps in the store. + * + * @param type vTap type + * @return iterable collection of selected vTaps + */ + Set getVtaps(OpenstackVtap.Type type); + + /** + * Returns the vTap with the specified identifier. + * + * @param vTapId vTap identifier + * @return vtap or null if not found + */ + OpenstackVtap getVtap(OpenstackVtapId vTapId); + + /** + * Returns the set of vTaps whose included on device. + * + * @param type vTap type + * @param deviceId device identifier + * @return set of vTaps + */ + Set getVtapsByDeviceId(OpenstackVtap.Type type, DeviceId deviceId); +} diff --git a/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStoreDelegate.java b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStoreDelegate.java new file mode 100644 index 0000000000..0a783bd19c --- /dev/null +++ b/apps/openstackvtap/api/src/main/java/org/onosproject/openstackvtap/api/OpenstackVtapStoreDelegate.java @@ -0,0 +1,24 @@ +/* + * 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.onosproject.store.StoreDelegate; + +/** + * OpenstackVtap store delegate abstraction. + */ +public interface OpenstackVtapStoreDelegate extends StoreDelegate { +} diff --git a/apps/openstackvtap/app/pom.xml b/apps/openstackvtap/app/pom.xml index 800c3ed622..f8b40b4241 100644 --- a/apps/openstackvtap/app/pom.xml +++ b/apps/openstackvtap/app/pom.xml @@ -156,6 +156,12 @@ test + + org.onosproject + onos-core-serializers + ${project.version} + + org.onosproject onos-rest diff --git a/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java b/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java index 6a7e681546..a7c4de78b1 100644 --- a/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java +++ b/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java @@ -15,14 +15,44 @@ */ package org.onosproject.openstackvtap.impl; +import org.onosproject.net.DeviceId; +import org.onosproject.openstackvtap.api.OpenstackVtap; +import org.onosproject.openstackvtap.api.OpenstackVtapId; +import org.onosproject.openstackvtap.api.OpenstackVtapListener; import org.onosproject.openstackvtap.api.OpenstackVtapService; +import java.util.Set; + /** * Implementation of openstack vtap. */ public class OpenstackVtapManager implements OpenstackVtapService { @Override - public void dummy() { + public int getVtapCount(OpenstackVtap.Type type) { + return 0; + } + + @Override + public Set getVtaps(OpenstackVtap.Type type) { + return null; + } + + @Override + public OpenstackVtap getVtap(OpenstackVtapId vTapId) { + return null; + } + + @Override + public Set getVtapsByDeviceId(OpenstackVtap.Type type, DeviceId deviceId) { + return null; + } + + @Override + public void addListener(OpenstackVtapListener listener) { + } + + @Override + public void removeListener(OpenstackVtapListener listener) { } }