Updated service; added excluding the overloaded host execute_overload
This commit is contained in:
parent
239c36c868
commit
b1624abb9a
@ -234,6 +234,7 @@ def service():
|
||||
execute_overload(
|
||||
state['config'],
|
||||
state['state'],
|
||||
params['host'],
|
||||
params['vm_uuids'])
|
||||
except:
|
||||
log.exception('Exception during request processing:')
|
||||
@ -337,16 +338,16 @@ def execute_underload(config, state, host):
|
||||
del hosts_cpu_total[host]
|
||||
del hosts_ram_total[host]
|
||||
|
||||
if log.isEnabledFor(logging.DEBUG):
|
||||
log.debug('Host CPU usage: %s', str(hosts_last_cpu))
|
||||
log.debug('Host total CPU usage: %s', str(hosts_cpu_usage))
|
||||
|
||||
# Exclude the underloaded host
|
||||
del hosts_cpu_usage[underloaded_host]
|
||||
del hosts_cpu_total[underloaded_host]
|
||||
del hosts_ram_usage[underloaded_host]
|
||||
del hosts_ram_total[underloaded_host]
|
||||
|
||||
if log.isEnabledFor(logging.DEBUG):
|
||||
log.debug('Host CPU usage: %s', str(hosts_last_cpu))
|
||||
log.debug('Host total CPU usage: %s', str(hosts_cpu_usage))
|
||||
|
||||
vms_to_migrate = vms_by_host(state['nova'], underloaded_host)
|
||||
vms_cpu = {}
|
||||
for vm in vms_to_migrate:
|
||||
@ -422,7 +423,7 @@ def execute_underload(config, state, host):
|
||||
|
||||
|
||||
@contract
|
||||
def execute_overload(config, state, vm_uuids):
|
||||
def execute_overload(config, state, host, vm_uuids):
|
||||
""" Process an overloaded host: migrate the selected VMs from it.
|
||||
|
||||
1. Prepare the data about the current states of the hosts and VMs.
|
||||
@ -441,6 +442,9 @@ def execute_overload(config, state, vm_uuids):
|
||||
:param state: A state dictionary.
|
||||
:type state: dict(str: *)
|
||||
|
||||
:param host: A host name.
|
||||
:type host: str
|
||||
|
||||
:param vm_uuids: A list of VM UUIDs to migrate from the host.
|
||||
:type vm_uuids: list(str)
|
||||
|
||||
@ -448,6 +452,7 @@ def execute_overload(config, state, vm_uuids):
|
||||
:rtype: dict(str: *)
|
||||
"""
|
||||
log.info('Started processing an overload request')
|
||||
overloaded_host = host
|
||||
hosts_cpu_total, _, hosts_ram_total = state['db'].select_host_characteristics()
|
||||
hosts_to_vms = vms_by_hosts(state['nova'], state['compute_hosts'])
|
||||
vms_last_cpu = state['db'].select_last_cpu_mhz_for_vms()
|
||||
@ -487,6 +492,12 @@ def execute_overload(config, state, vm_uuids):
|
||||
del hosts_cpu_total[host]
|
||||
del hosts_ram_total[host]
|
||||
|
||||
# Exclude the overloaded host
|
||||
del hosts_cpu_usage[overloaded_host]
|
||||
del hosts_cpu_total[overloaded_host]
|
||||
del hosts_ram_usage[overloaded_host]
|
||||
del hosts_ram_total[overloaded_host]
|
||||
|
||||
if log.isEnabledFor(logging.DEBUG):
|
||||
log.debug('Host CPU usage: %s', str(hosts_last_cpu))
|
||||
log.debug('Host total CPU usage: %s', str(hosts_cpu_usage))
|
||||
|
@ -230,13 +230,14 @@ class GlobalManager(TestCase):
|
||||
|
||||
with MockTransaction:
|
||||
params = {'reason': 1,
|
||||
'host': 'host',
|
||||
'vm_uuids': 'vm_uuids'}
|
||||
expect(manager).get_params(Any).and_return(params).once()
|
||||
expect(manager).get_remote_addr(Any).and_return('addr').once()
|
||||
expect(bottle).app().and_return(app).once()
|
||||
expect(manager).validate_params('user', 'password', params). \
|
||||
and_return(True).once()
|
||||
expect(manager).execute_overload(config, state, 'vm_uuids'). \
|
||||
expect(manager).execute_overload(config, state, 'host', 'vm_uuids'). \
|
||||
once()
|
||||
manager.service()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user