mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-17 02:11:38 +02:00
[ONOS-7731] Add a set of interfaces for openstack vTap app
Change-Id: Ic44030a996bb6c3d5883acfdb3ac310a290682f6
This commit is contained in:
parent
e2e03a52a6
commit
38e4d94786
@ -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<DeviceId> txDeviceIds();
|
||||
|
||||
/**
|
||||
* Returns a collection of RX device identifiers.
|
||||
*
|
||||
* @return device identifiers
|
||||
*/
|
||||
Set<DeviceId> 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<DeviceId> txDeviceIds);
|
||||
|
||||
/**
|
||||
* Returns openstack vTap builder with supplied RX device identifiers.
|
||||
*
|
||||
* @param rxDeviceIds RX device identifiers
|
||||
* @return openstack vTap builder
|
||||
*/
|
||||
Builder rxDeviceIds(Set<DeviceId> 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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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<OpenstackVtapEvent.Type, OpenstackVtap> {
|
||||
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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<OpenstackVtapEvent> {
|
||||
}
|
@ -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<OpenstackVtapEvent, OpenstackVtapListener> {
|
||||
|
||||
/**
|
||||
* 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<OpenstackVtap> 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<OpenstackVtap> getVtapsByDeviceId(OpenstackVtap.Type type, DeviceId deviceId);
|
||||
}
|
||||
|
@ -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<OpenstackVtapEvent, OpenstackVtapStoreDelegate> {
|
||||
|
||||
/**
|
||||
* 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<DeviceId> txDeviceIds,
|
||||
Set<DeviceId> 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<OpenstackVtap> 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<OpenstackVtap> getVtapsByDeviceId(OpenstackVtap.Type type, DeviceId deviceId);
|
||||
}
|
@ -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<OpenstackVtapEvent> {
|
||||
}
|
@ -156,6 +156,12 @@
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.onosproject</groupId>
|
||||
<artifactId>onos-core-serializers</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.onosproject</groupId>
|
||||
<artifactId>onos-rest</artifactId>
|
||||
|
@ -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<OpenstackVtap> getVtaps(OpenstackVtap.Type type) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OpenstackVtap getVtap(OpenstackVtapId vTapId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<OpenstackVtap> getVtapsByDeviceId(OpenstackVtap.Type type, DeviceId deviceId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addListener(OpenstackVtapListener listener) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeListener(OpenstackVtapListener listener) {
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user