From 55d2c53575a2769c447a8430a6aa85b4e7e0c903 Mon Sep 17 00:00:00 2001 From: Rudi Schlatte Date: Thu, 4 Apr 2024 15:54:10 +0200 Subject: [PATCH] Fix node labeling - use cluster id in call, not app id - make sure node names conform to SAL's expectations Change-Id: Icacce696a8d112944778378b5f5bb21d4e69fd6e --- .../nebulouscloud/optimiser/controller/ExnConnector.java | 2 +- .../optimiser/controller/NebulousAppDeployer.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/ExnConnector.java b/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/ExnConnector.java index 34c03ab..cfaed92 100644 --- a/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/ExnConnector.java +++ b/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/ExnConnector.java @@ -468,7 +468,7 @@ public class ExnConnector { public boolean labelNodes(String appID, String clusterID, JsonNode labels) { Map msg; try { - msg = Map.of("metaData", Map.of("user", "admin", "clusterName", appID), + msg = Map.of("metaData", Map.of("user", "admin", "clusterName", clusterID), "body", mapper.writeValueAsString(labels)); } catch (JsonProcessingException e) { log.error("Could not convert JSON to string (this should never happen)", diff --git a/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/NebulousAppDeployer.java b/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/NebulousAppDeployer.java index ceea698..e8289c1 100644 --- a/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/NebulousAppDeployer.java +++ b/optimiser-controller/src/main/java/eu/nebulouscloud/optimiser/controller/NebulousAppDeployer.java @@ -96,7 +96,9 @@ public class NebulousAppDeployer { } /** - * Create a globally-unique node name. + * Create a globally-unique node name. The node name has to conform to + * Linux hostname rules: lowercase letters, numbers and underscore only, + * starting with a letter. * * @param clusterName the unique cluster name. * @param componentName the KubeVela component name. @@ -105,7 +107,7 @@ public class NebulousAppDeployer { * @return a fresh node name. */ private static String createNodeName(String clusterName, String componentName, int deployGeneration, int nodeNumber) { - return String.format("N%s-%s-%s-%s", clusterName, componentName, deployGeneration, nodeNumber); + return String.format("n%s-%s-%s-%s", clusterName.toLowerCase(), componentName.toLowerCase(), deployGeneration, nodeNumber); } /** @@ -207,7 +209,7 @@ public class NebulousAppDeployer { // Controller node log.info("Deciding on controller node candidate", keyValue("appId", appUUID), keyValue("clusterName", clusterName)); - String masterNodeName = "N" + clusterName + "-masternode"; // safe because all component node names end with a number + String masterNodeName = "n" + clusterName.toLowerCase() + "-masternode"; // safe because all component node names end with a number NodeCandidate masterNodeCandidate = null; if (controllerCandidates.size() > 0) { masterNodeCandidate = controllerCandidates.get(0);