/usr/lib/python2.6/site-packages/openstackclient/compute/v2
NameSizeModeActions
agent.py48880644editdlrm
agent.pyc57320644editdlrm
aggregate.py94390644editdlrm
aggregate.pyc100210644editdlrm
availability_zone.py34320644editdlrm
availability_zone.pyc36300644editdlrm
console.py37460644editdlrm
console.pyc36900644editdlrm
fixedip.py25930644editdlrm
fixedip.pyc28550644editdlrm
flavor.py98270644editdlrm
flavor.pyc99440644editdlrm
floatingip.py45770644editdlrm
floatingip.pyc60360644editdlrm
floatingippool.py12580644editdlrm
floatingippool.pyc14740644editdlrm
host.py23810644editdlrm
host.pyc31290644editdlrm
hypervisor.py42880644editdlrm
hypervisor.pyc39990644editdlrm
hypervisor_stats.py11060644editdlrm
hypervisor_stats.pyc12170644editdlrm
keypair.py48790644editdlrm
keypair.pyc54660644editdlrm
security_group.py117220644editdlrm
security_group.pyc130480644editdlrm
server.py512940644editdlrm
server.pyc456130644editdlrm
service.py32640644editdlrm
service.pyc37010644editdlrm
usage.py66480644editdlrm
usage.pyc70300644editdlrm
__init__.py00644editdlrm
__init__.pyc1700644editdlrm
Edit: /usr/lib/python2.6/site-packages/openstackclient/compute/v2/availability_zone.py (3432B)
# 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. # """Compute v2 Availability Zone action implementations""" import copy import logging from cliff import lister from novaclient import exceptions as nova_exceptions import six from openstackclient.common import utils from openstackclient.i18n import _ # noqa def _xform_availability_zone(az, include_extra): result = [] zone_info = {} if hasattr(az, 'zoneState'): zone_info['zone_status'] = ('available' if az.zoneState['available'] else 'not available') if hasattr(az, 'zoneName'): zone_info['zone_name'] = az.zoneName if not include_extra: result.append(zone_info) return result if hasattr(az, 'hosts') and az.hosts: for host, services in six.iteritems(az.hosts): host_info = copy.deepcopy(zone_info) host_info['host_name'] = host for svc, state in six.iteritems(services): info = copy.deepcopy(host_info) info['service_name'] = svc info['service_status'] = '%s %s %s' % ( 'enabled' if state['active'] else 'disabled', ':-)' if state['available'] else 'XXX', state['updated_at']) result.append(info) else: zone_info['host_name'] = '' zone_info['service_name'] = '' zone_info['service_status'] = '' result.append(zone_info) return result class ListAvailabilityZone(lister.Lister): """List availability zones and their status""" log = logging.getLogger(__name__ + '.ListAvailabilityZone') def get_parser(self, prog_name): parser = super(ListAvailabilityZone, self).get_parser(prog_name) parser.add_argument( '--long', action='store_true', default=False, help=_('List additional fields in output'), ) return parser @utils.log_method(log) def take_action(self, parsed_args): if parsed_args.long: columns = ('Zone Name', 'Zone Status', 'Host Name', 'Service Name', 'Service Status') else: columns = ('Zone Name', 'Zone Status') compute_client = self.app.client_manager.compute try: data = compute_client.availability_zones.list() except nova_exceptions.Forbidden as e: # policy doesn't allow try: data = compute_client.availability_zones.list(detailed=False) except Exception: raise e # Argh, the availability zones are not iterable... result = [] for zone in data: result += _xform_availability_zone(zone, parsed_args.long) return (columns, (utils.get_dict_properties( s, columns ) for s in result))