blob: 6f67f73d6e106c5802cec22f2f2b3e3d0ae0af07 [file] [log] [blame]
/*
* Copyright 2015-present 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);
}