This is an automated email from the ASF dual-hosted git repository.

andrijapanic pushed a commit to branch 4.13
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.13 by this push:
     new 78fda2d  With basic zone and VMware hypervisor, VR fails to start 
since eth1 is getting empty instead of a private IP. (#3977)
78fda2d is described below

commit 78fda2d1639bda04548faee51f52094aefe18d49
Author: harikrishna-patnala <[email protected]>
AuthorDate: Sat Mar 28 00:16:01 2020 +0530

    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.
---
 .../hypervisor/vmware/resource/VmwareResource.java | 11 -----------
 .../com/cloud/network/guru/ControlNetworkGuru.java | 19 ++++---------------
 .../router/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 b5a1260..26b0e7c 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 717b3bd..99f4ad0 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 b58f505..4e750d2 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<VirtualMachine.State, 
VirtualMachine.Event, VirtualM
 
                     if (dc.getNetworkType() == NetworkType.Basic) {
                         // ask domR to setup SSH on guest network
-                        buf.append(" sshonguest=true");
+                        if (profile.getHypervisorType() == 
HypervisorType.VMware) {
+                            buf.append(" sshonguest=false");
+                        } else {
+                            buf.append(" sshonguest=true");
+                        }
                     }
 
                 }
@@ -1760,19 +1764,9 @@ Configurable, StateListener<VirtualMachine.State, 
VirtualMachine.Event, VirtualM
         final DomainRouterVO router = _routerDao.findById(profile.getId());
         final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
         NicProfile controlNic = null;
-        if (profile.getHypervisorType() == HypervisorType.VMware && 
dcVo.getNetworkType() == NetworkType.Basic) {
-            // TODO this is a ugly to test hypervisor type here
-            // for basic network mode, we will use the guest NIC for control 
NIC
-            for (final NicProfile nic : profile.getNics()) {
-                if (nic.getTrafficType() == TrafficType.Guest && 
nic.getIPv4Address() != null) {
-                    controlNic = nic;
-                }
-            }
-        } else {
-            for (final NicProfile nic : profile.getNics()) {
-                if (nic.getTrafficType() == TrafficType.Control && 
nic.getIPv4Address() != null) {
-                    controlNic = nic;
-                }
+        for (final NicProfile nic : profile.getNics()) {
+            if (nic.getTrafficType() == TrafficType.Control && 
nic.getIPv4Address() != null) {
+                controlNic = nic;
             }
         }
         return controlNic;

Reply via email to