Revision 4e7f986e lib/cmdlib/cluster.py
b/lib/cmdlib/cluster.py | ||
---|---|---|
941 | 941 |
all_instances = self.cfg.GetAllInstancesInfo().values() |
942 | 942 |
violations = set() |
943 | 943 |
for group in self.cfg.GetAllNodeGroupsInfo().values(): |
944 |
instances = frozenset([inst for inst in all_instances |
|
945 |
if compat.any(nuuid in group.members |
|
946 |
for nuuid in inst.all_nodes)]) |
|
944 |
instances = frozenset( |
|
945 |
[inst for inst in all_instances |
|
946 |
if compat.any(nuuid in group.members |
|
947 |
for nuuid in self.cfg.GetInstanceNodes(inst))]) |
|
947 | 948 |
new_ipolicy = objects.FillIPolicy(self.new_ipolicy, group.ipolicy) |
948 | 949 |
ipol = masterd.instance.CalculateGroupIPolicy(cluster, group) |
949 | 950 |
new = ComputeNewInstanceViolations(ipol, new_ipolicy, instances, |
... | ... | |
2006 | 2007 |
|
2007 | 2008 |
for inst in self.my_inst_info.values(): |
2008 | 2009 |
if inst.disk_template in constants.DTS_INT_MIRROR: |
2009 |
for nuuid in inst.all_nodes: |
|
2010 |
inst_nodes = self.cfg.GetInstanceNodes(inst) |
|
2011 |
for nuuid in inst_nodes: |
|
2010 | 2012 |
if self.all_node_info[nuuid].group != self.group_uuid: |
2011 | 2013 |
extra_lv_nodes.add(nuuid) |
2012 | 2014 |
|
... | ... | |
2360 | 2362 |
utils.CommaJoin(secondary_nodes), |
2361 | 2363 |
code=self.ETYPE_WARNING) |
2362 | 2364 |
|
2363 |
es_flags = rpc.GetExclusiveStorageForNodes(self.cfg, instance.all_nodes) |
|
2365 |
inst_nodes = self.cfg.GetInstanceNodes(instance) |
|
2366 |
es_flags = rpc.GetExclusiveStorageForNodes(self.cfg, inst_nodes) |
|
2364 | 2367 |
if any(es_flags.values()): |
2365 | 2368 |
if instance.disk_template not in constants.DTS_EXCL_STORAGE: |
2366 | 2369 |
# Disk template not compatible with exclusive_storage: no instance |
... | ... | |
2381 | 2384 |
" gnt-cluster repair-disk-sizes", idx) |
2382 | 2385 |
|
2383 | 2386 |
if instance.disk_template in constants.DTS_INT_MIRROR: |
2384 |
instance_nodes = utils.NiceSort(instance.all_nodes)
|
|
2387 |
instance_nodes = utils.NiceSort(inst_nodes) |
|
2385 | 2388 |
instance_groups = {} |
2386 | 2389 |
|
2387 | 2390 |
for node_uuid in instance_nodes: |
... | ... | |
2418 | 2421 |
instance.name, "instance has offline secondary node(s) %s", |
2419 | 2422 |
utils.CommaJoin(self.cfg.GetNodeNames(inst_nodes_offline))) |
2420 | 2423 |
# ... or ghost/non-vm_capable nodes |
2421 |
for node_uuid in instance.all_nodes:
|
|
2424 |
for node_uuid in inst_nodes: |
|
2422 | 2425 |
self._ErrorIf(node_image[node_uuid].ghost, constants.CV_EINSTANCEBADNODE, |
2423 | 2426 |
instance.name, "instance lives on ghost node %s", |
2424 | 2427 |
self.cfg.GetNodeName(node_uuid)) |
... | ... | |
3118 | 3121 |
instdisk[inst_uuid] = {} |
3119 | 3122 |
|
3120 | 3123 |
assert compat.all(len(statuses) == len(instanceinfo[inst].disks) and |
3121 |
len(nuuids) <= len(instanceinfo[inst].all_nodes) and |
|
3124 |
len(nuuids) <= len( |
|
3125 |
self.cfg.GetInstanceNodes(instanceinfo[inst])) and |
|
3122 | 3126 |
compat.all(isinstance(s, (tuple, list)) and |
3123 | 3127 |
len(s) == 2 for s in statuses) |
3124 | 3128 |
for inst, nuuids in instdisk.items() |
... | ... | |
3315 | 3319 |
if instance.admin_state == constants.ADMINST_OFFLINE: |
3316 | 3320 |
i_offline += 1 |
3317 | 3321 |
|
3318 |
for nuuid in instance.all_nodes: |
|
3322 |
inst_nodes = self.cfg.GetInstanceNodes(instance) |
|
3323 |
for nuuid in inst_nodes: |
|
3319 | 3324 |
if nuuid not in node_image: |
3320 | 3325 |
gnode = self.NodeImage(uuid=nuuid) |
3321 | 3326 |
gnode.ghost = (nuuid not in self.all_node_info) |
Also available in: Unified diff