blob: f879d2b800553a4630ebf29a18f6d447b7bf605e [file] [log] [blame]
/*
* Copyright 2021-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.kubevirtnetworking.api;
import org.onlab.packet.IpAddress;
/**
* Representation of floating IP address.
*/
public interface KubevirtFloatingIp {
/**
* Returns the floating IP identifier.
*
* @return floating IP identifier
*/
String id();
/**
* Returns the name of router where the floating IP is associated.
*
* @return name of router
*/
String routerName();
/**
* Returns the floating IP address.
*
* @return floating IP address
*/
IpAddress floatingIp();
/**
* Returns the fixed IP address.
*
* @return fixed IP address
*/
IpAddress fixedIp();
/**
* Returns the name of POD where this floating IP is associated with.
*
* @return POD name
*/
String podName();
/**
* Updates the kubevirt floating IP with the supplied fixed IP address.
*
* @param ip fixed IP address
* @return kubevirt floating IP
*/
KubevirtFloatingIp updateFixedIp(IpAddress ip);
/**
* Updates the kubevirt floating IP with the supplied pod Name.
*
* @param name POD name
* @return kubevirt floating IP
*/
KubevirtFloatingIp updatePodName(String name);
interface Builder {
/**
* Builds an immutable floaing IP instance.
*
* @return kubevirt floating IP
*/
KubevirtFloatingIp build();
/**
* Returns kubevirt floating IP builder with supplied identifier.
*
* @param id floating IP identifier
* @return floating IP builder
*/
Builder id(String id);
/**
* Returns kubevirt floating IP builder with supplied router name.
*
* @param name router name
* @return floating IP builder
*/
Builder routerName(String name);
/**
* Returns kubevirt floating IP builder with supplied floating IP address.
*
* @param ip floating IP address
* @return floating IP builder
*/
Builder floatingIp(IpAddress ip);
/**
* Returns kubevirt floating IP builder with supplied fixed IP address.
*
* @param ip fixed IP address
* @return floating IP builder
*/
Builder fixedIp(IpAddress ip);
/**
* Returns kubevirt floating IP builder with supplied POD name.
*
* @param name POD name
* @return floating IP builder
*/
Builder podName(String name);
}
}