2013/2/12 Michele Tartara <[email protected]>:
> --- a/lib/client/gnt_instance.py
> +++ b/lib/client/gnt_instance.py
> @@ -631,7 +631,9 @@ def _RebootInstance(name, opts):
>    return opcodes.OpInstanceReboot(instance_name=name,
>                                    reboot_type=opts.reboot_type,
>                                    ignore_secondaries=opts.ignore_secondaries,
> -                                  shutdown_timeout=opts.shutdown_timeout)
> +                                  shutdown_timeout=opts.shutdown_timeout,
> +                                  reason_text=opts.reason,
> +                                  
> reason_source=constants.INSTANCE_REASON_CLI)

Why are you using two different options instead of a tuple with (source, text)?

> --- a/lib/rapi/rlib2.py
> +++ b/lib/rapi/rlib2.py
> @@ -1040,6 +1040,8 @@ class 
> R_2_instances_name_reboot(baserlib.OpcodeResource):
>          self.queryargs.get("type", [constants.INSTANCE_REBOOT_HARD])[0],
>        "ignore_secondaries": 
> bool(self._checkIntVariable("ignore_secondaries")),
>        "dry_run": self.dryRun(),
> +      "reason_text": self._checkStringVariable("reason_text", 
> default="Reboot"),
> +      "reason_source": constants.INSTANCE_REASON_RAPI

And another case of hardcoded defaults (see below).

> --- a/lib/server/noded.py
> +++ b/lib/server/noded.py
> +def _DefaultAlternative(value, default):
> +  return value if value else default

This wouldn't work with Python 2.4. Please don't use inline-if yet.

>  class MlockallRequestExecutor(http.server.HttpServerRequestExecutor):
>    """Subclass ensuring request handlers are locked in RAM.
>
> @@ -633,7 +645,11 @@ class NodeRequestHandler(http.server.HttpServerHandler):
>      instance = objects.Instance.FromDict(params[0])
>      reboot_type = params[1]
>      shutdown_timeout = params[2]
> -    return backend.InstanceReboot(instance, reboot_type, shutdown_timeout)
> +    reason_text = _DefaultAlternative(params[3], "Reboot")

Please don't hardcode this inline, but make it a module-level constant.

> +    reason_source = params[4]
> +    reason = backend.InstReason(reason_text, reason_source)
> +    return backend.InstanceReboot(instance, reboot_type, shutdown_timeout,
> +                                  reason)


> --- a/test/py/ganeti.rapi.client_unittest.py
> +++ b/test/py/ganeti.rapi.client_unittest.py
> @@ -594,13 +594,15 @@ class GanetiRapiClientTests(testutils.GanetiTestCase):
>    def testRebootInstance(self):
>      self.rapi.AddResponse("6146")
>      job_id = self.client.RebootInstance("i-bar", reboot_type="hard",
> -                                        ignore_secondaries=True, 
> dry_run=True)
> +                                        ignore_secondaries=True, 
> dry_run=True,
> +                                        reason_text="Updates")
>      self.assertEqual(6146, job_id)
>      self.assertHandler(rlib2.R_2_instances_name_reboot)
>      self.assertItems(["i-bar"])
>      self.assertDryRun()
>      self.assertQuery("type", ["hard"])
>      self.assertQuery("ignore_secondaries", ["1"])
> +    self.assertQuery("reason_text", ["Updates"])

You should also test for the case where you don't specify “reason_text” at all.

Michael

Reply via email to