1394 |
1394 |
node_uuids = list(self.instance.all_nodes)
|
1395 |
1395 |
for node_uuid in node_uuids:
|
1396 |
1396 |
CheckNodeOnline(self, node_uuid)
|
|
1397 |
self.node_es_flags = rpc.GetExclusiveStorageForNodes(self.cfg, node_uuids)
|
1397 |
1398 |
|
1398 |
1399 |
if self.instance.disk_template not in constants.DTS_GROWABLE:
|
1399 |
1400 |
raise errors.OpPrereqError("Instance's disk layout does not support"
|
... | ... | |
1425 |
1426 |
if template not in (constants.DTS_NO_FREE_SPACE_CHECK):
|
1426 |
1427 |
# TODO: check the free disk space for file, when that feature will be
|
1427 |
1428 |
# supported
|
1428 |
|
nodes = map(self.cfg.GetNodeInfo, node_uuids)
|
1429 |
|
es_nodes = filter(lambda n: IsExclusiveStorageEnabledNode(self.cfg, n),
|
1430 |
|
nodes)
|
1431 |
|
if es_nodes:
|
|
1429 |
if any(self.node_es_flags.values()):
|
1432 |
1430 |
# With exclusive storage we need to something smarter than just looking
|
1433 |
1431 |
# at free space; for now, let's simply abort the operation.
|
1434 |
1432 |
raise errors.OpPrereqError("Cannot grow disks when exclusive_storage"
|
... | ... | |
1459 |
1457 |
self.cfg.SetDiskID(self.disk, node_uuid)
|
1460 |
1458 |
result = self.rpc.call_blockdev_grow(node_uuid,
|
1461 |
1459 |
(self.disk, self.instance),
|
1462 |
|
self.delta, True, True)
|
|
1460 |
self.delta, True, True,
|
|
1461 |
self.node_es_flags[node_uuid])
|
1463 |
1462 |
result.Raise("Dry-run grow request failed to node %s" %
|
1464 |
1463 |
self.cfg.GetNodeName(node_uuid))
|
1465 |
1464 |
|
... | ... | |
1492 |
1491 |
self.cfg.SetDiskID(self.disk, node_uuid)
|
1493 |
1492 |
result = self.rpc.call_blockdev_grow(node_uuid,
|
1494 |
1493 |
(self.disk, self.instance),
|
1495 |
|
self.delta, False, True)
|
|
1494 |
self.delta, False, True,
|
|
1495 |
self.node_es_flags[node_uuid])
|
1496 |
1496 |
result.Raise("Grow request failed to node %s" %
|
1497 |
1497 |
self.cfg.GetNodeName(node_uuid))
|
1498 |
1498 |
|
... | ... | |
1500 |
1500 |
node_uuid = self.instance.primary_node
|
1501 |
1501 |
self.cfg.SetDiskID(self.disk, node_uuid)
|
1502 |
1502 |
result = self.rpc.call_blockdev_grow(node_uuid, (self.disk, self.instance),
|
1503 |
|
self.delta, False, False)
|
|
1503 |
self.delta, False, False,
|
|
1504 |
self.node_es_flags[node_uuid])
|
1504 |
1505 |
result.Raise("Grow request failed to node %s" %
|
1505 |
1506 |
self.cfg.GetNodeName(node_uuid))
|
1506 |
1507 |
|