Show which aggregate a hypervisor is member of

This adds support for showing which host aggregates
a hypervisor is member of, if any.
It supports hypervisors with or without nova cells.

Closes-bug: #1470875
Change-Id: I0cfe4f15fa8f8ba0be3295b79cd438998893114c
This commit is contained in:
David Moreau Simard 2015-06-30 14:36:51 -04:00
parent d80deaba41
commit 3bfaf79732

View File

@ -77,6 +77,29 @@ class ShowHypervisor(show.ShowOne):
hypervisor = utils.find_resource(compute_client.hypervisors,
parsed_args.hypervisor)._info.copy()
aggregates = compute_client.aggregates.list()
hypervisor["aggregates"] = list()
if aggregates:
# Hypervisors in nova cells are prefixed by "<cell>@"
if "@" in hypervisor['service']['host']:
cell, service_host = hypervisor['service']['host'].split('@',
1)
else:
cell = None
service_host = hypervisor['service']['host']
if cell:
# The host aggregates are also prefixed by "<cell>@"
member_of = [aggregate.name
for aggregate in aggregates
if cell in aggregate.name and
service_host in aggregate.hosts]
else:
member_of = [aggregate.name
for aggregate in aggregates
if service_host in aggregate.hosts]
hypervisor["aggregates"] = member_of
uptime = compute_client.hypervisors.uptime(hypervisor['id'])._info
# Extract data from uptime value
# format: 0 up 0, 0 users, load average: 0, 0, 0