diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java
index af280fb..1cf58ed 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java
@@ -40,6 +40,7 @@
     private final String clientKeyData;
     private final String serviceFqdn;
     private final String apiServerFqdn;
+    private final IpAddress controllerIp;
 
     /**
      * Default constructor for Kubevirt API config.
@@ -54,12 +55,14 @@
      * @param clientKeyData     client key data
      * @param serviceFqdn       service FQDN
      * @param apiServerFqdn     API server FQDN
+     * @param controllerIp      controller IP address
      */
     private DefaultKubevirtApiConfig(Scheme scheme, IpAddress ipAddress,
                                     int port, State state,
                                     String token, String caCertData,
                                     String clientCertData, String clientKeyData,
-                                    String serviceFqdn, String apiServerFqdn) {
+                                    String serviceFqdn, String apiServerFqdn,
+                                    IpAddress controllerIp) {
         this.scheme = scheme;
         this.ipAddress = ipAddress;
         this.port = port;
@@ -70,6 +73,7 @@
         this.clientKeyData = clientKeyData;
         this.serviceFqdn = serviceFqdn;
         this.apiServerFqdn = apiServerFqdn;
+        this.controllerIp = controllerIp;
     }
 
     @Override
@@ -105,6 +109,7 @@
                 .clientKeyData(clientKeyData)
                 .serviceFqdn(serviceFqdn)
                 .apiServerFqdn(apiServerFqdn)
+                .controllerIp(controllerIp)
                 .build();
     }
 
@@ -121,6 +126,7 @@
                 .clientKeyData(clientKeyData)
                 .serviceFqdn(serviceFqdn)
                 .apiServerFqdn(apiServerFqdn)
+                .controllerIp(controllerIp)
                 .build();
     }
 
@@ -137,6 +143,7 @@
                 .clientKeyData(clientKeyData)
                 .serviceFqdn(serviceFqdn)
                 .apiServerFqdn(apiServerFqdn)
+                .controllerIp(controllerIp)
                 .build();
     }
 
@@ -171,6 +178,11 @@
     }
 
     @Override
+    public IpAddress controllerIp() {
+        return controllerIp;
+    }
+
+    @Override
     public boolean equals(Object o) {
         if (this == o) {
             return true;
@@ -185,13 +197,15 @@
                 clientCertData.equals(that.clientCertData) &&
                 clientKeyData.equals(that.clientKeyData) &&
                 Objects.equals(serviceFqdn, that.serviceFqdn) &&
-                Objects.equals(apiServerFqdn, that.apiServerFqdn);
+                Objects.equals(apiServerFqdn, that.apiServerFqdn) &&
+                Objects.equals(controllerIp, that.controllerIp);
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(scheme, ipAddress, port, state, token,
-                caCertData, clientCertData, clientKeyData, serviceFqdn, apiServerFqdn);
+                caCertData, clientCertData, clientKeyData, serviceFqdn,
+                apiServerFqdn, controllerIp);
     }
 
     @Override
@@ -207,6 +221,7 @@
                 .add("clientKeyData", clientKeyData)
                 .add("serviceFqdn", serviceFqdn)
                 .add("apiServerFqdn", apiServerFqdn)
+                .add("controllerIp", controllerIp)
                 .toString();
     }
 
@@ -231,6 +246,7 @@
         private String clientKeyData;
         private String serviceFqdn;
         private String apiServerFqdn;
+        private IpAddress controllerIp;
 
         @Override
         public KubevirtApiConfig build() {
@@ -245,7 +261,8 @@
             }
 
             return new DefaultKubevirtApiConfig(scheme, ipAddress, port, state,
-                    token, caCertData, clientCertData, clientKeyData, serviceFqdn, apiServerFqdn);
+                    token, caCertData, clientCertData, clientKeyData, serviceFqdn,
+                    apiServerFqdn, controllerIp);
         }
 
         @Override
@@ -307,5 +324,11 @@
             this.apiServerFqdn = apiServerFqdn;
             return this;
         }
+
+        @Override
+        public Builder controllerIp(IpAddress controllerIp) {
+            this.controllerIp = controllerIp;
+            return this;
+        }
     }
 }
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java
index c323625..74ad4cb 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java
@@ -147,6 +147,13 @@
     String apiServerFqdn();
 
     /**
+     * Returns the controller IP address.
+     *
+     * @return controller IP address
+     */
+    IpAddress controllerIp();
+
+    /**
      * Builder of new API config entity.
      */
     interface Builder {
@@ -237,5 +244,13 @@
          * @return Kubevirt API config builder
          */
         Builder apiServerFqdn(String apiServerFqdn);
+
+        /**
+         * Returns kubevirt API server config builder with the supplied controller IP.
+         *
+         * @param controllerIp controller IP address
+         * @return Kubevirt API config builder
+         */
+        Builder controllerIp(IpAddress controllerIp);
     }
 }
diff --git a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java
index bd40ab1..7b98323 100644
--- a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java
+++ b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java
@@ -59,6 +59,9 @@
     private static final String API_SERVER_FQDN_1 = "kubernetes.default.svc.cluster.local";
     private static final String API_SERVER_FQDN_2 = "kubernetes.default.svc.cluster.sona";
 
+    private static final IpAddress CONTROLLER_IP_1 = IpAddress.valueOf("127.0.0.1");
+    private static final IpAddress CONTROLLER_IP_2 = IpAddress.valueOf("169.254.169.254");
+
     private KubevirtApiConfig config1;
     private KubevirtApiConfig sameAsConfig1;
     private KubevirtApiConfig config2;
@@ -87,6 +90,7 @@
                 .clientKeyData(CLIENT_KEY_DATA_1)
                 .serviceFqdn(SERVICE_FQDN_1)
                 .apiServerFqdn(API_SERVER_FQDN_1)
+                .controllerIp(CONTROLLER_IP_1)
                 .build();
 
         sameAsConfig1 = DefaultKubevirtApiConfig.builder()
@@ -100,6 +104,7 @@
                 .clientKeyData(CLIENT_KEY_DATA_1)
                 .serviceFqdn(SERVICE_FQDN_1)
                 .apiServerFqdn(API_SERVER_FQDN_1)
+                .controllerIp(CONTROLLER_IP_1)
                 .build();
 
         config2 = DefaultKubevirtApiConfig.builder()
@@ -113,6 +118,7 @@
                 .clientKeyData(CLIENT_KEY_DATA_2)
                 .serviceFqdn(SERVICE_FQDN_2)
                 .apiServerFqdn(API_SERVER_FQDN_2)
+                .controllerIp(CONTROLLER_IP_2)
                 .build();
     }
 
@@ -143,5 +149,6 @@
         assertEquals(CLIENT_KEY_DATA_1, config.clientKeyData());
         assertEquals(SERVICE_FQDN_1, config.serviceFqdn());
         assertEquals(API_SERVER_FQDN_1, config.apiServerFqdn());
+        assertEquals(CONTROLLER_IP_1, config.controllerIp());
     }
 }
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java
index d01c33a..5b9c268 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java
@@ -33,7 +33,7 @@
         description = "Lists all KubeVirt API server configs registered to the service")
 public class KubevirtListApiConfigsCommand extends AbstractShellCommand {
 
-    private static final String FORMAT = "%-10s%-25s%-10s%-10s";
+    private static final String FORMAT = "%-10s%-20s%-10s%-25s%-10s";
 
     @Override
     protected void doExecute() throws Exception {
@@ -43,10 +43,14 @@
         if (outputJson()) {
             print("%s", json(config));
         } else {
-            print(FORMAT, "Scheme", "IpAddress", "Port", "State");
+            print(FORMAT, "Scheme", "Server IP", "Port", "Controller IP", "State");
+            String controllerIp = "N/A";
             if (config != null) {
+                if (config.controllerIp() != null) {
+                    controllerIp = config.controllerIp().toString();
+                }
                 print(FORMAT, config.scheme().name(), config.ipAddress().toString(),
-                        config.port(), config.state().name());
+                        config.port(), controllerIp, config.state().name());
             } else {
                 print("Kubevirt config not found!");
             }
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java
index aa2bfa1..9fc2099 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java
@@ -43,6 +43,7 @@
     private static final String CLIENT_KEY_DATA = "clientKeyData";
     private static final String SERVICE_FQDN = "serviceFqdn";
     private static final String API_SERVER_FQDN = "apiServerFqdn";
+    private static final String CONTROLLER_IP = "controllerIp";
 
     private static final String MISSING_MESSAGE = " is required in KubevirtApiConfig";
 
@@ -89,6 +90,10 @@
             node.put(API_SERVER_FQDN, entity.apiServerFqdn());
         }
 
+        if (entity.controllerIp() != null) {
+            node.put(CONTROLLER_IP, entity.controllerIp().toString());
+        }
+
         return node;
     }
 
@@ -116,6 +121,7 @@
         JsonNode clientKeyDataJson = json.get(CLIENT_KEY_DATA);
         JsonNode serviceFqdn = json.get(SERVICE_FQDN);
         JsonNode apiServerFqdn = json.get(API_SERVER_FQDN);
+        JsonNode controllerIp = json.get(CONTROLLER_IP);
 
         String token = "";
         String caCertData = "";
@@ -176,6 +182,10 @@
             builder.apiServerFqdn(apiServerFqdn.asText());
         }
 
+        if (controllerIp != null) {
+            builder.controllerIp(IpAddress.valueOf(controllerIp.asText()));
+        }
+
         return builder.build();
     }
 }
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java
index de45151..3408ed1 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/impl/DefaultKubevirtNodeHandler.java
@@ -303,21 +303,23 @@
     private void createBridge(KubevirtNode node, String bridgeName, DeviceId devId) {
         Device device = deviceService.getDevice(node.ovsdb());
 
-        IpAddress serverIp;
+        IpAddress controllerIp = apiConfigService.apiConfig().controllerIp();
         String serviceFqdn = apiConfigService.apiConfig().serviceFqdn();
         IpAddress serviceIp = null;
 
-        if (serviceFqdn != null) {
-            serviceIp = resolveHostname(serviceFqdn);
+        if (controllerIp == null) {
+            if (serviceFqdn != null) {
+                serviceIp = resolveHostname(serviceFqdn);
+            }
+
+            if (serviceIp != null) {
+                controllerIp = serviceIp;
+            } else {
+                controllerIp = apiConfigService.apiConfig().ipAddress();
+            }
         }
 
-        if (serviceIp != null) {
-            serverIp = serviceIp;
-        } else {
-            serverIp = apiConfigService.apiConfig().ipAddress();
-        }
-
-        ControllerInfo controlInfo = new ControllerInfo(serverIp, DEFAULT_OFPORT, DEFAULT_OF_PROTO);
+        ControllerInfo controlInfo = new ControllerInfo(controllerIp, DEFAULT_OFPORT, DEFAULT_OF_PROTO);
         List<ControllerInfo> controllers = Lists.newArrayList(controlInfo);
 
         String dpid = devId.toString().substring(DPID_BEGIN);
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
index c3861f7..b659ec6 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/web/KubevirtNodeWebResource.java
@@ -23,6 +23,7 @@
 import org.onosproject.kubevirtnode.api.KubevirtApiConfigService;
 import org.onosproject.kubevirtnode.api.KubevirtNode;
 import org.onosproject.kubevirtnode.api.KubevirtNodeAdminService;
+import org.onosproject.kubevirtnode.api.KubevirtNodeService;
 import org.onosproject.kubevirtnode.api.KubevirtNodeState;
 import org.onosproject.rest.AbstractWebResource;
 import org.slf4j.Logger;
@@ -281,11 +282,28 @@
     @Path("healthz")
     public Response healthz() {
         KubevirtApiConfigService configService = get(KubevirtApiConfigService.class);
-        KubevirtApiConfig config = configService.apiConfig();
+        KubevirtNodeService nodeService = get(KubevirtNodeService.class);
 
         // TODO: we need to add more health check items
+        boolean allInit = true;
+        KubevirtApiConfig config = configService.apiConfig();
+
+        if (nodeService.nodes().size() == 0) {
+            allInit = false;
+        } else {
+            for (KubevirtNode node : nodeService.nodes()) {
+                if (node.state() != INIT) {
+                    allInit = false;
+                }
+            }
+        }
+
+        String result = ERROR;
+        if (config != null && !allInit) {
+            result = OK;
+        }
+
         ObjectNode jsonResult = mapper().createObjectNode();
-        String result = config != null ? OK : ERROR;
         jsonResult.put(API_CONFIG, result);
         return ok(jsonResult).build();
     }
diff --git a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java
index 32a4505..16af906 100644
--- a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java
+++ b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java
@@ -88,6 +88,7 @@
                 .clientKeyData("clientKeyData")
                 .serviceFqdn("kubevirt.edgestack.svc.cluster.local")
                 .apiServerFqdn("kubernetes.default.svc.cluster.local")
+                .controllerIp(IpAddress.valueOf("127.0.0.1"))
                 .build();
         ObjectNode configJson = kubevirtApiConfigCodec.encode(config, context);
         assertThat(configJson, matchesKubevirtApiConfig(config));
@@ -111,6 +112,7 @@
         assertEquals("clientKeyData", config.clientKeyData());
         assertEquals("kubevirt.edgestack.svc.cluster.local", config.serviceFqdn());
         assertEquals("kubernetes.default.svc.cluster.local", config.apiServerFqdn());
+        assertEquals("127.0.0.1", config.controllerIp().toString());
     }
 
     private KubevirtApiConfig getKubevirtApiConfig(String resourceName) throws IOException {
diff --git a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigJsonMatcher.java b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigJsonMatcher.java
index 52c488c..2163f12 100644
--- a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigJsonMatcher.java
+++ b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigJsonMatcher.java
@@ -37,6 +37,7 @@
     private static final String CLIENT_KEY_DATA = "clientKeyData";
     private static final String SERVICE_FQDN = "serviceFqdn";
     private static final String API_SERVER_FQDN = "apiServerFqdn";
+    private static final String CONTROLLER_IP = "controllerIp";
 
     private KubevirtApiConfigJsonMatcher(KubevirtApiConfig kubevirtApiConfig) {
         this.kubevirtApiConfig = kubevirtApiConfig;
@@ -142,6 +143,17 @@
             }
         }
 
+        // Controller IP
+        JsonNode jsonControllerIp = jsonNode.get(CONTROLLER_IP);
+        String controllerIp = kubevirtApiConfig.controllerIp().toString();
+
+        if (jsonControllerIp != null) {
+            if (!jsonControllerIp.asText().equals(controllerIp)) {
+                description.appendText("controller IP was " + jsonControllerIp);
+                return false;
+            }
+        }
+
         return true;
     }
 
diff --git a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json
index b19c9e4..b95c29a 100644
--- a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json
+++ b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json
@@ -7,5 +7,6 @@
   "clientCertData": "clientCertData",
   "clientKeyData": "clientKeyData",
   "serviceFqdn": "kubevirt.edgestack.svc.cluster.local",
-  "apiServerFqdn": "kubernetes.default.svc.cluster.local"
+  "apiServerFqdn": "kubernetes.default.svc.cluster.local",
+  "controllerIp": "127.0.0.1"
 }
\ No newline at end of file
diff --git a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json
index f706cc3..7a5c5f5 100644
--- a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json
+++ b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json
@@ -5,5 +5,6 @@
   "token": "token",
   "caCertData": "caCertData",
   "clientCertData": "clientCertData",
-  "clientKeyData": "clientKeyData"
+  "clientKeyData": "clientKeyData",
+  "controllerIp": "127.0.0.1"
 }
\ No newline at end of file
