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/master to b330649
Date Thu, 22 Aug 2013 14:50:59 GMT
Updated Branches:
  refs/heads/master ad0fba31a -> b3306497f


CLOUDSTACK-4453: fetch host credentials from marvin config

Tests would fetch the credentials for the host to hop into router to
check for essential services. Each test would require to put in the host
information into the test data. Instead fetch the credential information
from the marvin configuration file.

Signed-off-by: Prasanna Santhanam <tsp@apache.org>
(cherry picked from commit 4b546ce85d40098ade69c575316e76e25a422a12)


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

Branch: refs/heads/master
Commit: b3306497fe4d59317443c5c9ecf181939e00a2bb
Parents: ad0fba3
Author: Prasanna Santhanam <tsp@apache.org>
Authored: Thu Aug 22 20:15:16 2013 +0530
Committer: Prasanna Santhanam <tsp@apache.org>
Committed: Thu Aug 22 20:20:16 2013 +0530

----------------------------------------------------------------------
 test/integration/component/test_routers.py   | 37 +++++++------
 test/integration/smoke/test_routers.py       | 67 +++++++++++++++--------
 tools/marvin/marvin/integration/lib/utils.py | 11 ++++
 3 files changed, 75 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b3306497/test/integration/component/test_routers.py
----------------------------------------------------------------------
diff --git a/test/integration/component/test_routers.py b/test/integration/component/test_routers.py
index e0d90d6..888302f 100644
--- a/test/integration/component/test_routers.py
+++ b/test/integration/component/test_routers.py
@@ -24,7 +24,6 @@ from marvin.cloudstackAPI import *
 from marvin.integration.lib.utils import *
 from marvin.integration.lib.base import *
 from marvin.integration.lib.common import *
-from marvin.remoteSSHClient import remoteSSHClient
 
 #Import System modules
 import time
@@ -1219,20 +1218,24 @@ class TestRouterStopCreateFW(cloudstackTestCase):
                         )
         host = hosts[0]
         # For DNS and DHCP check 'dnsmasq' process status
-        result = get_process_status(
-                                host.ipaddress,
-                                self.services['host']["publicport"],
-                                self.services['host']["username"],
-                                self.services['host']["password"],
-                                router.linklocalip,
-                                'iptables -t nat -L'
-                                )
-        self.debug("iptables -t nat -L: %s" % result)
-        self.debug("Public IP: %s" % public_ip.ipaddress)
-        res = str(result)
-        self.assertEqual(
-                            res.count(str(public_ip.ipaddress)),
-                            1,
-                            "Check public IP address"
-                        )
+        try:
+            host.user, host.passwd = get_host_credentials(self.config, host.ipaddress)
+            result = get_process_status(
+                host.ipaddress,
+                22,
+                host.user,
+                host.passwd,
+                router.linklocalip,
+                'iptables -t nat -L'
+            )
+            self.debug("iptables -t nat -L: %s" % result)
+            self.debug("Public IP: %s" % public_ip.ipaddress)
+            res = str(result)
+            self.assertEqual(
+                res.count(str(public_ip.ipaddress)),
+                1,
+                "Check public IP address"
+            )
+        except KeyError:
+            self.skipTest("Provide a marvin config file with host credentials to run %s"
% self._testMethodName)
         return

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b3306497/test/integration/smoke/test_routers.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_routers.py b/test/integration/smoke/test_routers.py
index 49c4969..bd53dca 100644
--- a/test/integration/smoke/test_routers.py
+++ b/test/integration/smoke/test_routers.py
@@ -42,6 +42,7 @@ class Services:
                                     "cpunumber": 1,
                                     "cpuspeed": 100, # in MHz
                                     "memory": 128, # In MBs
+                                    "storagetype" : "local",
                                     },
                         "virtual_machine":
                                     {
@@ -191,11 +192,13 @@ class TestRouterServices(cloudstackTestCase):
                                    hypervisor=self.apiclient.hypervisor
                                )
         else:
+            try:
+                host.user, host.passwd = get_host_credentials(self.config, host.ipaddress)
                 result = get_process_status(
                                     host.ipaddress,
-                                    self.services['virtual_machine']["publicport"],
-                                    self.vm_1.username,
-                                    self.vm_1.password,
+                                    22,
+                                    host.user,
+                                    host.passwd,
                                     router.linklocalip,
                                     "service dnsmasq status"
                                     )
@@ -207,8 +210,14 @@ class TestRouterServices(cloudstackTestCase):
                                 1,
                                 "Check dnsmasq service is running or not"
                         )
+            except KeyError:
+                self.skipTest("Marvin configuration has no host credentials to check router
services")
         return
 
+
+
+
+
     @attr(tags = ["advanced", "smoke"])
     def test_02_router_internal_adv(self):
         """Test router internal advanced zone
@@ -264,14 +273,18 @@ class TestRouterServices(cloudstackTestCase):
                                hypervisor=self.apiclient.hypervisor
                            )
         else:
-            result = get_process_status(
-                                host.ipaddress,
-                                self.services['virtual_machine']["publicport"],
-                                self.vm_1.username,
-                                self.vm_1.password,
-                                router.linklocalip,
-                                "service dnsmasq status"
-                                )
+            try:
+                host.user, host.passwd = get_host_credentials(self.config, host.ipaddress)
+                result = get_process_status(
+                                    host.ipaddress,
+                                    22,
+                                    host.user,
+                                    host.passwd,
+                                    router.linklocalip,
+                                    "service dnsmasq status"
+                                    )
+            except KeyError:
+                self.skipTest("Marvin configuration has no host credentials to check router
services")
         res = str(result)
         self.debug("Dnsmasq process status: %s" % res)
         
@@ -292,14 +305,18 @@ class TestRouterServices(cloudstackTestCase):
                            hypervisor=self.apiclient.hypervisor
                            )
         else:
-            result = get_process_status(
-                                host.ipaddress,
-                                self.services['virtual_machine']["publicport"],
-                                self.vm_1.username,
-                                self.vm_1.password,
-                                router.linklocalip,
-                                "service haproxy status"
-                                )
+            try:
+                host.user, host.passwd = get_host_credentials(self.config, host.ipaddress)
+                result = get_process_status(
+                                    host.ipaddress,
+                                    22,
+                                    host.user,
+                                    host.passwd,
+                                    router.linklocalip,
+                                    "service haproxy status"
+                                    )
+            except KeyError:
+                self.skipTest("Marvin configuration has no host credentials to check router
services")
         res = str(result)
         self.assertEqual(
                             res.count("running"),
@@ -467,14 +484,18 @@ class TestRouterServices(cloudstackTestCase):
                            hypervisor=self.apiclient.hypervisor
                            )
         else:
-            res = get_process_status(
+            try:
+                host.user, host.passwd = get_host_credentials(self.config, host.ipaddress)
+                res = get_process_status(
                                 host.ipaddress,
-                                self.services['virtual_machine']["publicport"],
-                                self.vm_1.username,
-                                self.vm_1.password,
+                                22,
+                                host.user,
+                                host.passwd,
                                 router.linklocalip,
                                 "uptime"
                                 )
+            except KeyError:
+                self.skipTest("Marvin configuration has no host credentials to check router
services")
         
         # res = 12:37:14 up 1 min,  0 users,  load average: 0.61, 0.22, 0.08
         # Split result to check the uptime

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b3306497/tools/marvin/marvin/integration/lib/utils.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/integration/lib/utils.py b/tools/marvin/marvin/integration/lib/utils.py
index 7863bfb..7c4c704 100644
--- a/tools/marvin/marvin/integration/lib/utils.py
+++ b/tools/marvin/marvin/integration/lib/utils.py
@@ -153,6 +153,17 @@ def fetch_api_client(config_file='datacenterCfg'):
         )
     )
 
+def get_host_credentials(config, hostname):
+    """Get login information for a host `hostname` from marvin's `config`
+
+    @return the tuple username, password for the host else raise keyerror"""
+    for zone in config.zones:
+        for pod in zone.pods:
+            for cluster in pod.clusters:
+                for host in cluster.hosts:
+                    if str(host.url).find(str(hostname)) > 0:
+                        return host.username, host.password
+    raise KeyError("Please provide the marvin configuration file with credentials to your
hosts")
 
 
 def get_process_status(hostip, port, username, password, linklocalip, process, hypervisor=None):


Mime
View raw message