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
diff --git a/apps/k8s-node/api/src/test/java/org/onosproject/k8snode/api/DefaultK8sApiConfigTest.java b/apps/k8s-node/api/src/test/java/org/onosproject/k8snode/api/DefaultK8sApiConfigTest.java
index 55e56f1..4abac0f 100644
--- a/apps/k8s-node/api/src/test/java/org/onosproject/k8snode/api/DefaultK8sApiConfigTest.java
+++ b/apps/k8s-node/api/src/test/java/org/onosproject/k8snode/api/DefaultK8sApiConfigTest.java
@@ -25,6 +25,8 @@
 import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
 import static org.onosproject.k8snode.api.K8sApiConfig.Scheme.HTTP;
 import static org.onosproject.k8snode.api.K8sApiConfig.Scheme.HTTPS;
+import static org.onosproject.k8snode.api.K8sApiConfig.State.CONNECTED;
+import static org.onosproject.k8snode.api.K8sApiConfig.State.DISCONNECTED;
 
 /**
  * Unit tests for DefaultK8sApiConfig.
@@ -73,6 +75,7 @@
                 .scheme(SCHEME_1)
                 .ipAddress(IP_ADDRESS_1)
                 .port(PORT_1)
+                .state(CONNECTED)
                 .token(TOKEN_1)
                 .caCertData(CA_CERT_DATA_1)
                 .clientCertData(CLIENT_CERT_DATA_1)
@@ -83,6 +86,7 @@
                 .scheme(SCHEME_1)
                 .ipAddress(IP_ADDRESS_1)
                 .port(PORT_1)
+                .state(CONNECTED)
                 .token(TOKEN_1)
                 .caCertData(CA_CERT_DATA_1)
                 .clientCertData(CLIENT_CERT_DATA_1)
@@ -93,6 +97,7 @@
                 .scheme(SCHEME_2)
                 .ipAddress(IP_ADDRESS_2)
                 .port(PORT_2)
+                .state(DISCONNECTED)
                 .token(TOKEN_2)
                 .caCertData(CA_CERT_DATA_2)
                 .clientCertData(CLIENT_CERT_DATA_2)
@@ -120,6 +125,7 @@
         assertEquals(SCHEME_1, config.scheme());
         assertEquals(IP_ADDRESS_1, config.ipAddress());
         assertEquals(PORT_1, config.port());
+        assertEquals(CONNECTED, config.state());
         assertEquals(TOKEN_1, config.token());
         assertEquals(CA_CERT_DATA_1, config.caCertData());
         assertEquals(CLIENT_CERT_DATA_1, config.clientCertData());
