configuration-* cli allow name of configuration group entered

This will allow a user to specify the configuration group name or the
id to use for all the cli commands related to configuration groups.

Change-Id: I6909b9d8305a42de3d7fbe6c7b7539d7068cc497
Closes-Bug: #1505529
This commit is contained in:
Craig Vyvial 2015-10-13 02:01:26 -05:00 committed by amrith
parent ce9aee2481
commit c19a63f032
5 changed files with 43 additions and 26 deletions

@ -0,0 +1,6 @@
---
fixes:
- configuration-* cli commands now allow name of configuration group
entered instead of just the configuration id. This will allow a user
to specify the configuration group name or the id to use for all
the cli commands related to configuration groups. Bug 1505529

@ -91,7 +91,7 @@ class ConfigurationsTest(testtools.TestCase):
self.configurations.api.client.delete = self._get_mock_method()
self._resp.status_code = 200
self.configurations.delete(27)
self.assertEqual('/configurations/27', self._url)
self.assertEqual('/configurations/configuration1', self._url)
self._resp.status_code = 500
self.assertRaises(Exception, self.configurations.delete, 34)
@ -122,7 +122,7 @@ class ConfigurationsTest(testtools.TestCase):
self._resp.status_code = 200
config = '{"test":12}'
self.configurations.update(27, config)
self.assertEqual('/configurations/27', self._url)
self.assertEqual('/configurations/configuration1', self._url)
self._resp.status_code = 500
self.assertRaises(Exception, self.configurations.update, 34)
@ -131,7 +131,7 @@ class ConfigurationsTest(testtools.TestCase):
self._resp.status_code = 200
config = '{"test":12}'
self.configurations.edit(27, config)
self.assertEqual('/configurations/27', self._url)
self.assertEqual('/configurations/configuration1', self._url)
self._resp.status_code = 500
self.assertRaises(Exception, self.configurations.edit, 34)

@ -74,7 +74,7 @@ class Configurations(base.ManagerWithFind):
body['configuration']['description'] = description
return self._create("/configurations", body, "configuration")
def update(self, configuration_id, values, name=None, description=None):
def update(self, configuration, values, name=None, description=None):
"""Update an existing configuration."""
body = {
"configuration": {
@ -85,27 +85,27 @@ class Configurations(base.ManagerWithFind):
body['configuration']['name'] = name
if description:
body['configuration']['description'] = description
url = "/configurations/%s" % configuration_id
url = "/configurations/%s" % base.getid(configuration)
resp, body = self.api.client.put(url, body=body)
common.check_for_exceptions(resp, body, url)
def edit(self, configuration_id, values):
def edit(self, configuration, values):
"""Update an existing configuration."""
body = {
"configuration": {
"values": json.loads(values)
}
}
url = "/configurations/%s" % configuration_id
url = "/configurations/%s" % base.getid(configuration)
resp, body = self.api.client.patch(url, body=body)
common.check_for_exceptions(resp, body, url)
def delete(self, configuration_id):
def delete(self, configuration):
"""Delete the specified configuration.
:param configuration_id: The configuration id to delete
:param configuration: The configuration id to delete
"""
url = "/configurations/%s" % configuration_id
url = "/configurations/%s" % base.getid(configuration)
resp, body = self.api.client.delete(url)
common.check_for_exceptions(resp, body, url)

@ -116,7 +116,7 @@ class Instances(base.ManagerWithFind):
if nics:
body["instance"]["nics"] = nics
if configuration:
body["instance"]["configuration"] = configuration
body["instance"]["configuration"] = base.getid(configuration)
if replica_of or slave_of:
if slave_of:
warnings.warn(_LW("The 'slave_of' argument is deprecated in "
@ -138,7 +138,7 @@ class Instances(base.ManagerWithFind):
}
}
if configuration is not None:
body["instance"]["configuration"] = configuration
body["instance"]["configuration"] = base.getid(configuration)
url = "/instances/%s" % base.getid(instance)
resp, body = self.api.client.put(url, body=body)
common.check_for_exceptions(resp, body, url)
@ -155,7 +155,7 @@ class Instances(base.ManagerWithFind):
if remove_configuration:
body["instance"]["configuration"] = None
if configuration is not None:
body["instance"]["configuration"] = configuration
body["instance"]["configuration"] = base.getid(configuration)
if name is not None:
body["instance"]["name"] = name
if detach_replica_source:

@ -156,6 +156,11 @@ def _find_datastore_version(cs, datastore_version):
return utils.find_resource(cs.datastores, datastore_version)
def _find_configuration(cs, configuration):
"""Get a configuration by ID."""
return utils.find_resource(cs.configurations, configuration)
# Flavor related calls
@utils.arg('--datastore_type', metavar='<datastore_type>',
default=None,
@ -1248,12 +1253,14 @@ def do_datastore_version_show(cs, args):
@utils.arg('configuration',
metavar='<configuration>',
type=str,
help='ID of the configuration group to attach to the instance.')
help='ID or name of the configuration group to attach to the'
' instance.')
@utils.service_type('database')
def do_configuration_attach(cs, args):
"""Attaches a configuration group to an instance."""
instance = _find_instance(cs, args.instance)
cs.instances.modify(instance, args.configuration)
configuration = _find_configuration(cs, args.configuration)
cs.instances.modify(instance, configuration)
@utils.arg('name', metavar='<name>', help='Name of the configuration group.')
@ -1293,11 +1300,12 @@ def do_configuration_default(cs, args):
@utils.arg('configuration_group', metavar='<configuration_group>',
help='ID of the configuration group.')
help='ID or name of the configuration group.')
@utils.service_type('database')
def do_configuration_delete(cs, args):
"""Deletes a configuration group."""
cs.configurations.delete(args.configuration_group)
configuration = _find_configuration(cs, args.configuration_group)
cs.configurations.delete(configuration)
@utils.arg('instance',
@ -1365,22 +1373,23 @@ def do_configuration_parameter_list(cs, args):
@utils.arg('configuration_group', metavar='<configuration_group>',
help='ID of the configuration group.')
help='ID or name of the configuration group.')
@utils.arg('values', metavar='<values>',
help='Dictionary of the values to set.')
@utils.service_type('database')
def do_configuration_patch(cs, args):
"""Patches a configuration group."""
cs.configurations.edit(args.configuration_group,
args.values)
configuration = _find_configuration(cs, args.configuration_group)
cs.configurations.edit(configuration, args.values)
@utils.arg('configuration_group', metavar='<configuration_group>',
help='ID of the configuration group.')
help='ID or name of the configuration group.')
@utils.service_type('database')
def do_configuration_instances(cs, args):
"""Lists all instances associated with a configuration group."""
params = cs.configurations.instances(args.configuration_group)
configuration = _find_configuration(cs, args.configuration_group)
params = cs.configurations.instances(configuration)
utils.print_list(params, ['id', 'name'])
@ -1394,11 +1403,12 @@ def do_configuration_list(cs, args):
@utils.arg('configuration_group', metavar='<configuration_group>',
help='ID of the configuration group.')
help='ID or name of the configuration group.')
@utils.service_type('database')
def do_configuration_show(cs, args):
"""Shows details of a configuration group."""
config_grp = cs.configurations.get(args.configuration_group)
configuration = _find_configuration(cs, args.configuration_group)
config_grp = cs.configurations.get(configuration)
config_grp._info['values'] = json.dumps(config_grp.values)
del config_grp._info['datastore_version_id']
@ -1406,7 +1416,7 @@ def do_configuration_show(cs, args):
@utils.arg('configuration_group', metavar='<configuration_group>',
help='ID of the configuration group.')
help='ID or name of the configuration group.')
@utils.arg('values', metavar='<values>',
help='Dictionary of the values to set.')
@utils.arg('--name', metavar='<name>', default=None,
@ -1417,7 +1427,8 @@ def do_configuration_show(cs, args):
@utils.service_type('database')
def do_configuration_update(cs, args):
"""Updates a configuration group."""
cs.configurations.update(args.configuration_group,
configuration = _find_configuration(cs, args.configuration_group)
cs.configurations.update(configuration,
args.values,
args.name,
args.description)