Revision 5eacbcae lib/cmdlib/backup.py

b/lib/cmdlib/backup.py
33 33
from ganeti import query
34 34
from ganeti import utils
35 35

  
36
from ganeti.cmdlib.base import _QueryBase, NoHooksLU, LogicalUnit
37
from ganeti.cmdlib.common import _GetWantedNodes, _ShareAll, \
38
  _CheckNodeOnline, _ExpandNodeName
39
from ganeti.cmdlib.instance_storage import _StartInstanceDisks, \
40
  _ShutdownInstanceDisks
41
from ganeti.cmdlib.instance_utils import _GetClusterDomainSecret, \
42
  _BuildInstanceHookEnvByObject, _CheckNodeNotDrained, _RemoveInstance
36
from ganeti.cmdlib.base import QueryBase, NoHooksLU, LogicalUnit
37
from ganeti.cmdlib.common import GetWantedNodes, ShareAll, CheckNodeOnline, \
38
  ExpandNodeName
39
from ganeti.cmdlib.instance_storage import StartInstanceDisks, \
40
  ShutdownInstanceDisks
41
from ganeti.cmdlib.instance_utils import GetClusterDomainSecret, \
42
  BuildInstanceHookEnvByObject, CheckNodeNotDrained, RemoveInstance
43 43

  
44 44

  
45
class _ExportQuery(_QueryBase):
45
class ExportQuery(QueryBase):
46 46
  FIELDS = query.EXPORT_FIELDS
47 47

  
48 48
  #: The node name is not a unique key for this query
......
53 53

  
54 54
    # The following variables interact with _QueryBase._GetNames
55 55
    if self.names:
56
      self.wanted = _GetWantedNodes(lu, self.names)
56
      self.wanted = GetWantedNodes(lu, self.names)
57 57
    else:
58 58
      self.wanted = locking.ALL_SET
59 59

  
60 60
    self.do_locking = self.use_locking
61 61

  
62 62
    if self.do_locking:
63
      lu.share_locks = _ShareAll()
63
      lu.share_locks = ShareAll()
64 64
      lu.needed_locks = {
65 65
        locking.LEVEL_NODE: self.wanted,
66 66
        }
......
102 102
  REQ_BGL = False
103 103

  
104 104
  def CheckArguments(self):
105
    self.expq = _ExportQuery(qlang.MakeSimpleFilter("node", self.op.nodes),
106
                             ["node", "export"], self.op.use_locking)
105
    self.expq = ExportQuery(qlang.MakeSimpleFilter("node", self.op.nodes),
106
                            ["node", "export"], self.op.use_locking)
107 107

  
108 108
  def ExpandNames(self):
109 109
    self.expq.ExpandNames(self)
......
141 141
    self.instance = self.cfg.GetInstanceInfo(instance_name)
142 142
    assert self.instance is not None, \
143 143
          "Cannot retrieve locked instance %s" % self.op.instance_name
144
    _CheckNodeOnline(self, self.instance.primary_node)
144
    CheckNodeOnline(self, self.instance.primary_node)
145 145

  
146
    self._cds = _GetClusterDomainSecret()
146
    self._cds = GetClusterDomainSecret()
147 147

  
148 148
  def Exec(self, feedback_fn):
149 149
    """Prepares an instance for an export.
......
237 237
      "REMOVE_INSTANCE": str(bool(self.op.remove_instance)),
238 238
      }
239 239

  
240
    env.update(_BuildInstanceHookEnvByObject(self, self.instance))
240
    env.update(BuildInstanceHookEnvByObject(self, self.instance))
241 241

  
242 242
    return env
243 243

  
......
263 263
    self.instance = self.cfg.GetInstanceInfo(instance_name)
264 264
    assert self.instance is not None, \
265 265
          "Cannot retrieve locked instance %s" % self.op.instance_name
266
    _CheckNodeOnline(self, self.instance.primary_node)
266
    CheckNodeOnline(self, self.instance.primary_node)
267 267

  
268 268
    if (self.op.remove_instance and
269 269
        self.instance.admin_state == constants.ADMINST_UP and
......
272 272
                                 " down before", errors.ECODE_STATE)
273 273

  
274 274
    if self.op.mode == constants.EXPORT_MODE_LOCAL:
275
      self.op.target_node = _ExpandNodeName(self.cfg, self.op.target_node)
275
      self.op.target_node = ExpandNodeName(self.cfg, self.op.target_node)
276 276
      self.dst_node = self.cfg.GetNodeInfo(self.op.target_node)
277 277
      assert self.dst_node is not None
278 278

  
279
      _CheckNodeOnline(self, self.dst_node.name)
280
      _CheckNodeNotDrained(self, self.dst_node.name)
279
      CheckNodeOnline(self, self.dst_node.name)
280
      CheckNodeNotDrained(self, self.dst_node.name)
281 281

  
282 282
      self._cds = None
283 283
      self.dest_disk_info = None
......
293 293
                                    len(self.instance.disks)),
294 294
                                   errors.ECODE_INVAL)
295 295

  
296
      cds = _GetClusterDomainSecret()
296
      cds = GetClusterDomainSecret()
297 297

  
298 298
      # Check X509 key name
299 299
      try:
......
403 403
    if activate_disks:
404 404
      # Activate the instance disks if we'exporting a stopped instance
405 405
      feedback_fn("Activating disks for %s" % instance.name)
406
      _StartInstanceDisks(self, instance, None)
406
      StartInstanceDisks(self, instance, None)
407 407

  
408 408
    try:
409 409
      helper = masterd.instance.ExportInstanceHelper(self, feedback_fn,
......
422 422
          msg = result.fail_msg
423 423
          if msg:
424 424
            feedback_fn("Failed to start instance: %s" % msg)
425
            _ShutdownInstanceDisks(self, instance)
425
            ShutdownInstanceDisks(self, instance)
426 426
            raise errors.OpExecError("Could not start instance: %s" % msg)
427 427

  
428 428
        if self.op.mode == constants.EXPORT_MODE_LOCAL:
......
451 451
    finally:
452 452
      if activate_disks:
453 453
        feedback_fn("Deactivating disks for %s" % instance.name)
454
        _ShutdownInstanceDisks(self, instance)
454
        ShutdownInstanceDisks(self, instance)
455 455

  
456 456
    if not (compat.all(dresults) and fin_resu):
457 457
      failures = []
......
470 470
    # Remove instance if requested
471 471
    if self.op.remove_instance:
472 472
      feedback_fn("Removing instance %s" % instance.name)
473
      _RemoveInstance(self, feedback_fn, instance,
474
                      self.op.ignore_remove_failures)
473
      RemoveInstance(self, feedback_fn, instance,
474
                     self.op.ignore_remove_failures)
475 475

  
476 476
    if self.op.mode == constants.EXPORT_MODE_LOCAL:
477 477
      self._CleanupExports(feedback_fn)

Also available in: Unified diff