diff --git a/nova/scheduler/host_manager.py b/nova/scheduler/host_manager.py index 43d7db9e6104..3ef1547f48b0 100644 --- a/nova/scheduler/host_manager.py +++ b/nova/scheduler/host_manager.py @@ -183,16 +183,16 @@ class HostState(object): all_ram_mb = compute['memory_mb'] # Assume virtual size is all consumed by instances if use qcow2 disk. - free_gb = compute.get('free_disk_gb') + free_gb = compute['free_disk_gb'] least_gb = compute.get('disk_available_least') - if least_gb > free_gb and free_gb: - # can occur when an instance in database is not on host - LOG.warn(_("Host has more disk space than database expected" - " (%(physical)sgb > %(database)sgb)") % - {'physical': least_gb, 'database': free_gb}) - free_disk_mb = min(val for val in [least_gb, - free_gb] if val is not None) - free_disk_mb *= 1024 + if least_gb is not None: + if least_gb > free_gb: + # can occur when an instance in database is not on host + LOG.warn(_("Host has more disk space than database expected" + " (%(physical)sgb > %(database)sgb)") % + {'physical': least_gb, 'database': free_gb}) + free_gb = min(least_gb, free_gb) + free_disk_mb = free_gb * 1024 self.disk_mb_used = compute['local_gb_used'] * 1024 diff --git a/nova/tests/scheduler/fakes.py b/nova/tests/scheduler/fakes.py index 6cb91a9f55f4..ee89e1d7d3d8 100644 --- a/nova/tests/scheduler/fakes.py +++ b/nova/tests/scheduler/fakes.py @@ -34,7 +34,7 @@ COMPUTE_NODES = [ hypervisor_version=0), dict(id=2, local_gb=2048, memory_mb=2048, vcpus=2, disk_available_least=1024, free_ram_mb=1024, vcpus_used=2, - free_disk_gb=None, local_gb_used=0, updated_at=None, + free_disk_gb=1024, local_gb_used=0, updated_at=None, service=dict(host='host2', disabled=True), hypervisor_hostname='node2', host_ip='127.0.0.1', hypervisor_version=0), @@ -57,7 +57,7 @@ COMPUTE_NODES = [ COMPUTE_NODES_METRICS = [ dict(id=1, local_gb=1024, memory_mb=1024, vcpus=1, disk_available_least=512, free_ram_mb=512, vcpus_used=1, - free_disk_mb=512, local_gb_used=0, updated_at=None, + free_disk_gb=512, local_gb_used=0, updated_at=None, service=dict(host='host1', disabled=False), hypervisor_hostname='node1', host_ip='127.0.0.1', hypervisor_version=0, @@ -74,7 +74,7 @@ COMPUTE_NODES_METRICS = [ ])), dict(id=2, local_gb=2048, memory_mb=2048, vcpus=2, disk_available_least=1024, free_ram_mb=1024, vcpus_used=2, - free_disk_mb=1024, local_gb_used=0, updated_at=None, + free_disk_gb=1024, local_gb_used=0, updated_at=None, service=dict(host='host2', disabled=True), hypervisor_hostname='node2', host_ip='127.0.0.1', hypervisor_version=0, @@ -91,7 +91,7 @@ COMPUTE_NODES_METRICS = [ ])), dict(id=3, local_gb=4096, memory_mb=4096, vcpus=4, disk_available_least=3072, free_ram_mb=3072, vcpus_used=1, - free_disk_mb=3072, local_gb_used=0, updated_at=None, + free_disk_gb=3072, local_gb_used=0, updated_at=None, service=dict(host='host3', disabled=False), hypervisor_hostname='node3', host_ip='127.0.0.1', hypervisor_version=0, @@ -108,7 +108,7 @@ COMPUTE_NODES_METRICS = [ ])), dict(id=4, local_gb=8192, memory_mb=8192, vcpus=8, disk_available_least=8192, free_ram_mb=8192, vcpus_used=0, - free_disk_mb=8192, local_gb_used=0, updated_at=None, + free_disk_gb=8192, local_gb_used=0, updated_at=None, service=dict(host='host4', disabled=False), hypervisor_hostname='node4', host_ip='127.0.0.1', hypervisor_version=0,