>From the man page, the --online option is supposed to mark an instance down only if it is already offline. Otherwise it should fail. With this patch we avoid undesired transitions to ADMIN_down state while the instance is already up and running.
Fix the corresponding QA test as well (TestInstanceModify). Signed-off-by: Dimitris Aragiorgis <[email protected]> --- lib/cmdlib/instance.py | 9 +++++++-- qa/qa_instance.py | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/cmdlib/instance.py b/lib/cmdlib/instance.py index 3e5a2cd..b7a408b 100644 --- a/lib/cmdlib/instance.py +++ b/lib/cmdlib/instance.py @@ -2849,9 +2849,14 @@ class LUInstanceSetParams(LogicalUnit): ispec[constants.ISPEC_DISK_COUNT] = len(disk_sizes) ispec[constants.ISPEC_DISK_SIZE] = disk_sizes - if self.op.offline is not None and self.op.offline: + # either --online or --offline was passed + if self.op.offline is not None: + if self.op.offline: + msg = "can't change to offline without being down first" + else: + msg = "can't change to online (down) without being offline first" CheckInstanceState(self, self.instance, CAN_CHANGE_INSTANCE_OFFLINE, - msg="can't change to offline") + msg=msg) def CheckPrereq(self): """Check prerequisites. diff --git a/qa/qa_instance.py b/qa/qa_instance.py index 0e66be1..abd2cc6 100644 --- a/qa/qa_instance.py +++ b/qa/qa_instance.py @@ -554,8 +554,9 @@ def TestInstanceModify(instance): AssertCommand(["gnt-instance", "modify", "--offline", instance.name], fail=True) - # ...while making it online is ok, and should work - AssertCommand(["gnt-instance", "modify", "--online", instance.name]) + # ...while making it online fails too (needs to be offline first) + AssertCommand(["gnt-instance", "modify", "--online", instance.name], + fail=True) @InstanceCheck(INST_UP, INST_UP, FIRST_ARG) -- 1.7.10.4
