
fix the N402 errors that have slipped in in the last 48 hrs since starting this patch series. fix an N401 error that our scanner current can't find because it only looks for doc strings on classes and defs. this is the xeno's paradox of patch series, but we're getting close. Change-Id: I4a763bb4c812335d853eae05c72464f18ab93297
63 lines
2.3 KiB
Python
63 lines
2.3 KiB
Python
# Copyright (c) 2012 OpenStack, LLC.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
"""utilities for multiple APIs."""
|
|
|
|
from nova import db
|
|
from nova.openstack.common import cfg
|
|
from nova.openstack.common import jsonutils
|
|
from nova.openstack.common import log as logging
|
|
|
|
availability_zone_opts = [
|
|
cfg.StrOpt('internal_service_availability_zone',
|
|
default='internal',
|
|
help='availability_zone to show internal services under'),
|
|
cfg.StrOpt('default_availability_zone',
|
|
# deprecated in Grizzly release
|
|
deprecated_name='node_availability_zone',
|
|
default='nova',
|
|
help='default compute node availability_zone'),
|
|
]
|
|
|
|
CONF = cfg.CONF
|
|
CONF.register_opts(availability_zone_opts)
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
def set_availability_zones(context, services):
|
|
# Makes sure services isn't a sqlalchemy object
|
|
services = [dict(service.iteritems()) for service in services]
|
|
metadata = db.aggregate_host_get_by_metadata_key(context,
|
|
key='availability_zone')
|
|
for service in services:
|
|
az = CONF.internal_service_availability_zone
|
|
if service['topic'] == "compute":
|
|
if metadata.get(service['host']):
|
|
az = str(metadata[service['host']])[5:-2]
|
|
else:
|
|
az = CONF.default_availability_zone
|
|
service['availability_zone'] = az
|
|
return services
|
|
|
|
|
|
def get_host_availability_zone(context, host):
|
|
metadata = db.aggregate_metadata_get_by_host(
|
|
context.get_admin_context(), host, key='availability_zone')
|
|
if 'availability_zone' in metadata:
|
|
return list(metadata['availability_zone'])[0]
|
|
else:
|
|
return CONF.default_availability_zone
|