blob: d01f3a20c1f56efc63dbb30660c78689e0eb9cd1 [file] [log] [blame]
/*
* Copyright 2019-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.k8snode.api;
import org.onlab.packet.IpAddress;
import org.onlab.packet.IpPrefix;
import java.util.Set;
/**
* Representation of configuration used in kubernetes API server.
*/
public interface K8sApiConfig {
/**
* Lists of authentication schemes.
*/
enum Scheme {
/**
* Signifies that this is a HTTP authentication scheme.
*/
HTTP,
/**
* Signifies that this is a HTTPS authentication scheme.
*/
HTTPS,
}
/**
* Lists of API server connectivity states.
*/
enum State {
/**
* Signifies that client is connected to k8s API server.
*/
CONNECTED,
/**
* Signifies that client is dis-connected from k8s API server.
*/
DISCONNECTED,
}
enum Mode {
/**
* Signifies that the CNI is running in normal mode.
*/
NORMAL,
/**
* Signifies that the CNI is running in pass-through mode.
*/
PASSTHROUGH,
}
/**
* Returns the cluster name.
*
* @return cluster name
*/
String clusterName();
/**
* Returns cluster short name.
*
* @return cluster short name
*/
String clusterShortName();
/**
* Returns the segmentation ID.
*
* @return segmentation ID
*/
int segmentId();
/**
* Returns the external network CIDR.
*
* @return external network CIDR
*/
IpPrefix extNetworkCidr();
/**
* Returns the authentication scheme.
*
* @return authentication scheme
*/
Scheme scheme();
/**
* Returns the IP address of kubernetes API server.
*
* @return IP address of kubernetes API server
*/
IpAddress ipAddress();
/**
* Returns the port number of kubernetes API server.
*
* @return port number of kubernetes API server
*/
int port();
/**
* Returns the connectivity state to kubernetes API server.
*
* @return connectivity state to kubernetes API server
*/
State state();
/**
* Returns the CNI running mode.
*
* @return running mode
*/
Mode mode();
/**
* Returns new kubernetes API config instance with given state.
*
* @param newState updated state
* @return updated kubernetes API config
*/
K8sApiConfig updateState(State newState);
/**
* Returns the token used for authenticating to API server.
*
* @return token value
*/
String token();
/**
* Returns the CA certificate data.
*
* @return CA certificate data
*/
String caCertData();
/**
* Returns the client certificate data.
*
* @return client certificate data
*/
String clientCertData();
/**
* Returns the client key data.
*
* @return client key data
*/
String clientKeyData();
/**
* Returns the host Nodes info set.
*
* @return host nodes info set
*/
Set<HostNodesInfo> infos();
/**
* Builder of new API config entity.
*/
interface Builder {
/**
* Builds an immutable kubernetes API config instance.
*
* @return kubernetes API config instance
*/
K8sApiConfig build();
/**
* Returns kubernetes API server config builder with cluster name.
*
* @param clusterName cluster name
* @return kubernetes API config builder
*/
Builder clusterName(String clusterName);
/**
* Returns kubernetes API server config builder with segment ID.
*
* @param segmentId segment ID
* @return kubernetes API config builder
*/
Builder segmentId(int segmentId);
/**
* Returns kubernetes API server config builder with external network CIDR.
*
* @param extNetworkCidr external network CIDR
* @return kubernetes API config builder
*/
Builder extNetworkCidr(IpPrefix extNetworkCidr);
/**
* Returns kubernetes API server config builder with supplied scheme.
*
* @param scheme scheme of authentication
* @return kubernetes API config builder
*/
Builder scheme(Scheme scheme);
/**
* Returns kubernetes API server config builder with supplied IP address.
*
* @param ipAddress IP address of kubernetes API server
* @return kubernetes API config builder
*/
Builder ipAddress(IpAddress ipAddress);
/**
* Returns kubernetes API server config builder with supplied port number.
*
* @param port port number of kubernetes API server
* @return kubernetes API config builder
*/
Builder port(int port);
/**
* Returns kubernetes API server config builder with supplied state.
*
* @param state connectivity state
* @return kubernetes API config builder
*/
Builder state(State state);
/**
* Returns kubernetes API server config builder with supplied mode.
*
* @param mode CNI running mode
* @return kubernetes API config builder
*/
Builder mode(Mode mode);
/**
* Returns kubernetes API server config builder with supplied token.
*
* @param token token for authentication
* @return kubernetes API config builder
*/
Builder token(String token);
/**
* Returns kubernetes API server config builder with supplied CA certificate data.
*
* @param caCertData CA certificate data
* @return kubernetes API config builder
*/
Builder caCertData(String caCertData);
/**
* Returns kubernetes API server config builder with supplied client certificate data.
*
* @param clientCertData client certificate data
* @return kubernetes API config builder
*/
Builder clientCertData(String clientCertData);
/**
* Returns kubernetes API server config builder with supplied client key data.
*
* @param clientKeyData client key data
* @return kubernetes API config builder
*/
Builder clientKeyData(String clientKeyData);
/**
* Returns kubernetes API server config builder with supplied hostNodesInfo.
*
* @param infos hostNodesInfo
* @return kubernetes API config builder
*/
Builder infos(Set<HostNodesInfo> infos);
}
}