Retrieve availability zone from aggregate

This make availability zone list based on aggregate metadata.

Partially Implements: bp node-aggregate

Change-Id: I74d705e2b09c08afadbeacee1f0efa5655ffbcd6
This commit is contained in:
Zhenguo Niu 2017-07-20 16:54:56 +08:00
parent 27f3b1832a
commit 9627106519
1 changed files with 6 additions and 1 deletions

View File

@ -384,7 +384,12 @@ class API(object):
def list_availability_zones(self, context):
"""Get availability zone list."""
return {'availability_zones': [CONF.engine.default_availability_zone]}
aggregates = objects.AggregateList.get_by_metadata_key(
context, 'availability_zone')
azs = set([agg.metadata['availability_zone'] for agg in aggregates
if 'availability_zone' in agg.metadata])
azs.add(CONF.engine.default_availability_zone)
return {'availability_zones': list(azs)}
def lock(self, context, server):
"""Lock the given server."""