Manage k8s API config life cycle, bootstrap k8s node using k8s client
Change-Id: I9926c6d4903da514b66a3bcbe05358c605c9cc1a
diff --git a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sApiConfig.java b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sApiConfig.java
index 157763f..48f6b13 100644
--- a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sApiConfig.java
+++ b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sApiConfig.java
@@ -33,17 +33,19 @@
private final Scheme scheme;
private final IpAddress ipAddress;
private final int port;
+ private final State state;
private final String token;
private final String caCertData;
private final String clientCertData;
private final String clientKeyData;
private DefaultK8sApiConfig(Scheme scheme, IpAddress ipAddress, int port,
- String token, String caCertData,
+ State state, String token, String caCertData,
String clientCertData, String clientKeyData) {
this.scheme = scheme;
this.ipAddress = ipAddress;
this.port = port;
+ this.state = state;
this.token = token;
this.caCertData = caCertData;
this.clientCertData = clientCertData;
@@ -66,6 +68,25 @@
}
@Override
+ public State state() {
+ return state;
+ }
+
+ @Override
+ public K8sApiConfig updateState(State newState) {
+ return new Builder()
+ .scheme(scheme)
+ .ipAddress(ipAddress)
+ .port(port)
+ .state(newState)
+ .token(token)
+ .caCertData(caCertData)
+ .clientCertData(clientCertData)
+ .clientKeyData(clientKeyData)
+ .build();
+ }
+
+ @Override
public String token() {
return token;
}
@@ -97,6 +118,7 @@
return port == that.port &&
scheme == that.scheme &&
ipAddress.equals(that.ipAddress) &&
+ state == that.state &&
token.equals(that.token) &&
caCertData.equals(that.caCertData) &&
clientCertData.equals(that.clientCertData) &&
@@ -105,7 +127,7 @@
@Override
public int hashCode() {
- return Objects.hash(scheme, ipAddress, port, token, caCertData,
+ return Objects.hash(scheme, ipAddress, port, state, token, caCertData,
clientCertData, clientKeyData);
}
@@ -115,6 +137,7 @@
.add("scheme", scheme)
.add("ipAddress", ipAddress)
.add("port", port)
+ .add("state", state)
.add("token", token)
.add("caCertData", caCertData)
.add("clientCertData", clientCertData)
@@ -136,6 +159,7 @@
private Scheme scheme;
private IpAddress ipAddress;
private int port;
+ private State state;
private String token;
private String caCertData;
private String clientCertData;
@@ -145,6 +169,7 @@
public K8sApiConfig build() {
checkArgument(scheme != null, NOT_NULL_MSG, "scheme");
checkArgument(ipAddress != null, NOT_NULL_MSG, "ipAddress");
+ checkArgument(state != null, NOT_NULL_MSG, "state");
if (scheme == HTTPS) {
checkArgument(token != null, NOT_NULL_MSG, "token");
@@ -153,7 +178,7 @@
checkArgument(clientKeyData != null, NOT_NULL_MSG, "clientKeyData");
}
- return new DefaultK8sApiConfig(scheme, ipAddress, port, token,
+ return new DefaultK8sApiConfig(scheme, ipAddress, port, state, token,
caCertData, clientCertData, clientKeyData);
}
@@ -176,6 +201,12 @@
}
@Override
+ public Builder state(State state) {
+ this.state = state;
+ return this;
+ }
+
+ @Override
public Builder token(String token) {
this.token = token;
return this;
diff --git a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
index 76b845c..3e26a50 100644
--- a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
+++ b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/DefaultK8sNode.java
@@ -90,6 +90,18 @@
}
@Override
+ public K8sNode updateIntgBridge(DeviceId deviceId) {
+ return new Builder()
+ .hostname(hostname)
+ .type(type)
+ .intgBridge(deviceId)
+ .managementIp(managementIp)
+ .dataIp(dataIp)
+ .state(state)
+ .build();
+ }
+
+ @Override
public IpAddress managementIp() {
return managementIp;
}
diff --git a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sApiConfig.java b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sApiConfig.java
index 0c63733..62d050d 100644
--- a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sApiConfig.java
+++ b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sApiConfig.java
@@ -38,6 +38,21 @@
}
/**
+ * 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,
+ }
+
+ /**
* Returns the authentication scheme.
*
* @return authentication scheme
@@ -59,6 +74,21 @@
int port();
/**
+ * Returns the connectivity state to kubernetes API server.
+ *
+ * @return connectivity state to kubernetes API server
+ */
+ State state();
+
+ /**
+ * 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
@@ -123,6 +153,14 @@
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 token.
*
* @param token token for authentication
diff --git a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sNode.java b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sNode.java
index 4abc2cb..671b37a 100644
--- a/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sNode.java
+++ b/apps/k8s-node/api/src/main/java/org/onosproject/k8snode/api/K8sNode.java
@@ -68,6 +68,14 @@
DeviceId intgBridge();
/**
+ * Returns new kubernetes node instance with given integration bridge.
+ *
+ * @param deviceId integration bridge device ID
+ * @return updated kubernetes node
+ */
+ K8sNode updateIntgBridge(DeviceId deviceId);
+
+ /**
* Returns the management network IP address of the node.
*
* @return ip address