cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From t..@apache.org
Subject git commit: updated refs/heads/4.2 to 64591e6
Date Tue, 06 Aug 2013 13:17:19 GMT
Updated Branches:
  refs/heads/4.2 fa094a5d2 -> 64591e65b


CLOUDSTACK-4098: Fix the test which deploys a VM from password enabled template.

Signed-off-by: Prasanna Santhanam <tsp@apache.org>


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

Branch: refs/heads/4.2
Commit: 64591e65beb5734a2c99d4c2c8b9f03ab064a739
Parents: fa094a5
Author: SrikanteswaraRao Talluri <kanti.sri@gmail.com>
Authored: Tue Aug 6 16:54:26 2013 +0530
Committer: Prasanna Santhanam <tsp@apache.org>
Committed: Tue Aug 6 18:46:29 2013 +0530

----------------------------------------------------------------------
 .../component/test_vm_passwdenabled.py          | 57 ++++++++++++++++++--
 tools/marvin/marvin/integration/lib/base.py     | 43 ++++++++++++++-
 2 files changed, 93 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/64591e65/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 ebe32c8..116c27c 100644
--- a/test/integration/component/test_vm_passwdenabled.py
+++ b/test/integration/component/test_vm_passwdenabled.py
@@ -45,6 +45,25 @@ class Services:
                 # 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
+                    "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":
@@ -89,8 +108,8 @@ class TestVMPasswordEnabled(cloudstackTestCase):
             cls.services["ostype"]
         )
         # Set Zones and disk offerings
-        cls.services["service_offerings"]["small"]["zoneid"] = zone.id
-        cls.services["service_offerings"]["small"]["template"] = template.id
+        cls.services["small"]["zoneid"] = zone.id
+        cls.services["small"]["template"] = template.id
 
         # Create VMs, NAT Rules etc
         cls.account = Account.create(
@@ -112,6 +131,34 @@ class TestVMPasswordEnabled(cloudstackTestCase):
             serviceofferingid=cls.small_offering.id,
             mode=cls.services["mode"]
         )
+
+        networkid = cls.virtual_machine.nic[0].networkid
+
+        # create egress rule to allow wget of my butt-set-guest-password script
+        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
+
+        cmds = [
+            "cd /etc/init.d;wget http://10.147.40.145/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)
+
         #Stop virtual machine
         cls.virtual_machine.stop(cls.api_client)
 
@@ -134,7 +181,7 @@ class TestVMPasswordEnabled(cloudstackTestCase):
 
             if timeout == 0:
                 raise Exception(
-                    "Failed to stop VM (ID: %s) in change service offering" %
+                    "Failed to stop VM (ID: %s) " %
                     vm.id)
 
             timeout = timeout - 1
@@ -149,7 +196,7 @@ class TestVMPasswordEnabled(cloudstackTestCase):
             cls.volume = list_volume[0]
         else:
             raise Exception(
-                "Exception: Unable to find root volume foe VM: %s" %
+                "Exception: Unable to find root volume for VM: %s" %
                 cls.virtual_machine.id)
 
         cls.services["template"]["ostype"] = cls.services["ostype"]
@@ -224,7 +271,7 @@ class TestVMPasswordEnabled(cloudstackTestCase):
         self.assertEqual(
             isinstance(vms, list),
             True,
-            "List VMs should retun valid response for VM: %s" % self.vm.name
+            "List VMs should return valid response for VM: %s" % self.vm.name
         )
         virtual_machine = vms[0]
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/64591e65/tools/marvin/marvin/integration/lib/base.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/integration/lib/base.py b/tools/marvin/marvin/integration/lib/base.py
index 770ac3d..8112f48 100755
--- a/tools/marvin/marvin/integration/lib/base.py
+++ b/tools/marvin/marvin/integration/lib/base.py
@@ -555,8 +555,8 @@ class VirtualMachine:
             response = apiclient.resetPasswordForVirtualMachine(cmd)
         except Exception as e:
             raise Exception("Reset Password failed! - %s" % e)
-        if isinstance(response, list):
-            return response[0].password
+        if response is not None:
+            return response.password
 
     def assign_virtual_machine(self, apiclient, account, domainid):
         """Move a user VM to another user under same domain."""
@@ -1260,6 +1260,45 @@ class StaticNATRule:
         return
 
 
+class EgressFireWallRule:
+    """Manage Egress Firewall rule"""
+
+    def __init__(self, items):
+        self.__dict__.update(items)
+
+    @classmethod
+    def create(cls, apiclient, networkid, protocol, cidrlist=None,
+               startport=None, endport=None):
+        """Create Egress Firewall Rule"""
+        cmd = createEgressFirewallRule.createEgressFirewallRuleCmd()
+        cmd.networkid = networkid
+        cmd.protocol = protocol
+        if cidrlist:
+            cmd.cidrlist = cidrlist
+        if startport:
+            cmd.startport = startport
+        if endport:
+            cmd.endport = endport
+
+        return EgressFireWallRule(apiclient.createEgressFirewallRule(cmd).__dict__)
+
+    def delete(self, apiclient):
+        """Delete Egress Firewall rule"""
+        cmd = deleteEgressFirewallRule.deleteEgressFirewallRuleCmd()
+        cmd.id = self.id
+        apiclient.deleteEgressFirewallRule(cmd)
+        return
+
+    @classmethod
+    def list(cls, apiclient, **kwargs):
+        """List all Egress Firewall Rules matching criteria"""
+
+        cmd = listEgressFirewallRules.listEgressFirewallRulesCmd()
+        [setattr(cmd, k, v) for k, v in kwargs.items()]
+        return(apiclient.listEgressFirewallRules(cmd))
+
+
+
 class FireWallRule:
     """Manage Firewall rule"""
 


Mime
View raw message