Revision 2329ffdd

b/lib/cmdlib/instance.py
38 38
from ganeti import objects
39 39
from ganeti import pathutils
40 40
from ganeti import serializer
41
from ganeti import ssh
41 42
import ganeti.rpc.node as rpc
42 43
from ganeti import utils
43 44

  
......
52 53
  ComputeIPolicySpecViolation, CheckInstanceState, ExpandNodeUuidAndName, \
53 54
  CheckDiskTemplateEnabled, IsValidDiskAccessModeCombination
54 55
from ganeti.cmdlib.instance_storage import CreateDisks, \
55
  CheckNodesFreeDiskPerVG, WipeDisks, WipeOrCleanupDisks, WaitForSync, \
56
  IsExclusiveStorageEnabledNodeUuid, CreateSingleBlockDev, ComputeDisks, \
57
  CheckRADOSFreeSpace, ComputeDiskSizePerVG, GenerateDiskTemplate, \
58
  StartInstanceDisks, ShutdownInstanceDisks, AssembleInstanceDisks, \
59
  CheckSpindlesExclusiveStorage
56
  CheckNodesFreeDiskPerVG, WipeDisks, WipeOrCleanupDisks, ImageDisks, \
57
  WaitForSync, IsExclusiveStorageEnabledNodeUuid, CreateSingleBlockDev, \
58
  ComputeDisks, CheckRADOSFreeSpace, ComputeDiskSizePerVG, \
59
  GenerateDiskTemplate, StartInstanceDisks, ShutdownInstanceDisks, \
60
  AssembleInstanceDisks, CheckSpindlesExclusiveStorage
60 61
from ganeti.cmdlib.instance_utils import BuildInstanceHookEnvByObject, \
61 62
  GetClusterDomainSecret, BuildInstanceHookEnv, NICListToTuple, \
62 63
  NICToTuple, CheckNodeNotDrained, RemoveInstance, CopyLockList, \
......
1471 1472

  
1472 1473
    self._RemoveDegradedDisks(feedback_fn, disk_abort, iobj)
1473 1474

  
1475
    # Image disks
1476
    os_image = objects.GetOSImage(iobj.osparams)
1477
    disk_abort = False
1478

  
1479
    if not self.adopt_disks and os_image is not None:
1480
      master = self.cfg.GetMasterNode()
1481

  
1482
      if not utils.IsUrl(os_image) and master != self.pnode.uuid:
1483
        ssh_port = self.pnode.ndparams.get(constants.ND_SSH_PORT)
1484
        srun = ssh.SshRunner(self.cfg.GetClusterName())
1485
        srun.CopyFileToNode(self.pnode.name, ssh_port, os_image)
1486

  
1487
      feedback_fn("* imaging instance disks...")
1488
      try:
1489
        ImageDisks(self, iobj, os_image)
1490
      except errors.OpExecError, err:
1491
        logging.exception("Imaging disks failed")
1492
        self.LogWarning("Imaging instance disks failed (%s)", err)
1493
        disk_abort = True
1494

  
1495
    self._RemoveDegradedDisks(feedback_fn, disk_abort, iobj)
1474 1496

  
1475 1497
    # instance disks are now active
1476 1498
    iobj.disks_active = True

Also available in: Unified diff