From 0ecef64c5bdf304188c8ff5f9884b47319039042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Nussbaumer?= <rn@google.com> Date: Thu, 16 Dec 2010 15:16:30 +0100 Subject: [PATCH] LUSetNodeParams: Add support for powered state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: RenΓ© Nussbaumer <rn@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/cmdlib.py | 19 ++++++++++++++----- lib/opcodes.py | 1 + 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/cmdlib.py b/lib/cmdlib.py index 774c236bc..4845389be 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -4360,6 +4360,7 @@ class LUSetNodeParams(LogicalUnit): ("vm_capable", None, ht.TMaybeBool), ("secondary_ip", None, ht.TMaybeString), ("ndparams", None, ht.TOr(ht.TDict, ht.TNone)), + ("powered", None, ht.TMaybeBool), _PForce, ] REQ_BGL = False @@ -4503,11 +4504,16 @@ class LUSetNodeParams(LogicalUnit): # away from the respective state, as only real changes are kept # TODO: We might query the real power state if it supports OOB - if _SupportsOob(self.cfg, node) and (self.op.offline is False and - not node.powered): - raise errors.OpPrereqError(("Please power on node %s first before you" - " can reset offline state") % - self.op.node_name) + if _SupportsOob(self.cfg, node): + if self.op.offline is False and not (node.powered or + self.op.powered == True): + raise errors.OpPrereqError(("Please power on node %s first before you" + " can reset offline state") % + self.op.node_name) + elif self.op.powered is not None: + raise errors.OpPrereqError(("Unable to change powered state for node %s" + " which does not support out-of-band" + " handling") % self.op.node_name) # If we're being deofflined/drained, we'll MC ourself if needed if (self.op.drained == False or self.op.offline == False or @@ -4598,6 +4604,9 @@ class LUSetNodeParams(LogicalUnit): if self.op.ndparams: node.ndparams = self.new_ndparams + if self.op.powered is not None: + node.powered = self.op.powered + for attr in ["master_capable", "vm_capable"]: val = getattr(self.op, attr) if val is not None: diff --git a/lib/opcodes.py b/lib/opcodes.py index 9ce1822ae..a5151316c 100644 --- a/lib/opcodes.py +++ b/lib/opcodes.py @@ -490,6 +490,7 @@ class OpSetNodeParams(OpCode): "vm_capable", "secondary_ip", "ndparams", + "powered", ] -- GitLab