示例#1
0
    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)))
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
    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)))
示例#5
0
    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()))
示例#6
0
    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)))