X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/e7d81ba0ce094edc12fb472a7ab95cabe9d1c32c..ac061be9ee8e66e0e93e86b607f19593bca8ee4a:/lib/config.py diff --git a/lib/config.py b/lib/config.py index 46574df..2e3a4f2 100644 --- a/lib/config.py +++ b/lib/config.py @@ -243,14 +243,16 @@ class ConfigWriter: """ result = [] - if disk.logical_id in l_ids: - result.append("duplicate logical id %s" % str(disk.logical_id)) - else: - l_ids.append(disk.logical_id) - if disk.physical_id in p_ids: - result.append("duplicate physical id %s" % str(disk.physical_id)) - else: - p_ids.append(disk.physical_id) + if disk.logical_id is not None: + if disk.logical_id in l_ids: + result.append("duplicate logical id %s" % str(disk.logical_id)) + else: + l_ids.append(disk.logical_id) + if disk.physical_id is not None: + if disk.physical_id in p_ids: + result.append("duplicate physical id %s" % str(disk.physical_id)) + else: + p_ids.append(disk.physical_id) if disk.children: for child in disk.children: @@ -685,6 +687,12 @@ class ConfigWriter: all_lvs = instance.MapLVsByNode() logging.info("Instance '%s' DISK_LAYOUT: %s", instance.name, all_lvs) + all_macs = self._AllMACs() + for nic in instance.nics: + if nic.mac in all_macs: + raise errors.ConfigurationError("Cannot add instance %s:" + " MAC address '%s' already in use." % (instance.name, nic.mac)) + instance.serial_no = 1 self._config_data.instances[instance.name] = instance self._config_data.cluster.serial_no += 1 @@ -819,7 +827,7 @@ class ConfigWriter: """Get the configuration of all instances. @rtype: dict - @returns: dict of (instance, instance_info), where instance_info is what + @return: dict of (instance, instance_info), where instance_info is what would GetInstanceInfo return for the node """ @@ -1058,10 +1066,12 @@ class ConfigWriter: result = rpc.RpcRunner.call_upload_file(node_list, self._cfg_file, address_list=addr_list) - for node in node_list: - if not result[node]: - logging.error("copy of file %s to node %s failed", - self._cfg_file, node) + for to_node, to_result in result.items(): + msg = to_result.RemoteFailMsg() + if msg: + msg = ("Copy of file %s to node %s failed: %s" % + (self._cfg_file, node, msg)) + logging.error(msg) bad = True return not bad @@ -1120,8 +1130,10 @@ class ConfigWriter: node_data = fn(node_names) cluster = self._config_data.cluster + cluster_tags = fn(cluster.GetTags()) return { constants.SS_CLUSTER_NAME: cluster.cluster_name, + constants.SS_CLUSTER_TAGS: cluster_tags, constants.SS_FILE_STORAGE_DIR: cluster.file_storage_dir, constants.SS_MASTER_CANDIDATES: mc_data, constants.SS_MASTER_IP: cluster.master_ip,