You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2018/01/09 19:14:04 UTC

[cloudstack] branch master updated: CLOUDSTACK-10109: Fix regression from PR #2295 (#2394)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new b0d7844  CLOUDSTACK-10109: Fix regression from PR #2295 (#2394)
b0d7844 is described below

commit b0d7844cf0cc107e15532a7f675f9c9ad8293fd9
Author: Rohit Yadav <ro...@apache.org>
AuthorDate: Wed Jan 10 00:44:00 2018 +0530

    CLOUDSTACK-10109: Fix regression from PR #2295 (#2394)
    
    This fixes regression introduced in PR #2295:
    - Pass assign=true to fetch new public IP
    - Use wait_until instead of sleep+wait in tests
    - Loop through list of public IP ranges to match the systemvm gateway
    - Fix potential NPE seen when adding simulator host(s)
    - Removes aria2 installation from setup_agent.sh using yum, it's already
      dependency for cloudstack-agent package
    
    Signed-off-by: Rohit Yadav <ro...@shapeblue.com>
---
 .../datastore/provider/SolidFireHostListener.java  |  5 ++++
 .../provider/SolidFireSharedHostListener.java      |  5 ++++
 scripts/vm/hypervisor/kvm/setup_agent.sh           | 12 ---------
 .../com/cloud/network/IpAddressManagerImpl.java    |  8 +-----
 test/integration/smoke/test_public_ip_range.py     | 29 +++++++++-------------
 test/integration/smoke/test_ssvm.py                | 10 +++++---
 6 files changed, 30 insertions(+), 39 deletions(-)

diff --git a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireHostListener.java b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireHostListener.java
index 69e1a79..21a7fad 100644
--- a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireHostListener.java
+++ b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireHostListener.java
@@ -74,6 +74,11 @@ public class SolidFireHostListener implements HypervisorHostListener {
     public boolean hostAdded(long hostId) {
         HostVO host = _hostDao.findById(hostId);
 
+        if (host == null) {
+            s_logger.error("Failed to add host by SolidFireHostListener as host was not found with id=" + hostId);
+            return false;
+        }
+
         SolidFireUtil.hostAddedToOrRemovedFromCluster(hostId, host.getClusterId(), true, SolidFireUtil.PROVIDER_NAME,
                 _clusterDao, _clusterDetailsDao, _storagePoolDao, _storagePoolDetailsDao, _hostDao);
 
diff --git a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireSharedHostListener.java b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireSharedHostListener.java
index f88041a..29c3948 100644
--- a/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireSharedHostListener.java
+++ b/plugins/storage/volume/solidfire/src/org/apache/cloudstack/storage/datastore/provider/SolidFireSharedHostListener.java
@@ -68,6 +68,11 @@ public class SolidFireSharedHostListener implements HypervisorHostListener {
     public boolean hostAdded(long hostId) {
         HostVO host = hostDao.findById(hostId);
 
+        if (host == null) {
+            LOGGER.error("Failed to add host by SolidFireSharedHostListener as host was not found with id=" + hostId);
+            return false;
+        }
+
         SolidFireUtil.hostAddedToOrRemovedFromCluster(hostId, host.getClusterId(), true, SolidFireUtil.SHARED_PROVIDER_NAME,
                 clusterDao, clusterDetailsDao, storagePoolDao, storagePoolDetailsDao, hostDao);
 
diff --git a/scripts/vm/hypervisor/kvm/setup_agent.sh b/scripts/vm/hypervisor/kvm/setup_agent.sh
index b3c2e0f..d55c6ad 100755
--- a/scripts/vm/hypervisor/kvm/setup_agent.sh
+++ b/scripts/vm/hypervisor/kvm/setup_agent.sh
@@ -224,17 +224,5 @@ then
     setenforce 0
 fi
 
-which aria2c
-if [ $? -gt 0 ]
-then
-    yum install epel-release -y
-    yum install aria2 -y
-    if [ $? -gt 0 ]
-    then
-        printf "failed to install aria2"
-        exit 1
-    fi
-fi
-
 cloudstack-setup-agent --host=$host --zone=$zone --pod=$pod --cluster=$cluster --guid=$guid $paramters -a > /dev/null
 #cloud_consoleP_setup $host $zone $pod
diff --git a/server/src/com/cloud/network/IpAddressManagerImpl.java b/server/src/com/cloud/network/IpAddressManagerImpl.java
index 891dddf..c00359c 100644
--- a/server/src/com/cloud/network/IpAddressManagerImpl.java
+++ b/server/src/com/cloud/network/IpAddressManagerImpl.java
@@ -964,13 +964,7 @@ public class IpAddressManagerImpl extends ManagerBase implements IpAddressManage
                         VpcVO vpc = _vpcDao.findById(vpcId);
                         displayIp = vpc.isDisplay();
                     }
-                    PublicIp ip = fetchNewPublicIp(dcId, null, null, owner, VlanType.VirtualNetwork, guestNtwkId, isSourceNat, false, null, false, vpcId, displayIp, false);
-                    IPAddressVO publicIp = ip.ip();
-
-                    markPublicIpAsAllocated(publicIp);
-                    _ipAddressDao.update(publicIp.getId(), publicIp);
-
-                    return ip;
+                    return fetchNewPublicIp(dcId, null, null, owner, VlanType.VirtualNetwork, guestNtwkId, isSourceNat, true, null, false, vpcId, displayIp, false);
                 }
             });
             if (ip.getState() != State.Allocated) {
diff --git a/test/integration/smoke/test_public_ip_range.py b/test/integration/smoke/test_public_ip_range.py
index 624a407..664fdb4 100644
--- a/test/integration/smoke/test_public_ip_range.py
+++ b/test/integration/smoke/test_public_ip_range.py
@@ -204,25 +204,24 @@ class TestDedicatePublicIPRange(cloudstackTestCase):
         ip = self.get_ip_as_number(ip_to_test)
         return start <= ip and ip <= end
     
-    def wait_for_system_vm_start(self, domain_id, srv_timeout, srv_sleep, systemvmtype):
+    def wait_for_system_vm_start(self, domain_id, systemvmtype):
         """ Wait until system vm is Running
         """
-        timeout = srv_timeout
-        while True:
-            list_systemvm_response = list_ssvms(
+        def checkSystemVMUp():
+            response = list_ssvms(
                 self.apiclient,
                 systemvmtype=systemvmtype,
                 domainid=domain_id
             )
-            if isinstance(list_systemvm_response, list):
-                if list_systemvm_response[0].state == 'Running':
-                    return list_systemvm_response[0].id
-            if timeout == 0:
-                raise Exception("List System VM call failed!")
+            if isinstance(response, list):
+                if response[0].state == 'Running':
+                    return True, response[0].id
+            return False, None
 
-            time.sleep(srv_sleep)
-            timeout = timeout - 1
-        return None
+        res, systemvmId = wait_until(3, 100, checkSystemVMUp)
+        if not res:
+            raise Exception("Failed to wait for systemvm to be running")
+        return systemvmId
 
     def base_system_vm(self, services, systemvmtype):
         """
@@ -264,8 +263,6 @@ class TestDedicatePublicIPRange(cloudstackTestCase):
         # Wait for CPVM to start
         systemvm_id = self.wait_for_system_vm_start(
             public_ip_range.vlan.domainid,
-            self.services["timeout"],
-            self.services["sleep"],
             systemvmtype
         )
         self.assertNotEqual(
@@ -312,8 +309,6 @@ class TestDedicatePublicIPRange(cloudstackTestCase):
         # Wait for System VM to start and check System VM public IP
         systemvm_id = self.wait_for_system_vm_start(
             domain_id,
-            self.services["timeout"],
-            self.services["sleep"],
             systemvmtype
         )
         list_systemvm_response = list_ssvms(
@@ -386,4 +381,4 @@ class TestDedicatePublicIPRange(cloudstackTestCase):
             services,
             'secondarystoragevm'
         )
-        return
\ No newline at end of file
+        return
diff --git a/test/integration/smoke/test_ssvm.py b/test/integration/smoke/test_ssvm.py
index f20003b..f697619 100644
--- a/test/integration/smoke/test_ssvm.py
+++ b/test/integration/smoke/test_ssvm.py
@@ -348,9 +348,13 @@ class TestSSVMs(cloudstackTestCase):
                         self.apiclient,
                         physicalnetworkid=listphyntwk[0].id),
                     list) is True):
-                self.assertEqual(
-                    cpvm.gateway,
-                    iprange.gateway,
+                cpvmValidGateway = False
+                for iprange in ipranges_response:
+                    if iprange.gateway == cpvm.gateway:
+                        cpvmValidGateway = True
+                        break
+                self.assertTrue(
+                    cpvmValidGateway,
                     "Check gateway with that of corresponding ip range"
                 )
 

-- 
To stop receiving notification emails like this one, please contact
['"commits@cloudstack.apache.org" <co...@cloudstack.apache.org>'].