예제 #1
0
 def test_value(self):
     kva = argument.KeyValueArgument(parsed_name='--keyval')
     self.assertEqual(kva.value, {})
     for kvpairs in ('strval', 'key=val', 2.8, 42, None, ('key', 'val'),
                     ('key val'), ['=val', 'key=val'],
                     ['key1=val1', 'key2 val2'], ('key1 = val1', )):
         try:
             kva.value = kvpairs
         except Exception as e:
             self.assertTrue(isinstance(e, errors.CLIError))
     old = dict()
     kva = argument.KeyValueArgument(parsed_name='--keyval')
     for kvpairs, exp in ((('key=val', ), {
             'key': 'val'
     }), (['key1=val1', 'key2=val2'], {
             'key1': 'val1',
             'key2': 'val2'
     }), (('k1=v1 v2', 'k3=', 'k 4=v4'), {
             'k1': 'v1 v2',
             'k3': '',
             'k 4': 'v4'
     }), (('k=v1', 'k=v2', 'k=v3'), {
             'k': 'v3'
     })):
         kva.value = kvpairs
         old.update(exp)
         assert_dicts_are_equal(self, kva.value, old)
예제 #2
0
class volume_create(_BlockStorageInit, OptionalOutput, _VolumeWait):
    """Create a new volume"""

    arguments = dict(
        size=argument.IntArgument('Volume size in GB', '--size'),
        server_id=argument.ValueArgument('The server to attach the volume to',
                                         '--server-id'),
        name=argument.ValueArgument('Display name', '--name'),
        description=argument.ValueArgument('Volume description',
                                           '--description'),
        snapshot_id=argument.ValueArgument(
            'Associate a snapshot to the new volume', '--snapshot-id'),
        image_id=argument.ValueArgument('Associate an image to the new volume',
                                        '--image-id'),
        volume_type=argument.ValueArgument(
            'default: if combined with --server-id, the default is '
            'automatically configured to match the server, otherwise it is '
            'ext_archipelago', '--volume-type'),
        metadata=argument.KeyValueArgument(
            'Metadata of key=value form (can be repeated)', '--metadata'),
        project_id=argument.ValueArgument('Assign volume to a project',
                                          '--project-id'),
        wait=argument.FlagArgument(
            'Wait volume to be created and ready for use', ('-w', '--wait')),
    )
    required = ('size', 'name')

    @errors.Generic.all
    def _run(self, size, name):
        # Figure out volume type
        volume_type = self['volume_type']
        if not (self['server_id'] or volume_type):
            for vtype in self.client.list_volume_types():
                if vtype['name'] in ('ext_archipelago'):
                    volume_type = vtype['id']
                    break

        r = self.client.create_volume(size,
                                      name,
                                      server_id=self['server_id'],
                                      display_description=self['description'],
                                      snapshot_id=self['snapshot_id'],
                                      imageRef=self['image_id'],
                                      volume_type=volume_type,
                                      metadata=self['metadata'],
                                      project=self['project_id'])
        self.print_dict(r)
        r = self.client.get_volume_details(r['id'])
        if self['wait'] and r['status'] != 'in_use':
            self.wait_while(r['id'], r['status'])
            r = self.client.get_volume_details(r['id'])
            if r['status'] != 'in_use':
                exit(1)

    def main(self):
        super(self.__class__, self)._run()
        self._run(size=self['size'], name=self['name'])
예제 #3
0
class volume_create(_BlockStorageInit, OptionalOutput):
    """Create a new volume"""

    arguments = dict(
        size=argument.IntArgument('Volume size in GB', '--size'),
        server_id=argument.ValueArgument('The server for the new volume',
                                         '--server-id'),
        name=argument.ValueArgument('Display name', '--name'),
        # src_volume_id=argument.ValueArgument(
        #     'Associate another volume to the new volume',
        #     '--source-volume-id'),
        description=argument.ValueArgument('Volume description',
                                           '--description'),
        snapshot_id=argument.ValueArgument(
            'Associate a snapshot to the new volume', '--snapshot-id'),
        image_id=argument.ValueArgument('Associate an image to the new volume',
                                        '--image-id'),
        volume_type=argument.ValueArgument('Volume type', '--volume-type'),
        metadata=argument.KeyValueArgument(
            'Metadata of key=value form (can be repeated)', '--metadata'),
        project_id=argument.ValueArgument('Assign volume to a project',
                                          '--project-id'),
    )
    required = ('size', 'server_id', 'name')

    @errors.Generic.all
    def _run(self, size, server_id, name):
        self.print_(
            self.client.create_volume(
                size,
                server_id,
                name,
                # source_volid=self['src_volume_id'],
                display_description=self['description'],
                snapshot_id=self['snapshot_id'],
                imageRef=self['image_id'],
                volume_type=self['volume_type'],
                metadata=self['metadata'],
                project=self['project_id']),
            self.print_dict)

    def main(self):
        super(self.__class__, self)._run()
        self._run(size=self['size'],
                  server_id=self['server_id'],
                  name=self['name'])
예제 #4
0
 def test___init__(self, init):
     help, pname, default = 'help', 'pname', 'default'
     kva = argument.KeyValueArgument(help, pname, default)
     self.assertTrue(isinstance(kva, argument.KeyValueArgument))
     self.assertEqual(init.mock_calls[-1], call(-1, help, pname, default))