Revision c957326e

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