Revision 5a13489b lib/cmdlib/common.py
b/lib/cmdlib/common.py | ||
---|---|---|
544 | 544 |
@see: L{ComputeIPolicySpecViolation} |
545 | 545 |
|
546 | 546 |
""" |
547 |
ret = [] |
|
547 | 548 |
be_full = cfg.GetClusterInfo().FillBE(instance) |
548 | 549 |
mem_size = be_full[constants.BE_MAXMEM] |
549 | 550 |
cpu_count = be_full[constants.BE_VCPUS] |
550 |
spindle_use = be_full[constants.BE_SPINDLE_USE] |
|
551 |
es_flags = rpc.GetExclusiveStorageForNodeNames(cfg, instance.all_nodes) |
|
552 |
if any(es_flags.values()): |
|
553 |
# With exclusive storage use the actual spindles |
|
554 |
try: |
|
555 |
spindle_use = sum([disk.spindles for disk in instance.disks]) |
|
556 |
except TypeError: |
|
557 |
ret.append("Number of spindles not configured for disks of instance %s" |
|
558 |
" while exclusive storage is enabled, try running gnt-cluster" |
|
559 |
" repair-disk-sizes" % instance.name) |
|
560 |
# _ComputeMinMaxSpec ignores 'None's |
|
561 |
spindle_use = None |
|
562 |
else: |
|
563 |
spindle_use = be_full[constants.BE_SPINDLE_USE] |
|
551 | 564 |
disk_count = len(instance.disks) |
552 | 565 |
disk_sizes = [disk.size for disk in instance.disks] |
553 | 566 |
nic_count = len(instance.nics) |
554 | 567 |
disk_template = instance.disk_template |
555 | 568 |
|
556 |
return _compute_fn(ipolicy, mem_size, cpu_count, disk_count, nic_count, |
|
557 |
disk_sizes, spindle_use, disk_template) |
|
569 |
return ret + _compute_fn(ipolicy, mem_size, cpu_count, disk_count, nic_count,
|
|
570 |
disk_sizes, spindle_use, disk_template)
|
|
558 | 571 |
|
559 | 572 |
|
560 | 573 |
def _ComputeViolatingInstances(ipolicy, instances, cfg): |
Also available in: Unified diff