Revision c957326e lib/cmdlib.py
b/lib/cmdlib.py | ||
---|---|---|
3228 | 3228 |
|
3229 | 3229 |
""" |
3230 | 3230 |
self.nodes = [] |
3231 |
master_node = self.cfg.GetMasterNode() |
|
3232 |
for node_name in self.op.node_names: |
|
3233 |
node = self.cfg.GetNodeInfo(node_name) |
|
3234 |
|
|
3235 |
if node is None: |
|
3236 |
raise errors.OpPrereqError("Node %s not found" % node_name, |
|
3237 |
errors.ECODE_NOENT) |
|
3238 |
else: |
|
3239 |
self.nodes.append(node) |
|
3240 |
|
|
3241 |
if (not self.op.ignore_status and |
|
3242 |
(self.op.command == constants.OOB_POWER_OFF and not node.offline)): |
|
3243 |
raise errors.OpPrereqError(("Cannot power off node %s because it is" |
|
3244 |
" not marked offline") % node_name, |
|
3245 |
errors.ECODE_STATE) |
|
3231 |
self.master_node = self.cfg.GetMasterNode() |
|
3246 | 3232 |
|
3247 | 3233 |
if self.op.command in (constants.OOB_POWER_OFF, constants.OOB_POWER_CYCLE): |
3248 | 3234 |
# This does two things, it checks if master is in the list and if so and |
3249 | 3235 |
# force_master is set it puts it to the end so the master is done last |
3250 | 3236 |
try: |
3251 |
self.op.node_names.remove(master_node) |
|
3237 |
self.op.node_names.remove(self.master_node)
|
|
3252 | 3238 |
except ValueError: |
3253 | 3239 |
pass |
3254 | 3240 |
else: |
3255 | 3241 |
if self.op.force_master: |
3256 |
self.op.node_names.append(master_node) |
|
3242 |
self.op.node_names.append(self.master_node)
|
|
3257 | 3243 |
else: |
3258 | 3244 |
self.LogWarning("Master %s was skipped, use the force master" |
3259 | 3245 |
" option to operate on the master too", |
3260 |
master_node) |
|
3246 |
self.master_node)
|
|
3261 | 3247 |
if not self.op.node_names: |
3262 | 3248 |
raise errors.OpPrereqError("No nodes left to operate on, aborting", |
3263 | 3249 |
errors.ECODE_INVAL) |
3264 | 3250 |
|
3265 |
assert (master_node not in self.op.node_names or |
|
3266 |
self.op.node_names[-1] == master_node) |
|
3251 |
assert (self.master_node not in self.op.node_names or |
|
3252 |
self.op.node_names[-1] == self.master_node) |
|
3253 |
|
|
3254 |
for node_name in self.op.node_names: |
|
3255 |
node = self.cfg.GetNodeInfo(node_name) |
|
3256 |
|
|
3257 |
if node is None: |
|
3258 |
raise errors.OpPrereqError("Node %s not found" % node_name, |
|
3259 |
errors.ECODE_NOENT) |
|
3260 |
else: |
|
3261 |
self.nodes.append(node) |
|
3262 |
|
|
3263 |
if (not self.op.ignore_status and |
|
3264 |
(self.op.command == constants.OOB_POWER_OFF and not node.offline)): |
|
3265 |
raise errors.OpPrereqError(("Cannot power off node %s because it is" |
|
3266 |
" not marked offline") % node_name, |
|
3267 |
errors.ECODE_STATE) |
|
3267 | 3268 |
|
3268 | 3269 |
def ExpandNames(self): |
3269 | 3270 |
"""Gather locks we need. |
... | ... | |
3283 | 3284 |
"""Execute OOB and return result if we expect any. |
3284 | 3285 |
|
3285 | 3286 |
""" |
3286 |
master_node = self.cfg.GetMasterNode()
|
|
3287 |
master_node = self.master_node
|
|
3287 | 3288 |
ret = [] |
3288 | 3289 |
|
3289 | 3290 |
for node in self.nodes: |
Also available in: Unified diff