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)
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'])
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'])
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))