This is an automated email from the ASF dual-hosted git repository. rohit pushed a commit to branch 4.11 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.11 by this push: new f663b92 config-drive: use hostname of VM instance of internal VM id (#2645) f663b92 is described below commit f663b926c7a712440229e2c9011df89cfe6bf5be Author: Rohit Yadav <ro...@apache.org> AuthorDate: Wed May 16 13:19:21 2018 +0530 config-drive: use hostname of VM instance of internal VM id (#2645) This fixes config drive to use VM's user provided host-name instead of the internal VM instance ID for hostname related config in both cloudstack and openstack metadata bundled in the ISO. Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com> --- api/src/com/cloud/network/NetworkModel.java | 4 ++-- .../src/com/cloud/vm/VirtualMachineManagerImpl.java | 2 +- server/src/com/cloud/network/NetworkModelImpl.java | 6 +++--- .../com/cloud/network/element/ConfigDriveNetworkElement.java | 2 +- server/src/com/cloud/vm/UserVmManagerImpl.java | 2 +- server/test/com/cloud/network/MockNetworkModelImpl.java | 2 +- .../cloud/network/element/ConfigDriveNetworkElementTest.java | 11 ++++++----- server/test/com/cloud/vpc/MockNetworkModelImpl.java | 2 +- 8 files changed, 16 insertions(+), 15 deletions(-) diff --git a/api/src/com/cloud/network/NetworkModel.java b/api/src/com/cloud/network/NetworkModel.java index 35a6a63..a5bf5e4 100644 --- a/api/src/com/cloud/network/NetworkModel.java +++ b/api/src/com/cloud/network/NetworkModel.java @@ -73,7 +73,7 @@ public interface NetworkModel { AVAILABILITY_ZONE_FILE, "availability_zone", LOCAL_HOSTNAME_FILE, "hostname", VM_ID_FILE, "uuid", - INSTANCE_ID_FILE, "name" + PUBLIC_HOSTNAME_FILE, "name" ); static final ConfigKey<Integer> MACIdentifier = new ConfigKey<Integer>("Advanced",Integer.class, "mac.identifier", "0", @@ -313,7 +313,7 @@ public interface NetworkModel { boolean getNetworkEgressDefaultPolicy(Long networkId); List<String[]> generateVmData(String userData, String serviceOffering, long datacenterId, - String vmName, long vmId, String vmUuid, String guestIpAddress, String publicKey, String password, Boolean isWindows); + String vmName, String vmHostName, long vmId, String vmUuid, String guestIpAddress, String publicKey, String password, Boolean isWindows); String getValidNetworkCidr(Network guestNetwork); diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java index 6cf9452..5135c0f 100755 --- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java +++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java @@ -2525,7 +2525,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac final String serviceOffering = _serviceOfferingDao.findByIdIncludingRemoved(vm.getId(), vm.getServiceOfferingId()).getDisplayText(); boolean isWindows = _guestOSCategoryDao.findById(_guestOSDao.findById(vm.getGuestOSId()).getCategoryId()).getName().equalsIgnoreCase("Windows"); - vmData = _networkModel.generateVmData(userVm.getUserData(), serviceOffering, vm.getDataCenterId(), vm.getInstanceName(), vm.getId(), + vmData = _networkModel.generateVmData(userVm.getUserData(), serviceOffering, vm.getDataCenterId(), vm.getInstanceName(), vm.getHostName(), vm.getId(), vm.getUuid(), defaultNic.getMacAddress(), userVm.getDetail("SSH.PublicKey"), (String) profile.getParameter(VirtualMachineProfile.Param.VmPassword), isWindows); String vmName = vm.getInstanceName(); String configDriveIsoRootFolder = "/tmp"; diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index 60b21c3..31cdf91 100644 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -2346,7 +2346,7 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi @Override public List<String[]> generateVmData(String userData, String serviceOffering, long datacenterId, - String vmName, long vmId, String vmUuid, + String vmName, String vmHostName, long vmId, String vmUuid, String guestIpAddress, String publicKey, String password, Boolean isWindows) { DataCenterVO dcVo = _dcDao.findById(datacenterId); @@ -2361,11 +2361,11 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi } 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(vmHostName)}); vmData.add(new String[]{METATDATA_DIR, LOCAL_IPV4_FILE, guestIpAddress}); String publicIpAddress = guestIpAddress; - String publicHostName = StringUtils.unicodeEscape(vmName); + String publicHostName = StringUtils.unicodeEscape(vmHostName); if (dcVo.getNetworkType() != DataCenter.NetworkType.Basic) { if (publicIp != null) { diff --git a/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java b/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java index cc1df93..585b443 100644 --- a/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java +++ b/server/src/com/cloud/network/element/ConfigDriveNetworkElement.java @@ -381,7 +381,7 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle final String serviceOffering = _serviceOfferingDao.findByIdIncludingRemoved(vm.getId(), vm.getServiceOfferingId()).getDisplayText(); boolean isWindows = _guestOSCategoryDao.findById(_guestOSDao.findById(vm.getGuestOSId()).getCategoryId()).getName().equalsIgnoreCase("Windows"); - List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, vm.getDataCenterId(), vm.getInstanceName(), vm.getId(), + List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, vm.getDataCenterId(), vm.getInstanceName(), vm.getHostName(), vm.getId(), vm.getUuid(), nic.getIPv4Address(), publicKey, (String) profile.getParameter(VirtualMachineProfile.Param.VmPassword), isWindows); profile.setVmData(vmData); profile.setConfigDriveLabel(VirtualMachineManager.VmConfigDriveLabel.value()); diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index c798c82..ecdd112 100644 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -4087,7 +4087,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir final String serviceOffering = _serviceOfferingDao.findByIdIncludingRemoved(vm.getId(), vm.getServiceOfferingId()).getDisplayText(); boolean isWindows = _guestOSCategoryDao.findById(_guestOSDao.findById(vm.getGuestOSId()).getCategoryId()).getName().equalsIgnoreCase("Windows"); - List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, vm.getDataCenterId(), vm.getInstanceName(), vm.getId(), + List<String[]> vmData = _networkModel.generateVmData(vm.getUserData(), serviceOffering, vm.getDataCenterId(), vm.getInstanceName(), vm.getHostName(), vm.getId(), vm.getUuid(), defaultNic.getIPv4Address(), vm.getDetail("SSH.PublicKey"), (String) profile.getParameter(VirtualMachineProfile.Param.VmPassword), isWindows); String vmName = vm.getInstanceName(); String configDriveIsoRootFolder = "/tmp"; diff --git a/server/test/com/cloud/network/MockNetworkModelImpl.java b/server/test/com/cloud/network/MockNetworkModelImpl.java index f858005..d142554 100644 --- a/server/test/com/cloud/network/MockNetworkModelImpl.java +++ b/server/test/com/cloud/network/MockNetworkModelImpl.java @@ -898,7 +898,7 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { } @Override - public List<String[]> generateVmData(String userData, String serviceOffering, long datacenterId, String vmName, long vmId, String vmUuid, String guestIpAddress, String publicKey, String password, Boolean isWindows) { + public List<String[]> generateVmData(String userData, String serviceOffering, long datacenterId, String vmName, String vmHostName, long vmId, String vmUuid, String guestIpAddress, String publicKey, String password, Boolean isWindows) { return null; } diff --git a/server/test/com/cloud/network/element/ConfigDriveNetworkElementTest.java b/server/test/com/cloud/network/element/ConfigDriveNetworkElementTest.java index 7d50415..ff3f40b 100644 --- a/server/test/com/cloud/network/element/ConfigDriveNetworkElementTest.java +++ b/server/test/com/cloud/network/element/ConfigDriveNetworkElementTest.java @@ -98,13 +98,13 @@ public class ConfigDriveNetworkElementTest { public static final long NETWORK_ID = 1L; private final long DATACENTERID = NETWORK_ID; private final String ZONENAME = "zone1"; - private final String VMINSTANCENAME = "vm_name"; + private final String VMINSTANCENAME = "i-x-y"; + private final String VMHOSTNAME = "vm-hostname"; private final String VMOFFERING = "custom_instance"; private final long VMID = 30L; private final String VMUSERDATA = "H4sIABCvw1oAAystTi1KSSxJ5AIAUPllwQkAAAA="; private final long SOID = 31L; private final long HOSTID = NETWORK_ID; - private final String HOSTNAME = "host1"; @Mock private ConfigurationDao _configDao; @Mock private DataCenterDao _dcDao; @@ -166,6 +166,7 @@ public class ConfigDriveNetworkElementTest { when(virtualMachine.getDataCenterId()).thenReturn(DATACENTERID); when(virtualMachine.getInstanceName()).thenReturn(VMINSTANCENAME); when(virtualMachine.getUserData()).thenReturn(VMUSERDATA); + when(virtualMachine.getHostName()).thenReturn(VMHOSTNAME); when(deployDestination.getHost()).thenReturn(hostVO); when(hostVO.getId()).thenReturn(HOSTID); when(nic.isDefaultNic()).thenReturn(true); @@ -246,7 +247,7 @@ public class ConfigDriveNetworkElementTest { 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", "local-ipv4", "192.168.111.111"}, new String[]{"metadata", "public-hostname", null}, new String[]{"metadata", "public-ipv4", "192.168.111.111"}, @@ -269,7 +270,7 @@ public class ConfigDriveNetworkElementTest { 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", "local-ipv4", "192.168.111.111"}, new String[]{"metadata", "public-hostname", "7.7.7.7"}, new String[]{"metadata", "public-ipv4", "7.7.7.7"}, @@ -292,7 +293,7 @@ public class ConfigDriveNetworkElementTest { 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", "local-ipv4", "192.168.111.111"}, new String[]{"metadata", "public-hostname", null}, new String[]{"metadata", "public-ipv4", "192.168.111.111"}, diff --git a/server/test/com/cloud/vpc/MockNetworkModelImpl.java b/server/test/com/cloud/vpc/MockNetworkModelImpl.java index dc2aab4..33192a7 100644 --- a/server/test/com/cloud/vpc/MockNetworkModelImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkModelImpl.java @@ -913,7 +913,7 @@ public class MockNetworkModelImpl extends ManagerBase implements NetworkModel { } @Override - public List<String[]> generateVmData(String userData, String serviceOffering, long datacenterId, String vmName, long vmId, String vmUuid, String guestIpAddress, String publicKey, String password, Boolean isWindows) { + public List<String[]> generateVmData(String userData, String serviceOffering, long datacenterId, String vmName, String vmHostName, long vmId, String vmUuid, String guestIpAddress, String publicKey, String password, Boolean isWindows) { return null; } -- To stop receiving notification emails like this one, please contact ro...@apache.org.