def take_action(self, parsed_args): volume_client = self.app.client_manager.volume volume = utils.find_resource(volume_client.volumes, parsed_args.volume) # Map 'metadata' column to 'properties' volume._info.update( { 'properties': format_columns.DictColumn(volume._info.pop('metadata')), 'type': volume._info.pop('volume_type'), }, ) if 'os-vol-tenant-attr:tenant_id' in volume._info: volume._info.update( {'project_id': volume._info.pop( 'os-vol-tenant-attr:tenant_id')} ) # Replace "display_name" by "name", keep consistent in v1 and v2 if 'display_name' in volume._info: volume._info.update({'name': volume._info.pop('display_name')}) volume_info = utils.backward_compat_col_showone( volume._info, parsed_args.columns, {'display_name': 'name'} ) return zip(*sorted(six.iteritems(volume_info)))
def test_backward_compat_col_showone_no_specify_column(self): fake_object = {'id': 'fake-id', 'name': 'fake-name', 'size': 'fake-size'} columns = [] column_map = {'display_name': 'name'} results = utils.backward_compat_col_showone(fake_object, columns, column_map) self.assertIsInstance(results, dict) self.assertNotIn('display_name', results) self.assertIn('id', results) self.assertIn('name', results) self.assertIn('size', results)
def take_action(self, parsed_args): volume_client = self.app.client_manager.volume volume = utils.find_resource(volume_client.volumes, parsed_args.volume) # Map 'metadata' column to 'properties' volume._info.update( { 'properties': utils.format_dict(volume._info.pop('metadata')), 'type': volume._info.pop('volume_type'), }, ) if 'os-vol-tenant-attr:tenant_id' in volume._info: volume._info.update( {'project_id': volume._info.pop( 'os-vol-tenant-attr:tenant_id')} ) # Replace "display_name" by "name", keep consistent in v1 and v2 if 'display_name' in volume._info: volume._info.update({'name': volume._info.pop('display_name')}) volume_info = utils.backward_compat_col_showone( volume._info, parsed_args.columns, {'display_name': 'name'} ) return zip(*sorted(six.iteritems(volume_info)))
def take_action(self, parsed_args): _check_size_arg(parsed_args) identity_client = self.app.client_manager.identity image_client = self.app.client_manager.image volume_client = self.app.client_manager.volume source_volume = None if parsed_args.source: source_volume = utils.find_resource( volume_client.volumes, parsed_args.source, ).id project = None if parsed_args.project: project = utils.find_resource( identity_client.tenants, parsed_args.project, ).id user = None if parsed_args.user: user = utils.find_resource( identity_client.users, parsed_args.user, ).id image = None if parsed_args.image: image = utils.find_resource( image_client.images, parsed_args.image, ).id snapshot = parsed_args.snapshot or parsed_args.snapshot_id volume = volume_client.volumes.create( parsed_args.size, snapshot, source_volume, parsed_args.name, parsed_args.description, parsed_args.type, user, project, parsed_args.availability_zone, parsed_args.property, image, ) if parsed_args.bootable or parsed_args.non_bootable: try: volume_client.volumes.set_bootable(volume.id, parsed_args.bootable) except Exception as e: LOG.error(_("Failed to set volume bootable property: %s"), e) if parsed_args.read_only or parsed_args.read_write: try: volume_client.volumes.update_readonly_flag( volume.id, parsed_args.read_only) except Exception as e: LOG.error( _("Failed to set volume read-only access " "mode flag: %s"), e) # Map 'metadata' column to 'properties' volume._info.update( { 'properties': format_columns.DictColumn(volume._info.pop('metadata')), 'type': volume._info.pop('volume_type'), }, ) # Replace "display_name" by "name", keep consistent in v1 and v2 if 'display_name' in volume._info: volume._info.update({'name': volume._info.pop('display_name')}) volume_info = utils.backward_compat_col_showone( volume._info, parsed_args.columns, {'display_name': 'name'}) return zip(*sorted(volume_info.items()))
def take_action(self, parsed_args): _check_size_arg(parsed_args) identity_client = self.app.client_manager.identity image_client = self.app.client_manager.image volume_client = self.app.client_manager.volume source_volume = None if parsed_args.source: source_volume = utils.find_resource( volume_client.volumes, parsed_args.source, ).id project = None if parsed_args.project: project = utils.find_resource( identity_client.tenants, parsed_args.project, ).id user = None if parsed_args.user: user = utils.find_resource( identity_client.users, parsed_args.user, ).id image = None if parsed_args.image: image = utils.find_resource( image_client.images, parsed_args.image, ).id snapshot = parsed_args.snapshot or parsed_args.snapshot_id volume = volume_client.volumes.create( parsed_args.size, snapshot, source_volume, parsed_args.name, parsed_args.description, parsed_args.type, user, project, parsed_args.availability_zone, parsed_args.property, image, ) if parsed_args.bootable or parsed_args.non_bootable: try: volume_client.volumes.set_bootable( volume.id, parsed_args.bootable) except Exception as e: LOG.error(_("Failed to set volume bootable property: %s"), e) if parsed_args.read_only or parsed_args.read_write: try: volume_client.volumes.update_readonly_flag( volume.id, parsed_args.read_only) except Exception as e: LOG.error(_("Failed to set volume read-only access " "mode flag: %s"), e) # Map 'metadata' column to 'properties' volume._info.update( { 'properties': utils.format_dict(volume._info.pop('metadata')), 'type': volume._info.pop('volume_type'), }, ) # Replace "display_name" by "name", keep consistent in v1 and v2 if 'display_name' in volume._info: volume._info.update({'name': volume._info.pop('display_name')}) volume_info = utils.backward_compat_col_showone( volume._info, parsed_args.columns, {'display_name': 'name'} ) return zip(*sorted(six.iteritems(volume_info)))