Revision 11bd1fac lib/cmdlib/instance_utils.py
b/lib/cmdlib/instance_utils.py | ||
---|---|---|
121 | 121 |
|
122 | 122 |
if disks: |
123 | 123 |
disk_count = len(disks) |
124 |
for idx, (name, uuid, size, mode) in enumerate(disks): |
|
124 |
for idx, (name, uuid, size, mode, info) in enumerate(disks):
|
|
125 | 125 |
if name: |
126 | 126 |
env["INSTANCE_DISK%d_NAME" % idx] = name |
127 | 127 |
env["INSTANCE_DISK%d_UUID" % idx] = uuid |
128 | 128 |
env["INSTANCE_DISK%d_SIZE" % idx] = size |
129 | 129 |
env["INSTANCE_DISK%d_MODE" % idx] = mode |
130 |
env.update(info) |
|
130 | 131 |
else: |
131 | 132 |
disk_count = 0 |
132 | 133 |
|
... | ... | |
173 | 174 |
"vcpus": bep[constants.BE_VCPUS], |
174 | 175 |
"nics": NICListToTuple(lu, instance.nics), |
175 | 176 |
"disk_template": instance.disk_template, |
176 |
"disks": [(disk.name, disk.uuid, disk.size, disk.mode) |
|
177 |
for disk in instance.disks], |
|
177 |
"disks": [(disk.name, disk.uuid, disk.size, disk.mode, |
|
178 |
BuildDiskLogicalIDEnv(instance.disk_template, idx, disk)) |
|
179 |
for idx, disk in enumerate(instance.disks)], |
|
178 | 180 |
"bep": bep, |
179 | 181 |
"hvp": hvp, |
180 | 182 |
"hypervisor_name": instance.hypervisor, |
... | ... | |
561 | 563 |
|
562 | 564 |
if variant not in os_obj.supported_variants: |
563 | 565 |
raise errors.OpPrereqError("Unsupported OS variant", errors.ECODE_INVAL) |
566 |
|
|
567 |
|
|
568 |
def BuildDiskLogicalIDEnv(template_name, idx, disk): |
|
569 |
if template_name == constants.DT_PLAIN: |
|
570 |
vg, name = disk.logical_id |
|
571 |
ret = { |
|
572 |
"INSTANCE_DISK%d_VG" % idx : vg, |
|
573 |
"INSTANCE_DISK%d_NAME" % idx : name |
|
574 |
} |
|
575 |
elif template_name in (constants.DT_FILE, constants.DT_SHARED_FILE): |
|
576 |
file_driver, name = disk.logical_id |
|
577 |
ret = { |
|
578 |
"INSTANCE_DISK%d_DRIVER" % idx : file_driver, |
|
579 |
"INSTANCE_DISK%d_NAME" % idx : name |
|
580 |
} |
|
581 |
|
|
582 |
elif template_name == constants.DT_BLOCK: |
|
583 |
block_driver, adopt = disk.logical_id |
|
584 |
ret = { |
|
585 |
"INSTANCE_DISK%d_DRIVER" % idx : block_driver, |
|
586 |
"INSTANCE_DISK%d_NAME" % idx : name |
|
587 |
} |
|
588 |
|
|
589 |
elif template_name == constants.DT_RBD: |
|
590 |
rbd, name = disk.logical_id |
|
591 |
ret = { |
|
592 |
"INSTANCE_DISK%d_DRIVER" % idx : rbd, |
|
593 |
"INSTANCE_DISK%d_NAME" % idx : name |
|
594 |
} |
|
595 |
|
|
596 |
elif template_name == constants.DT_EXT: |
|
597 |
provider, name = disk.logical_id |
|
598 |
ret = { |
|
599 |
"INSTANCE_DISK%d_PROVIDER" % idx : provider, |
|
600 |
"INSTANCE_DISK%d_NAME" % idx : name |
|
601 |
} |
|
602 |
|
|
603 |
elif template_name == constants.DT_DRBD8: |
|
604 |
pnode, snode, port, pmin, smin, secret = disk.logical_id |
|
605 |
data, meta = disk.children |
|
606 |
data_vg, data_name = data.logical_id |
|
607 |
meta_vg, meta_name = meta.logical_id |
|
608 |
ret = { |
|
609 |
"INSTANCE_DISK%d_PNODE" % idx : pnode, |
|
610 |
"INSTANCE_DISK%d_SNODE" % idx : snode, |
|
611 |
"INSTANCE_DISK%d_PORT" % idx : port, |
|
612 |
"INSTANCE_DISK%d_PMINOR" % idx : pmin, |
|
613 |
"INSTANCE_DISK%d_SMINOR" % idx : smin, |
|
614 |
"INSTANCE_DISK%d_DATA_VG" % idx : data_vg, |
|
615 |
"INSTANCE_DISK%d_DATA_NAME" % idx : data_name, |
|
616 |
"INSTANCE_DISK%d_META_VG" % idx : meta_vg, |
|
617 |
"INSTANCE_DISK%d_META_NAME" % idx : meta_name, |
|
618 |
} |
|
619 |
|
|
620 |
elif template_name == constants.DT_DISKLESS: |
|
621 |
ret = {} |
|
622 |
|
|
623 |
ret.update({ |
|
624 |
"INSTANCE_DISK%d_TEMPLATE_NAME" % idx: template_name |
|
625 |
}) |
|
626 |
|
|
627 |
return ret |
Also available in: Unified diff