From 155a30748cfdcdffe31ce3b13f54008323f4774a Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Tue, 26 Sep 2023 03:21:11 -0600 Subject: [PATCH] Allow configkey to set 'cloud-name' cloud-init metadata (#7964) * Allow configkey to set 'cloud-name' cloud-init metadata * Update engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com> * Update server/src/main/java/com/cloud/network/NetworkModelImpl.java Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com> * Update server/src/main/java/com/cloud/network/router/CommandSetupHelper.java Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com> * Revert "Update server/src/main/java/com/cloud/network/router/CommandSetupHelper.java" This reverts commit 8abc3e38c4f973227e77253a8bcf3c94827d187f. * Revert "Update server/src/main/java/com/cloud/network/NetworkModelImpl.java" This reverts commit 7f239be919112913d764b141e943acca4473f755. * Rework/Fix review code suggestions --------- Co-authored-by: Marcus Sorensen Co-authored-by: Daniel Augusto Veronezi Salvador <38945620+GutoVeronezi@users.noreply.github.com> --- api/src/main/java/com/cloud/network/NetworkModel.java | 4 +++- .../src/main/java/com/cloud/vm/VirtualMachineManager.java | 3 +++ .../main/java/com/cloud/vm/VirtualMachineManagerImpl.java | 2 +- server/src/main/java/com/cloud/network/NetworkModelImpl.java | 5 +++++ .../java/com/cloud/network/router/CommandSetupHelper.java | 5 +++++ 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/cloud/network/NetworkModel.java b/api/src/main/java/com/cloud/network/NetworkModel.java index 96f38b64bcd..53ac735cf05 100644 --- a/api/src/main/java/com/cloud/network/NetworkModel.java +++ b/api/src/main/java/com/cloud/network/NetworkModel.java @@ -73,6 +73,7 @@ public interface NetworkModel { String HYPERVISOR_HOST_NAME_FILE = "hypervisor-host-name"; String CLOUD_DOMAIN_FILE = "cloud-domain"; String CLOUD_DOMAIN_ID_FILE = "cloud-domain-id"; + String CLOUD_NAME_FILE = "cloud-name"; int CONFIGDATA_DIR = 0; int CONFIGDATA_FILE = 1; int CONFIGDATA_CONTENT = 2; @@ -83,11 +84,12 @@ public interface NetworkModel { .put(PUBLIC_HOSTNAME_FILE, "name") .put(CLOUD_DOMAIN_FILE, CLOUD_DOMAIN_FILE) .put(CLOUD_DOMAIN_ID_FILE, CLOUD_DOMAIN_ID_FILE) + .put(CLOUD_NAME_FILE, CLOUD_NAME_FILE) .put(HYPERVISOR_HOST_NAME_FILE, HYPERVISOR_HOST_NAME_FILE) .build(); List metadataFileNames = new ArrayList<>(Arrays.asList(SERVICE_OFFERING_FILE, AVAILABILITY_ZONE_FILE, LOCAL_HOSTNAME_FILE, LOCAL_IPV4_FILE, PUBLIC_HOSTNAME_FILE, PUBLIC_IPV4_FILE, - INSTANCE_ID_FILE, VM_ID_FILE, PUBLIC_KEYS_FILE, CLOUD_IDENTIFIER_FILE, HYPERVISOR_HOST_NAME_FILE)); + INSTANCE_ID_FILE, VM_ID_FILE, PUBLIC_KEYS_FILE, CLOUD_IDENTIFIER_FILE, CLOUD_NAME_FILE, HYPERVISOR_HOST_NAME_FILE)); static final ConfigKey MACIdentifier = new ConfigKey<>("Advanced",Integer.class, "mac.identifier", "0", "This value will be used while generating the mac addresses for isolated and shared networks. The hexadecimal equivalent value will be present at the 2nd octet of the mac address. Default value is zero (0) which means that the DB id of the zone will be used.", true, ConfigKey.Scope.Zone); diff --git a/engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java b/engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java index 82396cf4635..8cd67f25331 100644 --- a/engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java +++ b/engine/api/src/main/java/com/cloud/vm/VirtualMachineManager.java @@ -83,6 +83,9 @@ public interface VirtualMachineManager extends Manager { ConfigKey AllowExposeDomainInMetadata = new ConfigKey<>("Advanced", Boolean.class, "metadata.allow.expose.domain", "false", "If set to true, it allows the VM's domain to be seen in metadata.", true, ConfigKey.Scope.Domain); + ConfigKey MetadataCustomCloudName = new ConfigKey<>("Advanced", String.class, "metadata.custom.cloud.name", "", + "If provided, a custom cloud-name in cloud-init metadata", true, ConfigKey.Scope.Zone); + interface Topics { String VM_POWER_STATE = "vm.powerstate"; } diff --git a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java index ca453ed0de1..1c243d4062e 100755 --- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java @@ -4709,7 +4709,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac VmOpLockStateRetry, VmOpWaitInterval, ExecuteInSequence, VmJobCheckInterval, VmJobTimeout, VmJobStateReportInterval, VmConfigDriveLabel, VmConfigDriveOnPrimaryPool, VmConfigDriveForceHostCacheUse, VmConfigDriveUseHostCacheOnUnsupportedPool, HaVmRestartHostUp, ResourceCountRunningVMsonly, AllowExposeHypervisorHostname, AllowExposeHypervisorHostnameAccountLevel, SystemVmRootDiskSize, - AllowExposeDomainInMetadata + AllowExposeDomainInMetadata, MetadataCustomCloudName }; } diff --git a/server/src/main/java/com/cloud/network/NetworkModelImpl.java b/server/src/main/java/com/cloud/network/NetworkModelImpl.java index beb416cab57..2b251b1fdd3 100644 --- a/server/src/main/java/com/cloud/network/NetworkModelImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkModelImpl.java @@ -2673,6 +2673,11 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi vmData.add(new String[]{METATDATA_DIR, CLOUD_DOMAIN_ID_FILE, domain.getUuid()}); } + String customCloudName = VirtualMachineManager.MetadataCustomCloudName.valueIn(datacenterId); + if (org.apache.commons.lang3.StringUtils.isNotBlank(customCloudName)) { + vmData.add(new String[]{METATDATA_DIR, CLOUD_NAME_FILE, customCloudName}); + } + return vmData; } diff --git a/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java b/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java index 6bd01998600..a7ed6478efa 100644 --- a/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java +++ b/server/src/main/java/com/cloud/network/router/CommandSetupHelper.java @@ -231,6 +231,11 @@ public class CommandSetupHelper { vmDataCommand.addVmData(NetworkModel.METATDATA_DIR, NetworkModel.CLOUD_DOMAIN_ID_FILE, domain.getUuid()); } + String customCloudName = VirtualMachineManager.MetadataCustomCloudName.valueIn(vm.getDataCenterId()); + if (org.apache.commons.lang3.StringUtils.isNotBlank(customCloudName)) { + vmDataCommand.addVmData(NetworkModel.METATDATA_DIR, NetworkModel.CLOUD_NAME_FILE, customCloudName); + } + cmds.addCommand("vmdata", vmDataCommand); } }