Revision 2329ffdd lib/cmdlib/instance.py
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