Revision ad24e046
b/lib/cmdlib.py | ||
---|---|---|
2858 | 2858 |
elif field == "mac": |
2859 | 2859 |
val = instance.nics[0].mac |
2860 | 2860 |
elif field == "sda_size" or field == "sdb_size": |
2861 |
disk = instance.FindDisk(field[:3]) |
|
2862 |
if disk is None: |
|
2861 |
idx = ord(field[2]) - ord('a') |
|
2862 |
try: |
|
2863 |
val = instance.FindDisk(idx).size |
|
2864 |
except errors.OpPrereqError: |
|
2863 | 2865 |
val = None |
2864 |
else: |
|
2865 |
val = disk.size |
|
2866 | 2866 |
elif field == "tags": |
2867 | 2867 |
val = list(instance.GetTags()) |
2868 | 2868 |
elif field == "serial_no": |
... | ... | |
4479 | 4479 |
raise errors.OpPrereqError("Instance's disk layout does not support" |
4480 | 4480 |
" growing.") |
4481 | 4481 |
|
4482 |
if instance.FindDisk(self.op.disk) is None: |
|
4483 |
raise errors.OpPrereqError("Disk '%s' not found for instance '%s'" % |
|
4484 |
(self.op.disk, instance.name)) |
|
4482 |
self.disk = instance.FindDisk(self.op.disk) |
|
4485 | 4483 |
|
4486 | 4484 |
nodenames = [instance.primary_node] + list(instance.secondary_nodes) |
4487 | 4485 |
nodeinfo = self.rpc.call_node_info(nodenames, self.cfg.GetVGName(), |
... | ... | |
4505 | 4503 |
|
4506 | 4504 |
""" |
4507 | 4505 |
instance = self.instance |
4508 |
disk = instance.FindDisk(self.op.disk)
|
|
4506 |
disk = self.disk
|
|
4509 | 4507 |
for node in (instance.secondary_nodes + (instance.primary_node,)): |
4510 | 4508 |
self.cfg.SetDiskID(disk, node) |
4511 | 4509 |
result = self.rpc.call_blockdev_grow(node, disk, self.op.amount) |
b/lib/objects.py | ||
---|---|---|
594 | 594 |
|
595 | 595 |
return ret |
596 | 596 |
|
597 |
def FindDisk(self, name):
|
|
598 |
"""Find a disk given having a specified name.
|
|
597 |
def FindDisk(self, idx):
|
|
598 |
"""Find a disk given having a specified index.
|
|
599 | 599 |
|
600 |
This will return the disk which has the given iv_name.
|
|
600 |
This is just a wrapper that does validation of the index.
|
|
601 | 601 |
|
602 |
""" |
|
603 |
for disk in self.disks: |
|
604 |
if disk.iv_name == name: |
|
605 |
return disk |
|
602 |
@type idx: int |
|
603 |
@param idx: the disk index |
|
604 |
@rtype: L{Disk} |
|
605 |
@return: the corresponding disk |
|
606 |
@raise errors.OpPrereqError: when the given index is not valid |
|
606 | 607 |
|
607 |
return None |
|
608 |
""" |
|
609 |
try: |
|
610 |
idx = int(idx) |
|
611 |
return self.disks[idx] |
|
612 |
except ValueError, err: |
|
613 |
raise errors.OpPrereqError("Invalid disk index: '%s'" % str(err)) |
|
614 |
except IndexError: |
|
615 |
raise errors.OpPrereqError("Invalid disk index: %d (instace has disks" |
|
616 |
" 0 to %d" % (idx, len(self.disks))) |
|
608 | 617 |
|
609 | 618 |
def ToDict(self): |
610 | 619 |
"""Instance-specific conversion to standard python types. |
b/scripts/gnt-instance | ||
---|---|---|
631 | 631 |
""" |
632 | 632 |
instance = args[0] |
633 | 633 |
disk = args[1] |
634 |
try: |
|
635 |
disk = int(disk) |
|
636 |
except ValueError, err: |
|
637 |
raise errors.OpPrereqError("Invalid disk index: %s" % str(err)) |
|
634 | 638 |
amount = utils.ParseUnit(args[2]) |
635 | 639 |
op = opcodes.OpGrowDisk(instance_name=instance, disk=disk, amount=amount, |
636 | 640 |
wait_for_sync=opts.wait_for_sync) |
Also available in: Unified diff