mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-11-02 17:21:05 +01:00
[ONOS-2817]: add routerService and floatingIpService api
Change-Id: I87bc6e03036b08b932a5e2a9c1b4bd50e4358538
This commit is contained in:
parent
c69a7fd0ae
commit
e3d60b1a2d
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.floatingip;
|
||||
|
||||
import org.onosproject.event.AbstractEvent;
|
||||
import org.onosproject.vtnrsc.FloatingIp;
|
||||
|
||||
/**
|
||||
* Describes network Floating IP event.
|
||||
*/
|
||||
public class FloatingIpEvent
|
||||
extends AbstractEvent<FloatingIpEvent.Type, FloatingIp> {
|
||||
/**
|
||||
* Type of Floating IP events.
|
||||
*/
|
||||
public enum Type {
|
||||
/**
|
||||
* Signifies that Floating IP has been created.
|
||||
*/
|
||||
FLOATINGIP_PUT,
|
||||
/**
|
||||
* Signifies that Floating IP has been deleted.
|
||||
*/
|
||||
FLOATINGIP_DELETE
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an event of a given type and for the specified Floating IP.
|
||||
*
|
||||
* @param type Floating IP event type
|
||||
* @param floagingIp Floating IP subject
|
||||
*/
|
||||
public FloatingIpEvent(Type type, FloatingIp floagingIp) {
|
||||
super(type, floagingIp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an event of a given type and for the specified Floating IP.
|
||||
*
|
||||
* @param type Floating IP event type
|
||||
* @param floagingIp Floating IP subject
|
||||
* @param time occurrence time
|
||||
*/
|
||||
public FloatingIpEvent(Type type, FloatingIp floagingIp, long time) {
|
||||
super(type, floagingIp, time);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.floatingip;
|
||||
|
||||
import org.onosproject.event.EventListener;
|
||||
|
||||
/**
|
||||
* Entity capable of Floating IP related events.
|
||||
*/
|
||||
public interface FloatingIpListener extends EventListener<FloatingIpEvent> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.floatingip;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.onlab.packet.IpAddress;
|
||||
import org.onosproject.vtnrsc.FloatingIp;
|
||||
import org.onosproject.vtnrsc.FloatingIpId;
|
||||
import org.onosproject.vtnrsc.TenantId;
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of floating IP.
|
||||
*/
|
||||
public interface FloatingIpService {
|
||||
/**
|
||||
* Returns exists or not of specific floatingIp identifier.
|
||||
*
|
||||
* @param floatingIpId floatingIp identifier
|
||||
* @return true or false
|
||||
*/
|
||||
boolean exists(FloatingIpId floatingIpId);
|
||||
|
||||
/**
|
||||
* Returns is used or not of specific floating IP address.
|
||||
*
|
||||
* @param floatingIpAddr floatingIp address
|
||||
* @param floatingIpId floatingIp identifier
|
||||
* @return true or false
|
||||
*/
|
||||
boolean floatingIpIsUsed(IpAddress floatingIpAddr, FloatingIpId floatingIpId);
|
||||
|
||||
/**
|
||||
* Returns is used or not of specific fixed IP address.
|
||||
*
|
||||
* @param fixedIpAddr fixedIp address
|
||||
* @param tenantId the tenant identifier of floating IP
|
||||
* @param floatingIpId floatingIp identifier
|
||||
* @return true or false
|
||||
*/
|
||||
boolean fixedIpIsUsed(IpAddress fixedIpAddr, TenantId tenantId, FloatingIpId floatingIpId);
|
||||
|
||||
/**
|
||||
* Returns a collection of the currently known floating IP.
|
||||
*
|
||||
* @return collection of floating IP
|
||||
*/
|
||||
Collection<FloatingIp> getFloatingIps();
|
||||
|
||||
/**
|
||||
* Returns the floatingIp with the specified identifier.
|
||||
*
|
||||
* @param floatingIpId floatingIp identifier
|
||||
* @return floatingIp or null if one with the given identifier is not known
|
||||
*/
|
||||
FloatingIp getFloatingIp(FloatingIpId floatingIpId);
|
||||
|
||||
/**
|
||||
* Creates new floatingIps.
|
||||
*
|
||||
* @param floatingIps the collection of floatingIp
|
||||
* @return true if the identifier floatingIp has been created right
|
||||
*/
|
||||
boolean createFloatingIps(Collection<FloatingIp> floatingIps);
|
||||
|
||||
/**
|
||||
* Updates existing floatingIps.
|
||||
*
|
||||
* @param floatingIps the collection of floatingIp
|
||||
* @return true if all floatingIp were updated successfully
|
||||
*/
|
||||
boolean updateFloatingIps(Collection<FloatingIp> floatingIps);
|
||||
|
||||
/**
|
||||
* Removes the specified floatingIp from the store.
|
||||
*
|
||||
* @param floatingIpIds the collection of floatingIp identifier
|
||||
* @return true if remove identifier floatingIp successfully
|
||||
*/
|
||||
boolean removeFloatingIps(Collection<FloatingIpId> floatingIpIds);
|
||||
|
||||
/**
|
||||
* Adds the specified listener to floating Ip manager.
|
||||
*
|
||||
* @param listener floating Ip listener
|
||||
*/
|
||||
void addListener(FloatingIpListener listener);
|
||||
|
||||
/**
|
||||
* Removes the specified listener to floating Ip manager.
|
||||
*
|
||||
* @param listener floating Ip listener
|
||||
*/
|
||||
void removeListener(FloatingIpListener listener);
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of FloatingIp.
|
||||
*/
|
||||
package org.onosproject.vtnrsc.floatingip;
|
||||
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.router;
|
||||
|
||||
import org.onosproject.event.AbstractEvent;
|
||||
import org.onosproject.vtnrsc.Router;
|
||||
|
||||
/**
|
||||
* Describes network Router event.
|
||||
*/
|
||||
public class RouterEvent extends AbstractEvent<RouterEvent.Type, Router> {
|
||||
/**
|
||||
* Type of Router events.
|
||||
*/
|
||||
public enum Type {
|
||||
/**
|
||||
* Signifies that router has been created.
|
||||
*/
|
||||
ROUTER_PUT,
|
||||
/**
|
||||
* Signifies that router has been deleted.
|
||||
*/
|
||||
ROUTER_DELETE
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an event of a given type and for the specified Router.
|
||||
*
|
||||
* @param type Router event type
|
||||
* @param router Router subject
|
||||
*/
|
||||
public RouterEvent(Type type, Router router) {
|
||||
super(type, router);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an event of a given type and for the specified Router.
|
||||
*
|
||||
* @param type Router event type
|
||||
* @param router Router subject
|
||||
* @param time occurrence time
|
||||
*/
|
||||
public RouterEvent(Type type, Router router, long time) {
|
||||
super(type, router, time);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.router;
|
||||
|
||||
import org.onosproject.event.EventListener;
|
||||
|
||||
/**
|
||||
* Entity capable of Router related events.
|
||||
*/
|
||||
public interface RouterListener extends EventListener<RouterEvent> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.router;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.onosproject.vtnrsc.Router;
|
||||
import org.onosproject.vtnrsc.RouterId;
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of Routers.
|
||||
*/
|
||||
public interface RouterService {
|
||||
/**
|
||||
* Returns exists or not of specific router identifier.
|
||||
*
|
||||
* @param routerId router identifier
|
||||
* @return true or false
|
||||
*/
|
||||
boolean exists(RouterId routerId);
|
||||
|
||||
/**
|
||||
* Returns a collection of the currently known Routers.
|
||||
*
|
||||
* @return collection of Routers
|
||||
*/
|
||||
Collection<Router> getRouters();
|
||||
|
||||
/**
|
||||
* Returns the Router with the specified identifier.
|
||||
*
|
||||
* @param routerId Router identifier
|
||||
* @return Router or null if one with the given identifier is not known
|
||||
*/
|
||||
Router getRouter(RouterId routerId);
|
||||
|
||||
/**
|
||||
* Creates new Routers.
|
||||
*
|
||||
* @param routers the collection of Routers
|
||||
* @return true if the identifier Router has been created right.
|
||||
* false if the identifier Router is failed to store
|
||||
*/
|
||||
boolean createRouters(Collection<Router> routers);
|
||||
|
||||
/**
|
||||
* Updates existing Routers.
|
||||
*
|
||||
* @param routers the collection of Routers
|
||||
* @return true if Routers were updated successfully.
|
||||
* false if Routers were updated failed
|
||||
*/
|
||||
boolean updateRouters(Collection<Router> routers);
|
||||
|
||||
/**
|
||||
* Removes the specified Routers from the store.
|
||||
*
|
||||
* @param routerIds the collection of Routers identifier
|
||||
* @return true if remove identifier Routers successfully. false if remove
|
||||
* identifier Routers failed
|
||||
*/
|
||||
boolean removeRouters(Collection<RouterId> routerIds);
|
||||
|
||||
/**
|
||||
* Adds the specified listener to Router manager.
|
||||
*
|
||||
* @param listener Router listener
|
||||
*/
|
||||
void addListener(RouterListener listener);
|
||||
|
||||
/**
|
||||
* Removes the specified listener to Router manager.
|
||||
*
|
||||
* @param listener Router listener
|
||||
*/
|
||||
void removeListener(RouterListener listener);
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of Router.
|
||||
*/
|
||||
package org.onosproject.vtnrsc.router;
|
||||
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.routerinterface;
|
||||
|
||||
import org.onosproject.event.AbstractEvent;
|
||||
import org.onosproject.vtnrsc.RouterInterface;
|
||||
|
||||
/**
|
||||
* Describes network Router Interface event.
|
||||
*/
|
||||
public class RouterInterfaceEvent
|
||||
extends AbstractEvent<RouterInterfaceEvent.Type, RouterInterface> {
|
||||
|
||||
/**
|
||||
* Type of Router Interface events.
|
||||
*/
|
||||
public enum Type {
|
||||
/**
|
||||
* Signifies that router interface has been added.
|
||||
*/
|
||||
ROUTER_INTERFACE_PUT,
|
||||
/**
|
||||
* Signifies that router interface has been removed.
|
||||
*/
|
||||
ROUTER_INTERFACE_DELETE
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an event of a given type and for the specified Router Interface.
|
||||
*
|
||||
* @param type Router Interface event type
|
||||
* @param routerInterface Router Interface subject
|
||||
*/
|
||||
public RouterInterfaceEvent(Type type, RouterInterface routerInterface) {
|
||||
super(type, routerInterface);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an event of a given type and for the specified Router Interface.
|
||||
*
|
||||
* @param type Router Interface event type.
|
||||
* @param routerInterface Router Interface subject
|
||||
* @param time occurrence time
|
||||
*/
|
||||
public RouterInterfaceEvent(Type type, RouterInterface routerInterface,
|
||||
long time) {
|
||||
super(type, routerInterface, time);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.routerinterface;
|
||||
|
||||
import org.onosproject.event.EventListener;
|
||||
|
||||
/**
|
||||
* Entity capable of Router Interface related events.
|
||||
*/
|
||||
public interface RouterInterfaceListener
|
||||
extends EventListener<RouterInterfaceEvent> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.routerinterface;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.onosproject.vtnrsc.RouterInterface;
|
||||
import org.onosproject.vtnrsc.SubnetId;
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of Router interface.
|
||||
*/
|
||||
public interface RouterInterfaceService {
|
||||
/**
|
||||
* Returns exists or not of specific subnet identifier.
|
||||
*
|
||||
* @param subnetId subnet identifier
|
||||
* @return true or false
|
||||
*/
|
||||
boolean exists(SubnetId subnetId);
|
||||
|
||||
/**
|
||||
* Returns a collection of the currently known Router interface.
|
||||
*
|
||||
* @return collection of RouterInterface
|
||||
*/
|
||||
Collection<RouterInterface> getRouterInterfaces();
|
||||
|
||||
/**
|
||||
* Returns the Router interface with the specified subnet identifier.
|
||||
*
|
||||
* @param subnetId subnet identifier
|
||||
* @return RouterInterface or null if one with the given identifier is not
|
||||
* known
|
||||
*/
|
||||
RouterInterface getRouterInterface(SubnetId subnetId);
|
||||
|
||||
/**
|
||||
* Adds the specified RouterInterface.
|
||||
*
|
||||
* @param routerInterface the interface add to router
|
||||
* @return true if add router interface successfully
|
||||
*/
|
||||
boolean addRouterInterface(RouterInterface routerInterface);
|
||||
|
||||
/**
|
||||
* Removes the specified RouterInterface.
|
||||
*
|
||||
* @param routerInterface the interface remove from router
|
||||
* @return true if remove router interface successfully
|
||||
*/
|
||||
boolean removeRouterInterface(RouterInterface routerInterface);
|
||||
|
||||
/**
|
||||
* Adds the specified listener to Router Interface manager.
|
||||
*
|
||||
* @param listener Router Interface listener
|
||||
*/
|
||||
void addListener(RouterInterfaceListener listener);
|
||||
|
||||
/**
|
||||
* Removes the specified listener to RouterInterface manager.
|
||||
*
|
||||
* @param listener Router Interface listener
|
||||
*/
|
||||
void removeListener(RouterInterfaceListener listener);
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of RouterInterface.
|
||||
*/
|
||||
package org.onosproject.vtnrsc.routerinterface;
|
||||
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.vtnrsc.service;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.onlab.packet.MacAddress;
|
||||
import org.onosproject.net.Device;
|
||||
import org.onosproject.net.DeviceId;
|
||||
import org.onosproject.net.HostId;
|
||||
import org.onosproject.vtnrsc.SegmentationId;
|
||||
import org.onosproject.vtnrsc.TenantId;
|
||||
import org.onosproject.vtnrsc.VirtualPortId;
|
||||
import org.onosproject.vtnrsc.event.VtnRscListener;
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of Vtn resource.
|
||||
*/
|
||||
public interface VtnRscService {
|
||||
/**
|
||||
* Adds the specified listener.
|
||||
*
|
||||
* @param listener VtnRsc listener
|
||||
*/
|
||||
void addListener(VtnRscListener listener);
|
||||
|
||||
/**
|
||||
* Removes the specified listener.
|
||||
*
|
||||
* @param listener VtnRsc listener
|
||||
*/
|
||||
void removeListener(VtnRscListener listener);
|
||||
|
||||
/**
|
||||
* Returns the SegmentationId of tenant.
|
||||
*
|
||||
* @param tenantId tenant identifier
|
||||
* @return SegmentationId the SegmentationId of tenant
|
||||
*/
|
||||
SegmentationId getL3vni(TenantId tenantId);
|
||||
|
||||
/**
|
||||
* Returns Classifier Ovs list of the specific tenant.
|
||||
*
|
||||
* @param tenantId tenant identifier
|
||||
* @return iterable collection of Device
|
||||
*/
|
||||
Iterator<Device> getClassifierOfTenant(TenantId tenantId);
|
||||
|
||||
/**
|
||||
* Returns Service function forwarders Ovs list of the specific tenant.
|
||||
*
|
||||
* @param tenantId tenant identifier
|
||||
* @return iterable collection of Device
|
||||
*/
|
||||
Iterator<Device> getSFFOfTenant(TenantId tenantId);
|
||||
|
||||
/**
|
||||
* Returns gateway mac address of the specific host.
|
||||
*
|
||||
* @param hostId host identifier
|
||||
* @return MacAddress of host
|
||||
*/
|
||||
MacAddress getGatewayMac(HostId hostId);
|
||||
|
||||
/**
|
||||
* Checks if a specific port is a service function.
|
||||
*
|
||||
* @param portId port identifier
|
||||
* @return true or false
|
||||
*/
|
||||
boolean isServiceFunction(VirtualPortId portId);
|
||||
|
||||
/**
|
||||
* Returns device identifier mapping to the specific port.
|
||||
*
|
||||
* @param portId port identifier
|
||||
* @return device identifier
|
||||
*/
|
||||
DeviceId getSFToSFFMaping(VirtualPortId portId);
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2015 Open Networking Laboratory
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Service for interacting with the inventory of Vtn resource.
|
||||
*/
|
||||
package org.onosproject.vtnrsc.service;
|
||||
Loading…
x
Reference in New Issue
Block a user