[ https://issues.apache.org/jira/browse/CLOUDSTACK-10292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16476085#comment-16476085 ]
ASF GitHub Bot commented on CLOUDSTACK-10292: --------------------------------------------- rhtyd closed pull request #2455: CLOUDSTACK-10292:Hostname in metadata when using external DNS is inco… URL: https://github.com/apache/cloudstack/pull/2455 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/api/src/main/java/com/cloud/network/NetworkModel.java b/api/src/main/java/com/cloud/network/NetworkModel.java index 5e9839449c8..c6d75aec7e4 100644 --- a/api/src/main/java/com/cloud/network/NetworkModel.java +++ b/api/src/main/java/com/cloud/network/NetworkModel.java @@ -310,7 +310,7 @@ boolean getNetworkEgressDefaultPolicy(Long networkId); List<String[]> generateVmData(String userData, String serviceOffering, String zoneName, - String vmName, long vmId, String publicKey, String password, Boolean isWindows); + String vmName, String vmHostName, long vmId, String publicKey, String password, Boolean isWindows); String getValidNetworkCidr(Network guestNetwork); 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 375b0910624..2e451067e52 100755 --- a/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java @@ -2526,7 +2526,7 @@ private void orchestrateMigrateWithStorage(final String vmUuid, final long srcHo final String zoneName = _dcDao.findById(vm.getDataCenterId()).getName(); boolean isWindows = _guestOSCategoryDao.findById(_guestOSDao.findById(vm.getGuestOSId()).getCategoryId()).getName().equalsIgnoreCase("Windows"); - vmData = _networkModel.generateVmData(userVm.getUserData(), serviceOffering, zoneName, vm.getInstanceName(), vm.getId(), + vmData = _networkModel.generateVmData(userVm.getUserData(), serviceOffering, zoneName, vm.getInstanceName(), vm.getHostName(), vm.getId(), (String) profile.getParameter(VirtualMachineProfile.Param.VmSshPubKey), (String) profile.getParameter(VirtualMachineProfile.Param.VmPassword), isWindows); String vmName = vm.getInstanceName(); String configDriveIsoRootFolder = "/tmp"; diff --git a/server/src/main/java/com/cloud/network/NetworkModelImpl.java b/server/src/main/java/com/cloud/network/NetworkModelImpl.java index a008bdfcd1b..e5ee8ddef8c 100644 --- a/server/src/main/java/com/cloud/network/NetworkModelImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkModelImpl.java @@ -2345,7 +2345,7 @@ public boolean getNetworkEgressDefaultPolicy(Long networkId) { @Override public List<String[]> generateVmData(String userData, String serviceOffering, String zoneName, - String vmName, long vmId, String publicKey, String password, Boolean isWindows) { + String vmName, String hostName, long vmId, String publicKey, String password, Boolean isWindows) { final List<String[]> vmData = new ArrayList<String[]>(); if (userData != null) { @@ -2353,7 +2353,7 @@ public boolean getNetworkEgressDefaultPolicy(Long networkId) { } vmData.add(new String[]{METATDATA_DIR, SERVICE_OFFERING_FILE, StringUtils.unicodeEscape(serviceOffering)}); vmData.add(new String[]{METATDATA_DIR, AVAILABILITY_ZONE_FILE, StringUtils.unicodeEscape(zoneName)}); - vmData.add(new String[]{METATDATA_DIR, LOCAL_HOSTNAME_FILE, StringUtils.unicodeEscape(vmName)}); + vmData.add(new String[]{METATDATA_DIR, LOCAL_HOSTNAME_FILE, StringUtils.unicodeEscape(hostName)}); vmData.add(new String[]{METATDATA_DIR, INSTANCE_ID_FILE, vmName}); vmData.add(new String[]{METATDATA_DIR, VM_ID_FILE, String.valueOf(vmId)}); vmData.add(new String[]{METATDATA_DIR, PUBLIC_KEYS_FILE, publicKey}); diff --git a/server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java b/server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java index 8c0f5009874..d45569dbc06 100644 --- a/server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java +++ b/server/src/main/java/com/cloud/network/element/ConfigDriveNetworkElement.java @@ -374,7 +374,7 @@ private boolean updateConfigDrive(VirtualMachineProfile profile, String publicKe final String zoneName = _dcDao.findById(vm.getDataCenterId()).getName(); boolean isWindows = _guestOSCategoryDao.findById(_guestOSDao.findById(vm.getGuestOSId()).getCategoryId()).getName().equalsIgnoreCase("Windows"); - List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, zoneName, vm.getInstanceName(), vm.getId(), + List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, zoneName, vm.getInstanceName(), vm.getHostName(), vm.getId(), publicKey, (String) profile.getParameter(VirtualMachineProfile.Param.VmPassword), isWindows); profile.setVmData(vmData); profile.setConfigDriveLabel(VirtualMachineManager.VmConfigDriveLabel.value()); diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java index dab741c3c27..c622377511c 100644 --- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java @@ -4126,7 +4126,7 @@ public boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile, Depl final String zoneName = _dcDao.findById(vm.getDataCenterId()).getName(); boolean isWindows = _guestOSCategoryDao.findById(_guestOSDao.findById(vm.getGuestOSId()).getCategoryId()).getName().equalsIgnoreCase("Windows"); - List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, zoneName, vm.getInstanceName(), vm.getId(), + List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, zoneName, vm.getInstanceName(), vm.getHostName(), vm.getId(), (String) profile.getParameter(VirtualMachineProfile.Param.VmSshPubKey), (String) profile.getParameter(VirtualMachineProfile.Param.VmPassword), isWindows); String vmName = vm.getInstanceName(); String configDriveIsoRootFolder = "/tmp"; diff --git a/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java b/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java index 3c3fd7097cd..8a8e8cbaa18 100644 --- a/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java +++ b/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java @@ -898,7 +898,7 @@ public boolean getNetworkEgressDefaultPolicy(Long networkId) { } @Override - public List<String[]> generateVmData(String userData, String serviceOffering, String zoneName, String vmName, long vmId, String publicKey, String password, Boolean isWindows) { + public List<String[]> generateVmData(String userData, String serviceOffering, String zoneName, String vmName, String vmHostName, long vmId, String publicKey, String password, Boolean isWindows) { return null; } diff --git a/server/src/test/java/com/cloud/network/element/ConfigDriveNetworkElementTest.java b/server/src/test/java/com/cloud/network/element/ConfigDriveNetworkElementTest.java index 11da24f95df..0d24684c9cf 100644 --- a/server/src/test/java/com/cloud/network/element/ConfigDriveNetworkElementTest.java +++ b/server/src/test/java/com/cloud/network/element/ConfigDriveNetworkElementTest.java @@ -97,6 +97,7 @@ private final long DATACENTERID = NETWORK_ID; private final String ZONENAME = "zone1"; private final String VMINSTANCENAME = "vm_name"; + private final String VMHOSTNAME = "vm_host_name"; private final String VMOFFERING = "custom_instance"; private final long VMID = 30L; private final String VMUSERDATA = "userdata"; @@ -160,6 +161,7 @@ public void setUp() throws NoSuchFieldException, IllegalAccessException { when(virtualMachine.getId()).thenReturn(VMID); when(virtualMachine.getServiceOfferingId()).thenReturn(SOID); when(virtualMachine.getDataCenterId()).thenReturn(DATACENTERID); + when(virtualMachine.getHostName()).thenReturn(VMHOSTNAME); when(virtualMachine.getInstanceName()).thenReturn(VMINSTANCENAME); when(virtualMachine.getUserData()).thenReturn(Base64.encode(VMUSERDATA.getBytes())); when(deployDestination.getHost()).thenReturn(hostVO); @@ -260,7 +262,7 @@ public void testAddPasswordAndUserdata() throws InsufficientCapacityException, R new String[]{"userdata", "user_data", VMUSERDATA}, new String[]{"metadata", "service-offering", VMOFFERING}, new String[]{"metadata", "availability-zone", ZONENAME}, - new String[]{"metadata", "local-hostname", VMINSTANCENAME}, + new String[]{"metadata", "local-hostname", VMHOSTNAME}, new String[]{"metadata", "vm-id", String.valueOf(VMID)}, new String[]{"metadata", "instance-id", String.valueOf(VMINSTANCENAME)}, new String[]{"metadata", "public-keys", PUBLIC_KEY}, diff --git a/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java b/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java index 50d9b0f6425..c433201eb3e 100644 --- a/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java +++ b/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java @@ -913,7 +913,7 @@ public boolean getNetworkEgressDefaultPolicy(Long networkId) { } @Override - public List<String[]> generateVmData(String userData, String serviceOffering, String zoneName, String vmName, long vmId, String publicKey, String password, Boolean isWindows) { + public List<String[]> generateVmData(String userData, String serviceOffering, String zoneName, String vmName, String vmHostName, long vmId, String publicKey, String password, Boolean isWindows) { return null; } ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Hostname in metadata when using external DNS is incorrect > --------------------------------------------------------- > > Key: CLOUDSTACK-10292 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-10292 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Reporter: mrunalini > Priority: Major > > In the current implementation, both the local-hostname and instance-id in the > metadata are pointing to same thing when VM is deployed in a network with > Network Offering that has no services. > The metadata for the VM is presented in configdrive.iso for a VM having > network with network offering that has no services. However the metadata > doesn't have any info around the name of the VM user has passed when > deploying the VM, instead the local_hostname.txt in the metadata refers to VM > internal name "i-12-254-VM" doesn't it needs to be the name of the VM user > has passed when creating the VM? > -- This message was sent by Atlassian JIRA (v7.6.3#76005)