]> xenbits.xensource.com Git - xenrt-citrix/xenrt.git/commitdiff
Fixed CA-187471 and CA-184307
authorVinayak Anil Palankar <vinayak.anilpalankar@citrix.com>
Tue, 17 Nov 2015 17:57:34 +0000 (12:57 -0500)
committerVinayak Anil Palankar <vinayak.anilpalankar@citrix.com>
Tue, 17 Nov 2015 17:57:34 +0000 (12:57 -0500)
exec/testcases/xenserver/tc/ha.py
exec/xenrt/lib/xenserver/host.py

index 7ec93b7d7bafb0f42914e624eb9b9975789d990c..b22d38465f9a9bf0eaef9d1f073e1bce01ca7323 100755 (executable)
@@ -603,8 +603,12 @@ class _HATest(xenrt.TestCase):
             pass
         if cycle:
             host.machine.powerctl.cycle()
+            if host.machine.powerctl.status()[0] == 'off':
+                raise XRTError("Machine is still powered off")
         else:
             host.machine.powerctl.off()
+            if host.machine.powerctl.status()[0] != 'off':
+                raise XRTError("Machine is not powered off")
 
     def preLogs(self):
         for h in self.hostsToPowerOn:
index 3b5f18de4e9c4856333b109d43d7b7f4243d8e8e..17841361e0404b91d42733ba650b9468faa5a303 100755 (executable)
@@ -635,15 +635,6 @@ class Host(xenrt.GenericHost):
         
         self.installationCookie = "%012x" % xenrt.random.randint(0,0xffffffffffff)
 
-    def uninstallGuestByName(self, name):
-        cli = self.getCLIInstance()
-        try:
-            cli.execute("vm-shutdown", "vm=\"%s\" --force" % name)
-        except Exception, ex:
-            xenrt.TEC().logverbose(str(ex))
-        cli.execute("vm-uninstall", "vm=\"%s\" --force" % name)
-
-    
     def getUptime(self):
         return float(self.execdom0("cat /proc/uptime").split()[0])
 
@@ -6672,11 +6663,13 @@ fi
                         template = self.chooseTemplate(\
                             "TEMPLATE_NAME_SLES_%s_64" % (v))
                     else:
-                        template = self.chooseTemplate("TEMPLATE_NAME_SLES_%s" % (v))
+                        template = self.chooseTemplate(\
+                                                   "TEMPLATE_NAME_SLES_%s" % (v))
             elif re.search(r"sled\d+", distro):
                 v = re.search(r"sled(\d+)", distro).group(1)
                 if arch and arch == "x86-64":
-                    template = self.chooseTemplate("TEMPLATE_NAME_SLED_%s_64" % (v))
+                    template = self.chooseTemplate(\
+                            "TEMPLATE_NAME_SLED_%s_64" % (v))
                 else:
                     template = self.chooseTemplate("TEMPLATE_NAME_SLED_%s" % (v))
             elif re.search(r"sl7", distro):
@@ -6730,7 +6723,7 @@ fi
                                     (distro))
                 template = self.chooseTemplate("TEMPLATE_NAME_RHEL_5")
             else:
-                raise
+                raise e
 
         return template
 
@@ -12519,28 +12512,32 @@ class Pool(object):
             raise xenrt.XRTFailure("Unable to determine pool master")
 
     def _getPoolMaster(self, host):
-        try:
-            if self.haEnabled and not (host.getMyHostUUID() in self.haLiveset):
-                # Don't trust anything this host knows about, as it's dead!
-                return None
-            pc = host.execdom0("cat /etc/xensource/pool.conf",timeout=10)
-            if pc.strip() == "master":
-                return host
-            elif pc.strip().startswith("slave:"):
-                l = pc.strip().split(":")
-                masterip = l[1].strip()
-                for h in self.getHosts():
-                    if h.getIP() == masterip:
-                        return h
-                raise xenrt.XRTError("Pool master (%s) is not a known host" %
-                                     (masterip))
-            else:
-                raise xenrt.XRTError("Unknown entry in pool.conf: %s" % 
-                                     (pc.strip()))
-        except xenrt.XRTFailure, e:
+        if self.haEnabled and not (host.getMyHostUUID() in self.haLiveset):
+            # Don't trust anything this host knows about, as it's dead!
             return None
-            
-            
+
+        #Retrying multiple times to get status to avoid intermittent network issues
+        for retry in [1,0]:
+            try:
+                pc = host.execdom0("cat /etc/xensource/pool.conf",timeout=10)
+                break
+            except xenrt.XRTFailure, e:
+                if not retry:
+                    return None
+
+        if pc.strip() == "master":
+            return host
+        elif pc.strip().startswith("slave:"):
+            l = pc.strip().split(":")
+            masterip = l[1].strip()
+            for h in self.getHosts():
+                if h.getIP() == masterip:
+                    return h
+            raise xenrt.XRTError("Pool master (%s) is not a known host" %
+                                 (masterip))
+        else:
+            raise xenrt.XRTError("Unknown entry in pool.conf: %s" % 
+                                 (pc.strip()))
 
     def recoverSlaves(self):          
         cli = self.getCLIInstance()