Harden the health check logic of kubevirt control plane

Change-Id: I161e71ab473ace323b4433fa4b90860b014fe677
(cherry picked from commit e15a60c16ca78af405fd1681128e0201550d196a)
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/util/KubevirtNodeUtil.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/util/KubevirtNodeUtil.java
index 46a5ea5..f857364 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/util/KubevirtNodeUtil.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/util/KubevirtNodeUtil.java
@@ -318,6 +318,36 @@
     }
 
     /**
+     * Returns the type of the given kubernetes node.
+     *
+     * @param node kubernetes node
+     * @return node type
+     */
+    public static KubevirtNode.Type getNodeType(Node node) {
+        Set<String> rolesFull = node.getMetadata().getLabels().keySet().stream()
+                .filter(l -> l.contains(K8S_ROLE))
+                .collect(Collectors.toSet());
+
+        KubevirtNode.Type nodeType = WORKER;
+
+        for (String roleStr : rolesFull) {
+            String role = roleStr.split("/")[1];
+            if (MASTER.name().equalsIgnoreCase(role)) {
+                nodeType = MASTER;
+                break;
+            }
+        }
+
+        Map<String, String> annots = node.getMetadata().getAnnotations();
+        String gatewayConfig = annots.get(GATEWAY_CONFIG_KEY);
+        if (gatewayConfig != null) {
+            nodeType = GATEWAY;
+        }
+
+        return nodeType;
+    }
+
+    /**
      * Returns the kubevirt node from the node.
      *
      * @param node a raw node object returned from a k8s client