---
lib/cmdlib.py | 12 +++++++++++-
lib/opcodes.py | 1 +
2 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 1c965d7..e7a9c84 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -4351,6 +4351,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
@@ -4448,10 +4449,16 @@ class LUSetNodeParams(LogicalUnit):
node = self.node = self.cfg.GetNodeInfo(self.op.node_name)
if _SupportsOob(self.cfg, node):
- if self.op.offline is False and not node.powered:
+ 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)
+ else:
+ if 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 (self.op.master_candidate is not None or
self.op.drained is not None or
@@ -4588,6 +4595,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 9ce1822..a515131 100644
--- a/lib/opcodes.py
+++ b/lib/opcodes.py
@@ -490,6 +490,7 @@ class OpSetNodeParams(OpCode):
"vm_capable",
"secondary_ip",
"ndparams",
+ "powered",
]
--
1.7.3.1