Revision 0c3d9c7c lib/backend.py
b/lib/backend.py | ||
---|---|---|
3634 | 3634 |
|
3635 | 3635 |
assert isinstance(disk_index, (int, long)) |
3636 | 3636 |
|
3637 |
real_disk = _OpenRealBD(disk) |
|
3638 |
|
|
3639 | 3637 |
inst_os = OSFromDisk(instance.os) |
3640 | 3638 |
env = OSEnvironment(instance, inst_os) |
3641 | 3639 |
|
... | ... | |
3645 | 3643 |
script = inst_os.import_script |
3646 | 3644 |
|
3647 | 3645 |
elif mode == constants.IEM_EXPORT: |
3646 |
real_disk = _OpenRealBD(disk) |
|
3648 | 3647 |
env["EXPORT_DEVICE"] = real_disk.dev_path |
3649 | 3648 |
env["EXPORT_INDEX"] = str(disk_index) |
3650 | 3649 |
script = inst_os.export_script |
... | ... | |
3872 | 3871 |
shutil.rmtree(status_dir, ignore_errors=True) |
3873 | 3872 |
|
3874 | 3873 |
|
3875 |
def _SetPhysicalId(target_node_uuid, nodes_ip, disks): |
|
3876 |
"""Sets the correct physical ID on all passed disks. |
|
3877 |
|
|
3878 |
""" |
|
3879 |
for cf in disks: |
|
3880 |
cf.SetPhysicalID(target_node_uuid, nodes_ip) |
|
3874 |
def _FindDisks(disks): |
|
3875 |
"""Finds attached L{BlockDev}s for the given disks. |
|
3881 | 3876 |
|
3877 |
@type disks: list of L{objects.Disk} |
|
3878 |
@param disks: the disk objects we need to find |
|
3882 | 3879 |
|
3883 |
def _FindDisks(target_node_uuid, nodes_ip, disks):
|
|
3884 |
"""Sets the physical ID on disks and returns the block devices.
|
|
3880 |
@return: list of L{BlockDev} objects or C{None} if a given disk
|
|
3881 |
was not found or was no attached.
|
|
3885 | 3882 |
|
3886 | 3883 |
""" |
3887 |
_SetPhysicalId(target_node_uuid, nodes_ip, disks) |
|
3888 |
|
|
3889 | 3884 |
bdevs = [] |
3890 | 3885 |
|
3891 |
for cf in disks:
|
|
3892 |
rd = _RecursiveFindBD(cf)
|
|
3886 |
for disk in disks:
|
|
3887 |
rd = _RecursiveFindBD(disk)
|
|
3893 | 3888 |
if rd is None: |
3894 |
_Fail("Can't find device %s", cf)
|
|
3889 |
_Fail("Can't find device %s", disk)
|
|
3895 | 3890 |
bdevs.append(rd) |
3896 | 3891 |
return bdevs |
3897 | 3892 |
|
3898 | 3893 |
|
3899 |
def DrbdDisconnectNet(target_node_uuid, nodes_ip, disks):
|
|
3894 |
def DrbdDisconnectNet(disks): |
|
3900 | 3895 |
"""Disconnects the network on a list of drbd devices. |
3901 | 3896 |
|
3902 | 3897 |
""" |
3903 |
bdevs = _FindDisks(target_node_uuid, nodes_ip, disks)
|
|
3898 |
bdevs = _FindDisks(disks) |
|
3904 | 3899 |
|
3905 | 3900 |
# disconnect disks |
3906 | 3901 |
for rd in bdevs: |
... | ... | |
3911 | 3906 |
err, exc=True) |
3912 | 3907 |
|
3913 | 3908 |
|
3914 |
def DrbdAttachNet(target_node_uuid, nodes_ip, disks, instance_name, |
|
3915 |
multimaster): |
|
3909 |
def DrbdAttachNet(disks, instance_name, multimaster): |
|
3916 | 3910 |
"""Attaches the network on a list of drbd devices. |
3917 | 3911 |
|
3918 | 3912 |
""" |
3919 |
bdevs = _FindDisks(target_node_uuid, nodes_ip, disks)
|
|
3913 |
bdevs = _FindDisks(disks) |
|
3920 | 3914 |
|
3921 | 3915 |
if multimaster: |
3922 | 3916 |
for idx, rd in enumerate(bdevs): |
... | ... | |
3974 | 3968 |
_Fail("Can't change to primary mode: %s", err) |
3975 | 3969 |
|
3976 | 3970 |
|
3977 |
def DrbdWaitSync(target_node_uuid, nodes_ip, disks):
|
|
3971 |
def DrbdWaitSync(disks): |
|
3978 | 3972 |
"""Wait until DRBDs have synchronized. |
3979 | 3973 |
|
3980 | 3974 |
""" |
... | ... | |
3984 | 3978 |
raise utils.RetryAgain() |
3985 | 3979 |
return stats |
3986 | 3980 |
|
3987 |
bdevs = _FindDisks(target_node_uuid, nodes_ip, disks)
|
|
3981 |
bdevs = _FindDisks(disks) |
|
3988 | 3982 |
|
3989 | 3983 |
min_resync = 100 |
3990 | 3984 |
alldone = True |
... | ... | |
4004 | 3998 |
return (alldone, min_resync) |
4005 | 3999 |
|
4006 | 4000 |
|
4007 |
def DrbdNeedsActivation(target_node_uuid, nodes_ip, disks):
|
|
4001 |
def DrbdNeedsActivation(disks): |
|
4008 | 4002 |
"""Checks which of the passed disks needs activation and returns their UUIDs. |
4009 | 4003 |
|
4010 | 4004 |
""" |
4011 |
_SetPhysicalId(target_node_uuid, nodes_ip, disks) |
|
4012 | 4005 |
faulty_disks = [] |
4013 | 4006 |
|
4014 | 4007 |
for disk in disks: |
Also available in: Unified diff