diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-01-09 04:09:00 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-01-09 04:09:00 +0000 |
| commit | dcd4327bd05a637bc49166920ccecf33e7ea4d5a (patch) | |
| tree | 71be533ee37fa28a35d4d408444a34e6d8c9bd28 /nova/api | |
| parent | beee8b112a92475d0e0cf575f5bcebefe3bc6188 (diff) | |
| parent | 9f4534ab584faeee1e24d4c1bb38a2b194f24626 (diff) | |
| download | nova-dcd4327bd05a637bc49166920ccecf33e7ea4d5a.tar.gz nova-dcd4327bd05a637bc49166920ccecf33e7ea4d5a.tar.xz nova-dcd4327bd05a637bc49166920ccecf33e7ea4d5a.zip | |
Merge "Enable Aggregate based availability zones"
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/ec2/cloud.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index a764a99bf..eb8139ad0 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -257,12 +257,18 @@ class CloudController(object): if not zone in available_zones: available_zones.append(zone) + # aggregate based availability_zones + metadata = db.aggregate_host_get_by_metadata_key(context, + key='availability_zone') + for zone_set in metadata.values(): + for zone in zone_set: + if zone not in available_zones: + available_zones.append(zone) not_available_zones = [] for zone in [service.availability_zone for service in disabled_services if not service['availability_zone'] in available_zones]: if not zone in not_available_zones: not_available_zones.append(zone) - return (available_zones, not_available_zones) def _describe_availability_zones(self, context, **kwargs): @@ -294,6 +300,15 @@ class CloudController(object): host_services.setdefault(service['host'], []) host_services[service['host']].append(service) + # aggregate based available_zones + metadata = db.aggregate_host_get_by_metadata_key(context, + key='availability_zone') + # metdata: {machine: set( az1, az2 )} + for host, zones in metadata.items(): + for zone in zones: + zone_hosts.setdefault(zone, []) + if host not in zone_hosts[zone]: + zone_hosts[zone].append(host) result = [] for zone in available_zones: |
