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