Repository: cloudstack
Updated Branches:
  refs/heads/4.5 f702097b3 -> 30598e958


CLOUDSTACK-8152: Adding delay before creating snapshot/template from root disk 
after writing data to disk - test_vm_passwordenabled.py

Signed-off-by: SrikanteswaraRao Talluri <tall...@apache.org>
(cherry picked from commit d79837b67a481e618c8291152a9ecec299ff02dd)
Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com>

Conflicts:
        test/integration/component/test_vm_passwdenabled.py


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/fc502a97
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/fc502a97
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/fc502a97

Branch: refs/heads/4.5
Commit: fc502a97c2a80c57bcee9084a4247d20b439f295
Parents: f702097
Author: Gaurav Aradhye <gaurav.arad...@clogeny.com>
Authored: Tue Jan 13 13:56:41 2015 +0530
Committer: Rohit Yadav <rohit.ya...@shapeblue.com>
Committed: Tue Jan 20 10:16:26 2015 +0530

----------------------------------------------------------------------
 .../component/test_vm_passwdenabled.py          | 98 ++++++++++++--------
 1 file changed, 60 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/fc502a97/test/integration/component/test_vm_passwdenabled.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_vm_passwdenabled.py 
b/test/integration/component/test_vm_passwdenabled.py
index 1b556da..64e549b 100644
--- a/test/integration/component/test_vm_passwdenabled.py
+++ b/test/integration/component/test_vm_passwdenabled.py
@@ -14,24 +14,33 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-import marvin
-from marvin.cloudstackTestCase import *
-from marvin.cloudstackAPI import *
-from marvin.sshClient import SshClient
-from marvin.lib.utils import *
-from marvin.lib.base import *
-from marvin.lib.common import *
+from marvin.cloudstackTestCase import cloudstackTestCase
+from marvin.lib.utils import cleanup_resources
+from marvin.lib.base import (Account,
+                             ServiceOffering,
+                             VirtualMachine,
+                             EgressFireWallRule,
+                             Template)
+from marvin.lib.common import (get_domain,
+                               get_zone,
+                               get_template,
+                               list_virtual_machines,
+                               list_volumes)
 from nose.plugins.attrib import attr
+import time
 
 
 _multiprocess_shared_ = True
+
+
 class Services:
+
     """Test VM Life Cycle Services
     """
 
     def __init__(self):
         self.services = {
-            "disk_offering":{
+            "disk_offering": {
                 "displaytext": "Small",
                 "name": "Small",
                 "disksize": 1
@@ -44,26 +53,26 @@ class Services:
                 # Random characters are appended in create account to
                 # ensure unique username generated each time
                 "password": "password",
-                },
+            },
             "small":
             # Create a small virtual machine instance with disk offering
                 {
                     "displayname": "testserver",
-                    "username": "root", # VM creds for SSH
+                    "username": "root",  # VM creds for SSH
                     "password": "password",
                     "ssh_port": 22,
                     "hypervisor": 'XenServer',
                     "privateport": 22,
                     "publicport": 22,
                     "protocol": 'TCP',
-                    },
+            },
             "egress": {
                     "name": 'web',
                     "protocol": 'TCP',
                     "startport": 80,
                     "endport": 80,
                     "cidrlist": '0.0.0.0/0',
-                },
+            },
             "service_offerings":
                 {
                     "small":
@@ -75,19 +84,20 @@ class Services:
                             "cpunumber": 1,
                             "cpuspeed": 100,
                             "memory": 256,
-                            },
-                },
+                        },
+            },
             "template": {
                 "displaytext": "Cent OS Template",
                 "name": "Cent OS Template",
                 "passwordenabled": True,
-                },
+            },
             "sleep": 60,
             "timeout": 10,
             "ostype": 'CentOS 5.3 (64-bit)',
             # CentOS 5.3 (64-bit)
         }
 
+
 class TestVMPasswordEnabled(cloudstackTestCase):
 
     @classmethod
@@ -132,33 +142,39 @@ class TestVMPasswordEnabled(cloudstackTestCase):
 
         networkid = cls.virtual_machine.nic[0].networkid
 
-        # create egress rule to allow wget of my cloud-set-guest-password 
script
+        # create egress rule to allow wget of my cloud-set-guest-password
+        # script
         if zone.networktype.lower() == 'advanced':
-            EgressFireWallRule.create(cls.api_client,
-                                  networkid=networkid,
-                                  protocol=cls.services["egress"]["protocol"],
-                                  
startport=cls.services["egress"]["startport"],
-                                  endport=cls.services["egress"]["endport"],
-                                  cidrlist=cls.services["egress"]["cidrlist"])
+            EgressFireWallRule.create(
+                cls.api_client,
+                networkid=networkid,
+                protocol=cls.services["egress"]["protocol"],
+                startport=cls.services["egress"]["startport"],
+                endport=cls.services["egress"]["endport"],
+                cidrlist=cls.services["egress"]["cidrlist"])
 
         cls.virtual_machine.password = cls.services["small"]["password"]
         ssh = cls.virtual_machine.get_ssh_client()
 
-        #below steps are required to get the new password from VR(reset 
password)
-        #http://cloudstack.org/dl/cloud-set-guest-password
-        #Copy this file to /etc/init.d
-        #chmod +x /etc/init.d/cloud-set-guest-password
-        #chkconfig --add cloud-set-guest-password
+        # below steps are required to get the new password from VR
+        # (reset password)
+        # http://cloudstack.org/dl/cloud-set-guest-password
+        # Copy this file to /etc/init.d
+        # chmod +x /etc/init.d/cloud-set-guest-password
+        # chkconfig --add cloud-set-guest-password
 
         cmds = [
             "cd /etc/init.d;wget 
http://people.apache.org/~tsp/cloud-set-guest-password";,
             "chmod +x /etc/init.d/cloud-set-guest-password",
             "chkconfig --add cloud-set-guest-password",
-            ]
+        ]
         for c in cmds:
-            result = ssh.execute(c)
+            ssh.execute(c)
+
+        # Adding delay of 120 sec to avoid data loss due to timing issue
+        time.sleep(120)
 
-        #Stop virtual machine
+        # Stop virtual machine
         cls.virtual_machine.stop(cls.api_client)
 
         # Poll listVM to ensure VM is stopped properly
@@ -199,7 +215,8 @@ class TestVMPasswordEnabled(cloudstackTestCase):
                 cls.virtual_machine.id)
 
         cls.services["template"]["ostype"] = cls.services["ostype"]
-        #Create templates for Edit, Delete & update permissions testcases
+        cls.services["template"]["ispublic"] = True
+        # Create templates for Edit, Delete & update permissions testcases
         cls.pw_enabled_template = Template.create(
             cls.api_client,
             cls.services["template"],
@@ -237,11 +254,18 @@ class TestVMPasswordEnabled(cloudstackTestCase):
         self.cleanup = []
 
     def tearDown(self):
-        #Clean up, terminate the created instances
+        # Clean up, terminate the created instances
         cleanup_resources(self.apiclient, self.cleanup)
         return
 
-    @attr(tags = ["advanced", "advancedns", "smoke", "basic", "sg"], 
required_hardware="true")
+    @attr(
+        tags=[
+            "advanced",
+            "advancedns",
+            "smoke",
+            "basic",
+            "sg"],
+        required_hardware="true")
     def test_11_get_vm_password(self):
         """Test get VM password for password enabled template"""
 
@@ -255,9 +279,6 @@ class TestVMPasswordEnabled(cloudstackTestCase):
         self.debug("Stopping VM: %s" % self.vm.name)
         self.vm.stop(self.apiclient)
 
-        # Sleep to ensure VM is stopped properly
-        time.sleep(self.services["sleep"])
-
         self.debug("Resetting VM password for VM: %s" % self.vm.name)
         password = self.vm.resetPassword(self.apiclient)
         self.debug("Password reset to: %s" % password)
@@ -282,7 +303,8 @@ class TestVMPasswordEnabled(cloudstackTestCase):
         try:
             self.debug("SSHing into VM: %s" % self.vm.ssh_ip)
             self.vm.password = password
-            ssh = self.vm.get_ssh_client()
+            self.vm.get_ssh_client()
         except Exception as e:
-            self.fail("SSH into VM: %s failed" % self.vm.ssh_ip)
+            self.fail("SSH into VM: %s failed: %s" %
+                      (self.vm.ssh_ip, e))
         return

Reply via email to