| /* |
| * Copyright 2020-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.kubevirtnode.api; |
| |
| import org.onlab.packet.IpAddress; |
| import org.onosproject.net.DeviceId; |
| |
| import java.util.Collection; |
| |
| /** |
| * Representation of a KubeVirt node used in kubevirt networking service. |
| */ |
| public interface KubevirtNode { |
| |
| /** |
| * Lists of kubernetes node types. |
| */ |
| enum Type { |
| /** |
| * Signifies that this is a kubevirt master node. |
| */ |
| MASTER, |
| |
| /** |
| * Signifies that this is a kubevirt worker node. |
| */ |
| WORKER, |
| } |
| |
| /** |
| * Returns cluster name of the node. |
| * |
| * @return cluster name |
| */ |
| String clusterName(); |
| |
| /** |
| * Returns hostname of the node. |
| * |
| * @return hostname |
| */ |
| String hostname(); |
| |
| /** |
| * Returns the type of the node. |
| * |
| * @return node type |
| */ |
| KubevirtNode.Type type(); |
| |
| /** |
| * Returns the OVSDB device ID of the node. |
| * |
| * @return ovsdb device id |
| */ |
| DeviceId ovsdb(); |
| |
| /** |
| * Returns the device ID of the integration bridge at the node. |
| * |
| * @return device id |
| */ |
| DeviceId intgBridge(); |
| |
| /** |
| * Returns the management network IP address of the node. |
| * |
| * @return ip address |
| */ |
| IpAddress managementIp(); |
| |
| /** |
| * Returns the data network IP address used for tunneling. |
| * |
| * @return ip address; null if tunnel mode is not enabled |
| */ |
| IpAddress dataIp(); |
| |
| /** |
| * Returns the initialization state of the node. |
| * |
| * @return node state |
| */ |
| KubevirtNodeState state(); |
| |
| /** |
| * Returns new kubevirt node instance with given state. |
| * |
| * @param newState updated state |
| * @return updated kubevirt node |
| */ |
| KubevirtNode updateState(KubevirtNodeState newState); |
| |
| /** |
| * Returns new kubevirt node instance with given integration bridge. |
| * |
| * @param deviceId integration bridge device ID |
| * @return updated kubevirt node |
| */ |
| KubevirtNode updateIntgBridge(DeviceId deviceId); |
| |
| /** |
| * Returns a collection of physical interfaces. |
| * |
| * @return physical interfaces |
| */ |
| Collection<KubevirtPhyInterface> phyIntfs(); |
| |
| /** |
| * Builder of new node entity. |
| */ |
| interface Builder { |
| /** |
| * Builds an immutable kubevirt node instance. |
| * |
| * @return kubevirt node instance |
| */ |
| KubevirtNode build(); |
| |
| /** |
| * Returns kubevirt node builder with supplied cluster name. |
| * |
| * @param clusterName cluster name |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder clusterName(String clusterName); |
| |
| /** |
| * Returns kubevirt node builder with supplied hostname. |
| * |
| * @param hostname hostname of the node |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder hostname(String hostname); |
| |
| /** |
| * Returns kubevirt node builder with supplied type. |
| * |
| * @param type kubevirt node type |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder type(KubevirtNode.Type type); |
| |
| /** |
| * Returns kubevirt node builder with supplied integration bridge name. |
| * |
| * @param deviceId integration bridge device ID |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder intgBridge(DeviceId deviceId); |
| |
| /** |
| * Returns kubevirt node builder with supplied management IP address. |
| * |
| * @param managementIp management IP address |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder managementIp(IpAddress managementIp); |
| |
| /** |
| * Returns kubevirt node builder with supplied data IP address. |
| * |
| * @param dataIp data IP address |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder dataIp(IpAddress dataIp); |
| |
| /** |
| * Returns kubevirt node builder with supplied physical interfaces. |
| * |
| * @param phyIntfs a collection of physical interfaces |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder phyIntfs(Collection<KubevirtPhyInterface> phyIntfs); |
| |
| /** |
| * Returns kubevirt node builder with supplied node state. |
| * |
| * @param state kubevirt node state |
| * @return kubevirt node builder |
| */ |
| KubevirtNode.Builder state(KubevirtNodeState state); |
| } |
| } |