From 78fda2d1639bda04548faee51f52094aefe18d49 Mon Sep 17 00:00:00 2001 From: harikrishna-patnala Date: Sat, 28 Mar 2020 00:16:01 +0530 Subject: [PATCH 1/2] With basic zone and VMware hypervisor, VR fails to start since eth1 is getting empty instead of a private IP. (#3977) Though VMware does not support security groups, but in a basic zone with VMware and no isolation VMs should be able to deploy. Root cause: In case of VMware and basic zone control nic is set to 0.0.0.0 assuming control network will be shared with guest network. But to have access to VMware instances management/private needs to be assigned to it. Solution: Assing a private ip even in case of basic zone VMware. --- .../vmware/resource/VmwareResource.java | 11 ---------- .../network/guru/ControlNetworkGuru.java | 19 ++++------------ .../VirtualNetworkApplianceManagerImpl.java | 22 +++++++------------ 3 files changed, 12 insertions(+), 40 deletions(-) diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java index b5a1260a723..26b0e7c2468 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java @@ -200,7 +200,6 @@ import com.cloud.agent.resource.virtualnetwork.VRScripts; import com.cloud.agent.resource.virtualnetwork.VirtualRouterDeployer; import com.cloud.agent.resource.virtualnetwork.VirtualRoutingResource; import com.cloud.configuration.Resource.ResourceType; -import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.Vlan; import com.cloud.exception.CloudException; import com.cloud.exception.InternalErrorException; @@ -6411,16 +6410,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa private static String getRouterSshControlIp(NetworkElementCommand cmd) { String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP); - String routerGuestIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP); - String zoneNetworkType = cmd.getAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE); - - if (routerGuestIp != null && zoneNetworkType != null && NetworkType.valueOf(zoneNetworkType) == NetworkType.Basic) { - if (s_logger.isDebugEnabled()) - s_logger.debug("In Basic zone mode, use router's guest IP for SSH control. guest IP : " + routerGuestIp); - - return routerGuestIp; - } - if (s_logger.isDebugEnabled()) s_logger.debug("Use router's private IP for SSH control. IP : " + routerIp); return routerIp; diff --git a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java index 717b3bd0399..99f4ad0f1f7 100644 --- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java +++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java @@ -138,22 +138,11 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu // we have to get management/private ip for the control nic for vmware/hyperv due ssh issues. HypervisorType hType = vm.getHypervisorType(); if (((hType == HypervisorType.VMware) || (hType == HypervisorType.Hyperv)) && isRouterVm(vm)) { - if (dest.getDataCenter().getNetworkType() != NetworkType.Basic) { - super.reserve(nic, config, vm, dest, context); + super.reserve(nic, config, vm, dest, context); - String mac = _networkMgr.getNextAvailableMacAddressInNetwork(config.getId()); - nic.setMacAddress(mac); - return; - } else { - // in basic mode and in VMware case, control network will be shared with guest network - String mac = _networkMgr.getNextAvailableMacAddressInNetwork(config.getId()); - nic.setMacAddress(mac); - nic.setIPv4Address("0.0.0.0"); - nic.setIPv4Netmask("0.0.0.0"); - nic.setFormat(AddressFormat.Ip4); - nic.setIPv4Gateway("0.0.0.0"); - return; - } + String mac = _networkMgr.getNextAvailableMacAddressInNetwork(config.getId()); + nic.setMacAddress(mac); + return; } String ip = _dcDao.allocateLinkLocalIpAddress(dest.getDataCenter().getId(), dest.getPod().getId(), nic.getId(), context.getReservationId()); diff --git a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index b58f505213f..4e750d250b2 100644 --- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -1401,7 +1401,11 @@ Configurable, StateListener Date: Fri, 27 Mar 2020 20:48:24 +0200 Subject: [PATCH 2/2] Fix raw templates not being downloaded (#3993) --- .../org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java b/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java index f87669b4bf5..890e075c422 100644 --- a/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java +++ b/utils/src/main/java/org/apache/cloudstack/utils/imagestore/ImageStoreUtil.java @@ -57,7 +57,7 @@ public class ImageStoreUtil { return ""; } // raw - if ((output.contains("x86 boot") || output.contains("data")) && (isCorrectExtension(uripath, "raw") || isCorrectExtension(uripath, "img"))) { + if ((output.contains("x86 boot") || output.contains("DOS/MBR boot sector") || output.contains("data")) && (isCorrectExtension(uripath, "raw") || isCorrectExtension(uripath, "img"))) { s_logger.debug("File at path " + path + " looks like a raw image :" + output); return ""; }