[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [test-API PATCH 7/7] domain/[start|destroy]: Add a optional noping flag to skip the ping test



On 03/21/2012 08:46 PM, Peter Krempa wrote:
For some tests it's not needed to ping the guest in the startup process.
This patch adds a flag to the start and destroy test to skip such
attempts (that consume a lot of time)
---
  repos/domain/destroy.py |   54 ++++++++++++++++++++++++++--------------------
  repos/domain/start.py   |   50 ++++++++++++++++++++----------------------
  2 files changed, 54 insertions(+), 50 deletions(-)

diff --git a/repos/domain/destroy.py b/repos/domain/destroy.py
index f98b602..12399d6 100644
--- a/repos/domain/destroy.py
+++ b/repos/domain/destroy.py
@@ -50,7 +50,10 @@ def destroy(params):
         {'guestname': guestname}

         logger -- an object of utils/Python/log.py
-       guestname -- same as the domain name
+       guestname -- the domain name
+       flags -- optional arguments:
+                  noping: Don't do the ping test
+

         Return 0 on SUCCESS or 1 on FAILURE
      """
@@ -62,6 +65,7 @@ def destroy(params):
      if params_check_result:
          return 1
      guestname = params['guestname']
+    flags = params['flags']

The 'flags' is optional, then we have to check if the dictionary of params has key or not
          if params.has_key('flags'):
              ...
          otherwise, it will report "KeyError: "

If 'flags' is mandatory, it'd better to to check it in check_params function.



      # Connect to local hypervisor connection URI
      util = utils.Utils()
@@ -73,18 +77,19 @@ def destroy(params):
      dom_obj = domainAPI.DomainAPI(virconn)
      dom_name_list = dom_obj.get_list()
      if guestname not in dom_name_list:
-        logger.error("guest %s doesn't exist or not be running." % guestname)
+        logger.error("guest %s doesn't exist or isn't running." % guestname)

            Thanks

          conn.close()
          logger.info("closed hypervisor connection")
          return 1
      timeout = 60
      logger.info('destroy domain')

-    # Get domain ip
-    mac = util.get_dom_mac_addr(guestname)
-    logger.info("get ip by mac address")
-    ip = util.mac_to_ip(mac, 180)
-    logger.info("the ip address of guest is %s" % ip)
+    if not("noping" in flags):
+        # Get domain ip
+        mac = util.get_dom_mac_addr(guestname)
+        logger.info("get ip by mac address")
+        ip = util.mac_to_ip(mac, 180)
+        logger.info("the ip address of guest is %s" % ip)

      # Destroy domain
      try:
@@ -93,30 +98,31 @@ def destroy(params):
          except LibvirtAPI, e:
              logger.error("API error message: %s, error code is %s" % \
                           (e.response()['message'], e.response()['code']))
-            logger.error("fail to destroy domain")
+            logger.error("failed to destroy domain")

        thanks to correct it.

              return 1
      finally:
          conn.close()
          logger.info("closed hypervisor connection")

      # Check domain status by ping ip
-    while timeout:
-        time.sleep(10)
-        timeout -= 10
-        logger.info(str(timeout) + "s left")
-
-        logger.info('ping guest')
-
-        if util.do_ping(ip, 30):
-            logger.error('The guest is still active, IP: ' + str(ip))
+    if not "noping" in flags:
+        while timeout:
+            time.sleep(10)
+            timeout -= 10
+            logger.info(str(timeout) + "s left")
+
+            logger.info('ping guest')
+
+            if util.do_ping(ip, 30):
+                logger.error('The guest is still active, IP: ' + str(ip))
+                return 1
+            else:
+                logger.info("domain %s was destroyed successfully" % guestname)
+                break
+
+        if timeout<= 0:
+            logger.error("the domain couldn't be destroyed within 60 seconds.")
              return 1
-        else:
-            logger.info("domain %s is destroied successfully" % guestname)
-            break
-
-    if timeout<= 0:
-        logger.error("the domain couldn't be destroied within 60 secs.")
-        return 1

      return 0

diff --git a/repos/domain/start.py b/repos/domain/start.py
index 39ac47f..483ea7a 100644
--- a/repos/domain/start.py
+++ b/repos/domain/start.py
@@ -66,7 +66,7 @@ def start(params):

          logger -- an object of utils/Python/log.py
          mandatory arguments : guestname -- same as the domain name
-	optional arguments : flags -- domain create flags<none|start_paused>
+	optional arguments : flags -- domain create flags<none|start_paused|noping>

          Return 0 on SUCCESS or 1 on FAILURE
      """
@@ -75,13 +75,11 @@ def start(params):
      check_params(params)
      domname = params['guestname']
      logger = params['logger']
+    flags = params['flags']

           Yes,  please notice this like above.
It seems that you want flags to be mandatory in the following code.
           Add checking for it in check_params()

           Guannan Ren


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]