
Commit Ie639179c5bbbaca4de62b42b368830afcfd8f7ac introduced 'visibility' and 'protected' params. These params should be used only with v3.1 microversion. Also these changes break current v2 users. This patch fixes these issues. Closes-Bug: #1584056 Change-Id: I0574631791c475bbefdb6e7d1647a20d0759df64
110 lines
4.0 KiB
Python
110 lines
4.0 KiB
Python
# Copyright (c) 2013-2014 OpenStack Foundation
|
|
# 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.
|
|
|
|
from cinderclient.v3.shell import * # flake8: noqa
|
|
from cinderclient import utils
|
|
|
|
utils.retype_method('volumev3', 'volumev2', globals())
|
|
|
|
# Below is shameless hack for unit tests
|
|
# TODO remove after deciding if unit tests are moved to /v3/ dir
|
|
|
|
def _treeizeAvailabilityZone(zone):
|
|
"""Builds a tree view for availability zones."""
|
|
AvailabilityZone = availability_zones.AvailabilityZone
|
|
|
|
az = AvailabilityZone(zone.manager,
|
|
copy.deepcopy(zone._info), zone._loaded)
|
|
result = []
|
|
|
|
# Zone tree view item
|
|
az.zoneName = zone.zoneName
|
|
az.zoneState = ('available'
|
|
if zone.zoneState['available'] else 'not available')
|
|
az._info['zoneName'] = az.zoneName
|
|
az._info['zoneState'] = az.zoneState
|
|
result.append(az)
|
|
|
|
if getattr(zone, "hosts", None) and zone.hosts is not None:
|
|
for (host, services) in zone.hosts.items():
|
|
# Host tree view item
|
|
az = AvailabilityZone(zone.manager,
|
|
copy.deepcopy(zone._info), zone._loaded)
|
|
az.zoneName = '|- %s' % host
|
|
az.zoneState = ''
|
|
az._info['zoneName'] = az.zoneName
|
|
az._info['zoneState'] = az.zoneState
|
|
result.append(az)
|
|
|
|
for (svc, state) in services.items():
|
|
# Service tree view item
|
|
az = AvailabilityZone(zone.manager,
|
|
copy.deepcopy(zone._info), zone._loaded)
|
|
az.zoneName = '| |- %s' % svc
|
|
az.zoneState = '%s %s %s' % (
|
|
'enabled' if state['active'] else 'disabled',
|
|
':-)' if state['available'] else 'XXX',
|
|
state['updated_at'])
|
|
az._info['zoneName'] = az.zoneName
|
|
az._info['zoneState'] = az.zoneState
|
|
result.append(az)
|
|
return result
|
|
|
|
|
|
# TODO(e0ne): remove copy-paste of this function in a next cinderclient release
|
|
def _print_volume_image(image):
|
|
utils.print_dict(image[1]['os-volume_upload_image'])
|
|
|
|
|
|
@utils.arg('volume',
|
|
metavar='<volume>',
|
|
help='Name or ID of volume to snapshot.')
|
|
@utils.arg('--force',
|
|
metavar='<True|False>',
|
|
const=True,
|
|
nargs='?',
|
|
default=False,
|
|
help='Enables or disables upload of '
|
|
'a volume that is attached to an instance. '
|
|
'Default=False.')
|
|
@utils.arg('--container-format',
|
|
metavar='<container-format>',
|
|
default='bare',
|
|
help='Container format type. '
|
|
'Default is bare.')
|
|
@utils.arg('--container_format',
|
|
help=argparse.SUPPRESS)
|
|
@utils.arg('--disk-format',
|
|
metavar='<disk-format>',
|
|
default='raw',
|
|
help='Disk format type. '
|
|
'Default is raw.')
|
|
@utils.arg('--disk_format',
|
|
help=argparse.SUPPRESS)
|
|
@utils.arg('image_name',
|
|
metavar='<image-name>',
|
|
help='The new image name.')
|
|
@utils.arg('--image_name',
|
|
help=argparse.SUPPRESS)
|
|
@utils.service_type('volumev2')
|
|
def do_upload_to_image(cs, args):
|
|
"""Uploads volume to Image Service as an image."""
|
|
volume = utils.find_volume(cs, args.volume)
|
|
_print_volume_image(volume.upload_to_image(args.force,
|
|
args.image_name,
|
|
args.container_format,
|
|
args.disk_format))
|