Revision 75c7520f lib/cmdlib.py
b/lib/cmdlib.py | ||
---|---|---|
4048 | 4048 |
if query.IQ_DISKUSAGE in self.requested_data: |
4049 | 4049 |
disk_usage = dict((inst.name, |
4050 | 4050 |
_ComputeDiskSize(inst.disk_template, |
4051 |
[{"size": disk.size}
|
|
4051 |
[{constants.IDISK_SIZE: disk.size}
|
|
4052 | 4052 |
for disk in inst.disks])) |
4053 | 4053 |
for inst in instance_list) |
4054 | 4054 |
else: |
... | ... | |
6954 | 6954 |
for i in range(disk_count)]) |
6955 | 6955 |
for idx, disk in enumerate(disk_info): |
6956 | 6956 |
disk_index = idx + base_index |
6957 |
vg = disk.get("vg", vgname)
|
|
6957 |
vg = disk.get(constants.IDISK_VG, vgname)
|
|
6958 | 6958 |
feedback_fn("* disk %i, vg %s, name %s" % (idx, vg, names[idx])) |
6959 |
disk_dev = objects.Disk(dev_type=constants.LD_LV, size=disk["size"], |
|
6959 |
disk_dev = objects.Disk(dev_type=constants.LD_LV, |
|
6960 |
size=disk[constants.IDISK_SIZE], |
|
6960 | 6961 |
logical_id=(vg, names[idx]), |
6961 | 6962 |
iv_name="disk/%d" % disk_index, |
6962 |
mode=disk["mode"])
|
|
6963 |
mode=disk[constants.IDISK_MODE])
|
|
6963 | 6964 |
disks.append(disk_dev) |
6964 | 6965 |
elif template_name == constants.DT_DRBD8: |
6965 | 6966 |
if len(secondary_nodes) != 1: |
... | ... | |
6975 | 6976 |
names.append(lv_prefix + "_meta") |
6976 | 6977 |
for idx, disk in enumerate(disk_info): |
6977 | 6978 |
disk_index = idx + base_index |
6978 |
vg = disk.get("vg", vgname)
|
|
6979 |
vg = disk.get(constants.IDISK_VG, vgname)
|
|
6979 | 6980 |
disk_dev = _GenerateDRBD8Branch(lu, primary_node, remote_node, |
6980 |
disk["size"], vg, names[idx*2:idx*2+2], |
|
6981 |
disk[constants.IDISK_SIZE], vg, |
|
6982 |
names[idx * 2:idx * 2 + 2], |
|
6981 | 6983 |
"disk/%d" % disk_index, |
6982 |
minors[idx*2], minors[idx*2+1])
|
|
6983 |
disk_dev.mode = disk["mode"]
|
|
6984 |
minors[idx * 2], minors[idx * 2 + 1])
|
|
6985 |
disk_dev.mode = disk[constants.IDISK_MODE]
|
|
6984 | 6986 |
disks.append(disk_dev) |
6985 | 6987 |
elif template_name == constants.DT_FILE: |
6986 | 6988 |
if len(secondary_nodes) != 0: |
... | ... | |
6990 | 6992 |
|
6991 | 6993 |
for idx, disk in enumerate(disk_info): |
6992 | 6994 |
disk_index = idx + base_index |
6993 |
disk_dev = objects.Disk(dev_type=constants.LD_FILE, size=disk["size"], |
|
6995 |
disk_dev = objects.Disk(dev_type=constants.LD_FILE, |
|
6996 |
size=disk[constants.IDISK_SIZE], |
|
6994 | 6997 |
iv_name="disk/%d" % disk_index, |
6995 | 6998 |
logical_id=(file_driver, |
6996 | 6999 |
"%s/disk%d" % (file_storage_dir, |
6997 | 7000 |
disk_index)), |
6998 |
mode=disk["mode"])
|
|
7001 |
mode=disk[constants.IDISK_MODE])
|
|
6999 | 7002 |
disks.append(disk_dev) |
7000 | 7003 |
elif template_name == constants.DT_SHARED_FILE: |
7001 | 7004 |
if len(secondary_nodes) != 0: |
... | ... | |
7005 | 7008 |
|
7006 | 7009 |
for idx, disk in enumerate(disk_info): |
7007 | 7010 |
disk_index = idx + base_index |
7008 |
disk_dev = objects.Disk(dev_type=constants.LD_FILE, size=disk["size"], |
|
7011 |
disk_dev = objects.Disk(dev_type=constants.LD_FILE, |
|
7012 |
size=disk[constants.IDISK_SIZE], |
|
7009 | 7013 |
iv_name="disk/%d" % disk_index, |
7010 | 7014 |
logical_id=(file_driver, |
7011 | 7015 |
"%s/disk%d" % (file_storage_dir, |
7012 | 7016 |
disk_index)), |
7013 |
mode=disk["mode"])
|
|
7017 |
mode=disk[constants.IDISK_MODE])
|
|
7014 | 7018 |
disks.append(disk_dev) |
7015 | 7019 |
elif template_name == constants.DT_BLOCK: |
7016 | 7020 |
if len(secondary_nodes) != 0: |
... | ... | |
7018 | 7022 |
|
7019 | 7023 |
for idx, disk in enumerate(disk_info): |
7020 | 7024 |
disk_index = idx + base_index |
7021 |
disk_dev = objects.Disk(dev_type=constants.LD_BLOCKDEV, size=disk["size"], |
|
7025 |
disk_dev = objects.Disk(dev_type=constants.LD_BLOCKDEV, |
|
7026 |
size=disk[constants.IDISK_SIZE], |
|
7022 | 7027 |
logical_id=(constants.BLOCKDEV_DRIVER_MANUAL, |
7023 |
disk["adopt"]),
|
|
7028 |
disk[constants.IDISK_ADOPT]),
|
|
7024 | 7029 |
iv_name="disk/%d" % disk_index, |
7025 |
mode=disk["mode"])
|
|
7030 |
mode=disk[constants.IDISK_MODE])
|
|
7026 | 7031 |
disks.append(disk_dev) |
7027 | 7032 |
|
7028 | 7033 |
else: |
... | ... | |
7213 | 7218 |
|
7214 | 7219 |
""" |
7215 | 7220 |
def _compute(disks, payload): |
7216 |
"""Universal algorithm |
|
7221 |
"""Universal algorithm.
|
|
7217 | 7222 |
|
7218 | 7223 |
""" |
7219 | 7224 |
vgs = {} |
7220 | 7225 |
for disk in disks: |
7221 |
vgs[disk["vg"]] = vgs.get("vg", 0) + disk["size"] + payload |
|
7226 |
vgs[disk[constants.IDISK_VG]] = \ |
|
7227 |
vgs.get(constants.IDISK_VG, 0) + disk[constants.IDISK_MODE] + payload |
|
7222 | 7228 |
|
7223 | 7229 |
return vgs |
7224 | 7230 |
|
... | ... | |
7246 | 7252 |
# Required free disk space as a function of disk and swap space |
7247 | 7253 |
req_size_dict = { |
7248 | 7254 |
constants.DT_DISKLESS: None, |
7249 |
constants.DT_PLAIN: sum(d["size"] for d in disks),
|
|
7255 |
constants.DT_PLAIN: sum(d[constants.IDISK_SIZE] for d in disks),
|
|
7250 | 7256 |
# 128 MB are added for drbd metadata for each disk |
7251 |
constants.DT_DRBD8: sum(d["size"] + 128 for d in disks),
|
|
7257 |
constants.DT_DRBD8: sum(d[constants.IDISK_SIZE] + 128 for d in disks),
|
|
7252 | 7258 |
constants.DT_FILE: None, |
7253 | 7259 |
constants.DT_SHARED_FILE: 0, |
7254 | 7260 |
constants.DT_BLOCK: 0, |
... | ... | |
7368 | 7374 |
has_adopt = has_no_adopt = False |
7369 | 7375 |
for disk in self.op.disks: |
7370 | 7376 |
utils.ForceDictType(disk, constants.IDISK_PARAMS_TYPES) |
7371 |
if "adopt" in disk:
|
|
7377 |
if constants.IDISK_ADOPT in disk:
|
|
7372 | 7378 |
has_adopt = True |
7373 | 7379 |
else: |
7374 | 7380 |
has_no_adopt = True |
... | ... | |
7607 | 7613 |
vcpus=self.be_full[constants.BE_VCPUS], |
7608 | 7614 |
nics=_NICListToTuple(self, self.nics), |
7609 | 7615 |
disk_template=self.op.disk_template, |
7610 |
disks=[(d["size"], d["mode"]) for d in self.disks], |
|
7616 |
disks=[(d[constants.IDISK_SIZE], d[constants.IDISK_MODE]) |
|
7617 |
for d in self.disks], |
|
7611 | 7618 |
bep=self.be_full, |
7612 | 7619 |
hvp=self.hv_full, |
7613 | 7620 |
hypervisor_name=self.op.hypervisor, |
... | ... | |
7694 | 7701 |
# TODO: import the disk iv_name too |
7695 | 7702 |
for idx in range(einfo.getint(constants.INISECT_INS, "disk_count")): |
7696 | 7703 |
disk_sz = einfo.getint(constants.INISECT_INS, "disk%d_size" % idx) |
7697 |
disks.append({"size": disk_sz})
|
|
7704 |
disks.append({constants.IDISK_SIZE: disk_sz})
|
|
7698 | 7705 |
self.op.disks = disks |
7699 | 7706 |
else: |
7700 | 7707 |
raise errors.OpPrereqError("No disk info specified and the export" |
... | ... | |
7815 | 7822 |
# NIC buildup |
7816 | 7823 |
self.nics = [] |
7817 | 7824 |
for idx, nic in enumerate(self.op.nics): |
7818 |
nic_mode_req = nic.get("mode", None)
|
|
7825 |
nic_mode_req = nic.get(constants.INIC_MODE, None)
|
|
7819 | 7826 |
nic_mode = nic_mode_req |
7820 | 7827 |
if nic_mode is None: |
7821 | 7828 |
nic_mode = cluster.nicparams[constants.PP_DEFAULT][constants.NIC_MODE] |
... | ... | |
7827 | 7834 |
default_ip_mode = constants.VALUE_NONE |
7828 | 7835 |
|
7829 | 7836 |
# ip validity checks |
7830 |
ip = nic.get("ip", default_ip_mode)
|
|
7837 |
ip = nic.get(constants.INIC_IP, default_ip_mode)
|
|
7831 | 7838 |
if ip is None or ip.lower() == constants.VALUE_NONE: |
7832 | 7839 |
nic_ip = None |
7833 | 7840 |
elif ip.lower() == constants.VALUE_AUTO: |
... | ... | |
7848 | 7855 |
errors.ECODE_INVAL) |
7849 | 7856 |
|
7850 | 7857 |
# MAC address verification |
7851 |
mac = nic.get("mac", constants.VALUE_AUTO)
|
|
7858 |
mac = nic.get(constants.INIC_MAC, constants.VALUE_AUTO)
|
|
7852 | 7859 |
if mac not in (constants.VALUE_AUTO, constants.VALUE_GENERATE): |
7853 | 7860 |
mac = utils.NormalizeAndValidateMac(mac) |
7854 | 7861 |
|
... | ... | |
7872 | 7879 |
self.nics.append(objects.NIC(mac=mac, ip=nic_ip, nicparams=nicparams)) |
7873 | 7880 |
|
7874 | 7881 |
# disk checks/pre-build |
7882 |
default_vg = self.cfg.GetVGName() |
|
7875 | 7883 |
self.disks = [] |
7876 | 7884 |
for disk in self.op.disks: |
7877 |
mode = disk.get("mode", constants.DISK_RDWR)
|
|
7885 |
mode = disk.get(constants.IDISK_MODE, constants.DISK_RDWR)
|
|
7878 | 7886 |
if mode not in constants.DISK_ACCESS_SET: |
7879 | 7887 |
raise errors.OpPrereqError("Invalid disk access mode '%s'" % |
7880 | 7888 |
mode, errors.ECODE_INVAL) |
7881 |
size = disk.get("size", None)
|
|
7889 |
size = disk.get(constants.IDISK_SIZE, None)
|
|
7882 | 7890 |
if size is None: |
7883 | 7891 |
raise errors.OpPrereqError("Missing disk size", errors.ECODE_INVAL) |
7884 | 7892 |
try: |
... | ... | |
7886 | 7894 |
except (TypeError, ValueError): |
7887 | 7895 |
raise errors.OpPrereqError("Invalid disk size '%s'" % size, |
7888 | 7896 |
errors.ECODE_INVAL) |
7889 |
vg = disk.get("vg", self.cfg.GetVGName()) |
|
7890 |
new_disk = {"size": size, "mode": mode, "vg": vg} |
|
7891 |
if "adopt" in disk: |
|
7892 |
new_disk["adopt"] = disk["adopt"] |
|
7897 |
new_disk = { |
|
7898 |
constants.IDISK_SIZE: size, |
|
7899 |
constants.IDISK_MODE: mode, |
|
7900 |
constants.IDISK_VG: disk.get(constants.IDISK_VG, default_vg), |
|
7901 |
} |
|
7902 |
if constants.IDISK_ADOPT in disk: |
|
7903 |
new_disk[constants.IDISK_ADOPT] = disk[constants.IDISK_ADOPT] |
|
7893 | 7904 |
self.disks.append(new_disk) |
7894 | 7905 |
|
7895 | 7906 |
if self.op.mode == constants.INSTANCE_IMPORT: |
... | ... | |
7991 | 8002 |
_CheckNodesFreeDiskPerVG(self, nodenames, req_sizes) |
7992 | 8003 |
|
7993 | 8004 |
elif self.op.disk_template == constants.DT_PLAIN: # Check the adoption data |
7994 |
all_lvs = set([i["vg"] + "/" + i["adopt"] for i in self.disks]) |
|
8005 |
all_lvs = set(["%s/%s" % (disk[constants.IDISK_VG], |
|
8006 |
disk[constants.IDISK_ADOPT]) |
|
8007 |
for disk in self.disks]) |
|
7995 | 8008 |
if len(all_lvs) != len(self.disks): |
7996 | 8009 |
raise errors.OpPrereqError("Duplicate volume names given for adoption", |
7997 | 8010 |
errors.ECODE_INVAL) |
... | ... | |
8024 | 8037 |
errors.ECODE_STATE) |
8025 | 8038 |
# update the size of disk based on what is found |
8026 | 8039 |
for dsk in self.disks: |
8027 |
dsk["size"] = int(float(node_lvs[dsk["vg"] + "/" + dsk["adopt"]][0])) |
|
8040 |
dsk[constants.IDISK_SIZE] = \ |
|
8041 |
int(float(node_lvs["%s/%s" % (dsk[constants.IDISK_VG], |
|
8042 |
dsk[constants.IDISK_ADOPT])][0])) |
|
8028 | 8043 |
|
8029 | 8044 |
elif self.op.disk_template == constants.DT_BLOCK: |
8030 | 8045 |
# Normalize and de-duplicate device paths |
8031 |
all_disks = set([os.path.abspath(i["adopt"]) for i in self.disks]) |
|
8046 |
all_disks = set([os.path.abspath(disk[constants.IDISK_ADOPT]) |
|
8047 |
for disk in self.disks]) |
|
8032 | 8048 |
if len(all_disks) != len(self.disks): |
8033 | 8049 |
raise errors.OpPrereqError("Duplicate disk names given for adoption", |
8034 | 8050 |
errors.ECODE_INVAL) |
... | ... | |
8052 | 8068 |
utils.CommaJoin(delta), |
8053 | 8069 |
errors.ECODE_INVAL) |
8054 | 8070 |
for dsk in self.disks: |
8055 |
dsk["size"] = int(float(node_disks[dsk["adopt"]])) |
|
8071 |
dsk[constants.IDISK_SIZE] = \ |
|
8072 |
int(float(node_disks[dsk[constants.IDISK_ADOPT]])) |
|
8056 | 8073 |
|
8057 | 8074 |
_CheckHVParams(self, nodenames, self.op.hypervisor, self.op.hvparams) |
8058 | 8075 |
|
... | ... | |
8132 | 8149 |
rename_to = [] |
8133 | 8150 |
for t_dsk, a_dsk in zip (tmp_disks, self.disks): |
8134 | 8151 |
rename_to.append(t_dsk.logical_id) |
8135 |
t_dsk.logical_id = (t_dsk.logical_id[0], a_dsk["adopt"])
|
|
8152 |
t_dsk.logical_id = (t_dsk.logical_id[0], a_dsk[constants.IDISK_ADOPT])
|
|
8136 | 8153 |
self.cfg.SetDiskID(t_dsk, pnode_name) |
8137 | 8154 |
result = self.rpc.call_blockdev_rename(pnode_name, |
8138 | 8155 |
zip(tmp_disks, rename_to)) |
... | ... | |
9517 | 9534 |
raise errors.OpPrereqError(msg, errors.ECODE_INVAL) |
9518 | 9535 |
|
9519 | 9536 |
if disk_op == constants.DDM_ADD: |
9520 |
mode = disk_dict.setdefault('mode', constants.DISK_RDWR)
|
|
9537 |
mode = disk_dict.setdefault(constants.IDISK_MODE, constants.DISK_RDWR)
|
|
9521 | 9538 |
if mode not in constants.DISK_ACCESS_SET: |
9522 | 9539 |
raise errors.OpPrereqError("Invalid disk access mode '%s'" % mode, |
9523 | 9540 |
errors.ECODE_INVAL) |
9524 |
size = disk_dict.get('size', None)
|
|
9541 |
size = disk_dict.get(constants.IDISK_SIZE, None)
|
|
9525 | 9542 |
if size is None: |
9526 | 9543 |
raise errors.OpPrereqError("Required disk parameter size missing", |
9527 | 9544 |
errors.ECODE_INVAL) |
... | ... | |
9530 | 9547 |
except (TypeError, ValueError), err: |
9531 | 9548 |
raise errors.OpPrereqError("Invalid disk size parameter: %s" % |
9532 | 9549 |
str(err), errors.ECODE_INVAL) |
9533 |
disk_dict['size'] = size
|
|
9550 |
disk_dict[constants.IDISK_SIZE] = size
|
|
9534 | 9551 |
else: |
9535 | 9552 |
# modification of disk |
9536 |
if 'size' in disk_dict:
|
|
9553 |
if constants.IDISK_SIZE in disk_dict:
|
|
9537 | 9554 |
raise errors.OpPrereqError("Disk size change not possible, use" |
9538 | 9555 |
" grow-disk", errors.ECODE_INVAL) |
9539 | 9556 |
|
... | ... | |
9570 | 9587 |
raise errors.OpPrereqError(msg, errors.ECODE_INVAL) |
9571 | 9588 |
|
9572 | 9589 |
# nic_dict should be a dict |
9573 |
nic_ip = nic_dict.get('ip', None)
|
|
9590 |
nic_ip = nic_dict.get(constants.INIC_IP, None)
|
|
9574 | 9591 |
if nic_ip is not None: |
9575 | 9592 |
if nic_ip.lower() == constants.VALUE_NONE: |
9576 |
nic_dict['ip'] = None
|
|
9593 |
nic_dict[constants.INIC_IP] = None
|
|
9577 | 9594 |
else: |
9578 | 9595 |
if not netutils.IPAddress.IsValid(nic_ip): |
9579 | 9596 |
raise errors.OpPrereqError("Invalid IP address '%s'" % nic_ip, |
9580 | 9597 |
errors.ECODE_INVAL) |
9581 | 9598 |
|
9582 | 9599 |
nic_bridge = nic_dict.get('bridge', None) |
9583 |
nic_link = nic_dict.get('link', None)
|
|
9600 |
nic_link = nic_dict.get(constants.INIC_LINK, None)
|
|
9584 | 9601 |
if nic_bridge and nic_link: |
9585 | 9602 |
raise errors.OpPrereqError("Cannot pass 'bridge' and 'link'" |
9586 | 9603 |
" at the same time", errors.ECODE_INVAL) |
9587 | 9604 |
elif nic_bridge and nic_bridge.lower() == constants.VALUE_NONE: |
9588 | 9605 |
nic_dict['bridge'] = None |
9589 | 9606 |
elif nic_link and nic_link.lower() == constants.VALUE_NONE: |
9590 |
nic_dict['link'] = None
|
|
9607 |
nic_dict[constants.INIC_LINK] = None
|
|
9591 | 9608 |
|
9592 | 9609 |
if nic_op == constants.DDM_ADD: |
9593 |
nic_mac = nic_dict.get('mac', None)
|
|
9610 |
nic_mac = nic_dict.get(constants.INIC_MAC, None)
|
|
9594 | 9611 |
if nic_mac is None: |
9595 |
nic_dict['mac'] = constants.VALUE_AUTO
|
|
9612 |
nic_dict[constants.INIC_MAC] = constants.VALUE_AUTO
|
|
9596 | 9613 |
|
9597 |
if 'mac' in nic_dict:
|
|
9598 |
nic_mac = nic_dict['mac']
|
|
9614 |
if constants.INIC_MAC in nic_dict:
|
|
9615 |
nic_mac = nic_dict[constants.INIC_MAC]
|
|
9599 | 9616 |
if nic_mac not in (constants.VALUE_AUTO, constants.VALUE_GENERATE): |
9600 | 9617 |
nic_mac = utils.NormalizeAndValidateMac(nic_mac) |
9601 | 9618 |
|
... | ... | |
9641 | 9658 |
this_nic_override = nic_override[idx] |
9642 | 9659 |
else: |
9643 | 9660 |
this_nic_override = {} |
9644 |
if 'ip' in this_nic_override:
|
|
9645 |
ip = this_nic_override['ip']
|
|
9661 |
if constants.INIC_IP in this_nic_override:
|
|
9662 |
ip = this_nic_override[constants.INIC_IP]
|
|
9646 | 9663 |
else: |
9647 | 9664 |
ip = nic.ip |
9648 |
if 'mac' in this_nic_override:
|
|
9649 |
mac = this_nic_override['mac']
|
|
9665 |
if constants.INIC_MAC in this_nic_override:
|
|
9666 |
mac = this_nic_override[constants.INIC_MAC]
|
|
9650 | 9667 |
else: |
9651 | 9668 |
mac = nic.mac |
9652 | 9669 |
if idx in self.nic_pnew: |
... | ... | |
9657 | 9674 |
link = nicparams[constants.NIC_LINK] |
9658 | 9675 |
args['nics'].append((ip, mac, mode, link)) |
9659 | 9676 |
if constants.DDM_ADD in nic_override: |
9660 |
ip = nic_override[constants.DDM_ADD].get('ip', None)
|
|
9661 |
mac = nic_override[constants.DDM_ADD]['mac']
|
|
9677 |
ip = nic_override[constants.DDM_ADD].get(constants.INIC_IP, None)
|
|
9678 |
mac = nic_override[constants.DDM_ADD][constants.INIC_MAC]
|
|
9662 | 9679 |
nicparams = self.nic_pnew[constants.DDM_ADD] |
9663 | 9680 |
mode = nicparams[constants.NIC_MODE] |
9664 | 9681 |
link = nicparams[constants.NIC_LINK] |
... | ... | |
9723 | 9740 |
_CheckNodeNotDrained(self, self.op.remote_node) |
9724 | 9741 |
# FIXME: here we assume that the old instance type is DT_PLAIN |
9725 | 9742 |
assert instance.disk_template == constants.DT_PLAIN |
9726 |
disks = [{"size": d.size, "vg": d.logical_id[0]} |
|
9743 |
disks = [{constants.IDISK_SIZE: d.size, |
|
9744 |
constants.IDISK_VG: d.logical_id[0]} |
|
9727 | 9745 |
for d in instance.disks] |
9728 | 9746 |
required = _ComputeDiskSizePerVG(self.op.disk_template, disks) |
9729 | 9747 |
_CheckNodesFreeDiskPerVG(self, [self.op.remote_node], required) |
... | ... | |
9868 | 9886 |
else: |
9869 | 9887 |
raise errors.OpPrereqError(msg, errors.ECODE_ENVIRON) |
9870 | 9888 |
if new_nic_mode == constants.NIC_MODE_ROUTED: |
9871 |
if 'ip' in nic_dict:
|
|
9872 |
nic_ip = nic_dict['ip']
|
|
9889 |
if constants.INIC_IP in nic_dict:
|
|
9890 |
nic_ip = nic_dict[constants.INIC_IP]
|
|
9873 | 9891 |
else: |
9874 | 9892 |
nic_ip = old_nic_ip |
9875 | 9893 |
if nic_ip is None: |
9876 | 9894 |
raise errors.OpPrereqError('Cannot set the nic ip to None' |
9877 | 9895 |
' on a routed nic', errors.ECODE_INVAL) |
9878 |
if 'mac' in nic_dict:
|
|
9879 |
nic_mac = nic_dict['mac']
|
|
9896 |
if constants.INIC_MAC in nic_dict:
|
|
9897 |
nic_mac = nic_dict[constants.INIC_MAC]
|
|
9880 | 9898 |
if nic_mac is None: |
9881 | 9899 |
raise errors.OpPrereqError('Cannot set the nic mac to None', |
9882 | 9900 |
errors.ECODE_INVAL) |
9883 | 9901 |
elif nic_mac in (constants.VALUE_AUTO, constants.VALUE_GENERATE): |
9884 | 9902 |
# otherwise generate the mac |
9885 |
nic_dict['mac'] = self.cfg.GenerateMAC(self.proc.GetECId()) |
|
9903 |
nic_dict[constants.INIC_MAC] = \ |
|
9904 |
self.cfg.GenerateMAC(self.proc.GetECId()) |
|
9886 | 9905 |
else: |
9887 | 9906 |
# or validate/reserve the current one |
9888 | 9907 |
try: |
... | ... | |
9929 | 9948 |
snode = self.op.remote_node |
9930 | 9949 |
|
9931 | 9950 |
# create a fake disk info for _GenerateDiskTemplate |
9932 |
disk_info = [{"size": d.size, "mode": d.mode} for d in instance.disks] |
|
9951 |
disk_info = [{constants.IDISK_SIZE: d.size, constants.IDISK_MODE: d.mode} |
|
9952 |
for d in instance.disks] |
|
9933 | 9953 |
new_disks = _GenerateDiskTemplate(self, self.op.disk_template, |
9934 | 9954 |
instance.name, pnode, [snode], |
9935 | 9955 |
disk_info, None, None, 0, feedback_fn) |
... | ... | |
10071 | 10091 |
(new_disk.size, new_disk.mode))) |
10072 | 10092 |
else: |
10073 | 10093 |
# change a given disk |
10074 |
instance.disks[disk_op].mode = disk_dict['mode'] |
|
10075 |
result.append(("disk.mode/%d" % disk_op, disk_dict['mode'])) |
|
10094 |
instance.disks[disk_op].mode = disk_dict[constants.IDISK_MODE] |
|
10095 |
result.append(("disk.mode/%d" % disk_op, |
|
10096 |
disk_dict[constants.IDISK_MODE])) |
|
10076 | 10097 |
|
10077 | 10098 |
if self.op.disk_template: |
10078 | 10099 |
r_shut = _ShutdownInstanceDisks(self, instance) |
... | ... | |
10095 | 10116 |
result.append(("nic.%d" % len(instance.nics), "remove")) |
10096 | 10117 |
elif nic_op == constants.DDM_ADD: |
10097 | 10118 |
# mac and bridge should be set, by now |
10098 |
mac = nic_dict['mac']
|
|
10099 |
ip = nic_dict.get('ip', None)
|
|
10119 |
mac = nic_dict[constants.INIC_MAC]
|
|
10120 |
ip = nic_dict.get(constants.INIC_IP, None)
|
|
10100 | 10121 |
nicparams = self.nic_pinst[constants.DDM_ADD] |
10101 | 10122 |
new_nic = objects.NIC(mac=mac, ip=ip, nicparams=nicparams) |
10102 | 10123 |
instance.nics.append(new_nic) |
... | ... | |
10107 | 10128 |
self.nic_pnew[constants.DDM_ADD][constants.NIC_LINK] |
10108 | 10129 |
))) |
10109 | 10130 |
else: |
10110 |
for key in 'mac', 'ip':
|
|
10131 |
for key in (constants.INIC_MAC, constants.INIC_IP):
|
|
10111 | 10132 |
if key in nic_dict: |
10112 | 10133 |
setattr(instance.nics[nic_op], key, nic_dict[key]) |
10113 | 10134 |
if nic_op in self.nic_pinst: |
... | ... | |
11636 | 11657 |
"os": iinfo.os, |
11637 | 11658 |
"nodes": [iinfo.primary_node] + list(iinfo.secondary_nodes), |
11638 | 11659 |
"nics": nic_data, |
11639 |
"disks": [{"size": dsk.size, "mode": dsk.mode} for dsk in iinfo.disks], |
|
11660 |
"disks": [{constants.IDISK_SIZE: dsk.size, |
|
11661 |
constants.IDISK_MODE: dsk.mode} |
|
11662 |
for dsk in iinfo.disks], |
|
11640 | 11663 |
"disk_template": iinfo.disk_template, |
11641 | 11664 |
"hypervisor": iinfo.hypervisor, |
11642 | 11665 |
} |
... | ... | |
11701 | 11724 |
errors.ECODE_STATE) |
11702 | 11725 |
|
11703 | 11726 |
self.required_nodes = 1 |
11704 |
disk_sizes = [{'size': disk.size} for disk in instance.disks]
|
|
11727 |
disk_sizes = [{constants.IDISK_SIZE: disk.size} for disk in instance.disks]
|
|
11705 | 11728 |
disk_space = _ComputeDiskSize(instance.disk_template, disk_sizes) |
11706 | 11729 |
|
11707 | 11730 |
request = { |
Also available in: Unified diff