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/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