adding configuration parameters mgmt api
add the CRUD calls of configuration parameters mgmt calls partially implements blueprint configuration-parameters-in-db Change-Id: Iaaea946bdbcab91ca02e5e2cbf956a3980a461ab
This commit is contained in:
parent
6852bdcefc
commit
b20b18e8ac
troveclient
@ -354,6 +354,7 @@ class Dbaas(object):
|
||||
config_parameters = configurations.ConfigurationParameters(self)
|
||||
self.configuration_parameters = config_parameters
|
||||
self.metadata = metadata.Metadata(self)
|
||||
self.mgmt_configs = management.MgmtConfigurationParameters(self)
|
||||
|
||||
class Mgmt(object):
|
||||
def __init__(self, dbaas):
|
||||
|
@ -20,6 +20,7 @@ import testtools
|
||||
|
||||
from troveclient import base
|
||||
from troveclient.v1 import configurations
|
||||
from troveclient.v1 import management
|
||||
|
||||
"""
|
||||
Unit tests for configurations.py
|
||||
@ -72,13 +73,6 @@ class ConfigurationsTest(testtools.TestCase):
|
||||
|
||||
return mock.Mock(side_effect=side_effect_func)
|
||||
|
||||
def _build_fake_configuration(self, name, values, description=None):
|
||||
return {
|
||||
'name': name,
|
||||
'values': values,
|
||||
'description': description,
|
||||
}
|
||||
|
||||
def test_create(self):
|
||||
self.configurations.api.client.post = self._get_mock_method()
|
||||
self._resp.status_code = 200
|
||||
@ -144,3 +138,130 @@ class ConfigurationsTest(testtools.TestCase):
|
||||
self.assertEqual('/configurations/27', self._url)
|
||||
self._resp.status_code = 500
|
||||
self.assertRaises(Exception, self.configurations.edit, 34)
|
||||
|
||||
|
||||
class ConfigurationParametersTest(testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(ConfigurationParametersTest, self).setUp()
|
||||
self.orig__init = configurations.ConfigurationParameters.__init__
|
||||
configurations.ConfigurationParameters.__init__ = mock.Mock(
|
||||
return_value=None)
|
||||
self.config_params = configurations.ConfigurationParameters()
|
||||
self.config_params.api = mock.Mock()
|
||||
self.config_params.api.client = mock.Mock()
|
||||
|
||||
def tearDown(self):
|
||||
super(ConfigurationParametersTest, self).tearDown()
|
||||
configurations.ConfigurationParameters.__init__ = self.orig__init
|
||||
|
||||
def _get_mock_method(self):
|
||||
self._resp = mock.Mock()
|
||||
self._body = None
|
||||
self._url = None
|
||||
|
||||
def side_effect_func(url, body=None):
|
||||
self._body = body
|
||||
self._url = url
|
||||
return (self._resp, body)
|
||||
|
||||
return mock.Mock(side_effect=side_effect_func)
|
||||
|
||||
def test_list_parameters(self):
|
||||
def side_effect_func(path, config):
|
||||
return path
|
||||
|
||||
self.config_params._list = mock.Mock(side_effect=side_effect_func)
|
||||
self.assertEqual('/datastores/datastore/versions/version/parameters',
|
||||
self.config_params.parameters('datastore', 'version'))
|
||||
|
||||
def test_get_parameter(self):
|
||||
def side_effect_func(path):
|
||||
return path
|
||||
|
||||
self.config_params._get = mock.Mock(side_effect=side_effect_func)
|
||||
self.assertEqual(
|
||||
'/datastores/datastore/versions/version/parameters/key',
|
||||
self.config_params.get_parameter('datastore', 'version',
|
||||
'key')
|
||||
)
|
||||
|
||||
def test_list_parameters_by_version(self):
|
||||
def side_effect_func(path, config):
|
||||
return path
|
||||
|
||||
self.config_params._list = mock.Mock(side_effect=side_effect_func)
|
||||
self.assertEqual('/datastores/versions/version/parameters',
|
||||
self.config_params.parameters_by_version('version'))
|
||||
|
||||
def test_get_parameter_by_version(self):
|
||||
def side_effect_func(path):
|
||||
return path
|
||||
|
||||
self.config_params._get = mock.Mock(side_effect=side_effect_func)
|
||||
self.assertEqual('/datastores/versions/version/parameters/key',
|
||||
self.config_params.get_parameter_by_version(
|
||||
'version', 'key'))
|
||||
|
||||
|
||||
class MgmtConfigurationParametersTest(testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(MgmtConfigurationParametersTest, self).setUp()
|
||||
self.orig__init = management.MgmtConfigurationParameters.__init__
|
||||
management.MgmtConfigurationParameters.__init__ = mock.Mock(
|
||||
return_value=None)
|
||||
self.config_params = management.MgmtConfigurationParameters()
|
||||
self.config_params.api = mock.Mock()
|
||||
self.config_params.api.client = mock.Mock()
|
||||
|
||||
def tearDown(self):
|
||||
super(MgmtConfigurationParametersTest, self).tearDown()
|
||||
management.MgmtConfigurationParameters.__init__ = self.orig__init
|
||||
|
||||
def _get_mock_method(self):
|
||||
self._resp = mock.Mock()
|
||||
self._body = None
|
||||
self._url = None
|
||||
|
||||
def side_effect_func(url, body=None):
|
||||
self._body = body
|
||||
self._url = url
|
||||
return (self._resp, body)
|
||||
|
||||
return mock.Mock(side_effect=side_effect_func)
|
||||
|
||||
def test_create(self):
|
||||
self.config_params.api.client.post = self._get_mock_method()
|
||||
self._resp.status_code = 200
|
||||
|
||||
self.config_params.create('id', 'config_name', 1, 'string')
|
||||
self.assertEqual('/mgmt/datastores/versions/id/parameters', self._url)
|
||||
expected = {
|
||||
"name": "config_name",
|
||||
"data_type": "string",
|
||||
"restart_required": 1
|
||||
}
|
||||
self.assertEqual({"configuration-parameter": expected}, self._body)
|
||||
|
||||
def test_modify(self):
|
||||
self.config_params.api.client.put = self._get_mock_method()
|
||||
self._resp.status_code = 200
|
||||
|
||||
self.config_params.modify('id', 'config_name', '1', 'string')
|
||||
self.assertEqual('/mgmt/datastores/versions/id/parameters/config_name',
|
||||
self._url)
|
||||
expected = {
|
||||
"name": "config_name",
|
||||
"data_type": "string",
|
||||
"restart_required": 1
|
||||
}
|
||||
self.assertEqual({"configuration-parameter": expected}, self._body)
|
||||
|
||||
def test_delete(self):
|
||||
self.config_params.api.client.delete = self._get_mock_method()
|
||||
self._resp.status_code = 200
|
||||
|
||||
self.config_params.delete('id', 'param_id')
|
||||
self.assertEqual('/mgmt/datastores/versions/id/parameters/param_id',
|
||||
self._url)
|
||||
self.assertEqual(None, self._body)
|
||||
|
@ -23,6 +23,7 @@ from troveclient.v1 import datastores
|
||||
from troveclient.v1 import flavors
|
||||
from troveclient.v1 import instances
|
||||
from troveclient.v1 import limits
|
||||
# from troveclient.v1 import management
|
||||
from troveclient.v1 import metadata
|
||||
from troveclient.v1 import root
|
||||
from troveclient.v1 import security_groups
|
||||
@ -80,6 +81,8 @@ class Client(object):
|
||||
# self.accounts = Accounts(self)
|
||||
# self.diagnostics = DiagnosticsInterrogator(self)
|
||||
# self.hwinfo = HwInfoInterrogator(self)
|
||||
# self.mgmt_config_params =
|
||||
# management.MgmtConfigurationParameters(self)
|
||||
|
||||
# Add in any extensions...
|
||||
if extensions:
|
||||
|
@ -17,6 +17,7 @@
|
||||
from troveclient import base
|
||||
from troveclient import common
|
||||
from troveclient.v1 import clusters
|
||||
from troveclient.v1 import configurations
|
||||
from troveclient.v1 import flavors
|
||||
from troveclient.v1 import instances
|
||||
|
||||
@ -186,3 +187,68 @@ class MgmtFlavors(base.ManagerWithFind):
|
||||
body["flavor"]["service_type"] = service_type
|
||||
|
||||
return self._create("/mgmt/flavors", body, "flavor")
|
||||
|
||||
|
||||
class MgmtConfigurationParameters(configurations.ConfigurationParameters):
|
||||
def create(self, version, name, restart_required, data_type,
|
||||
max_size=None, min_size=None):
|
||||
"""Mgmt call to create a new configuration parameter."""
|
||||
body = {
|
||||
"configuration-parameter": {
|
||||
"name": name,
|
||||
"restart_required": int(restart_required),
|
||||
"data_type": data_type,
|
||||
}
|
||||
}
|
||||
if max_size:
|
||||
body["configuration-parameter"]["max_size"] = max_size
|
||||
if min_size:
|
||||
body["configuration-parameter"]["min_size"] = min_size
|
||||
|
||||
url = "/mgmt/datastores/versions/%s/parameters" % version
|
||||
resp, body = self.api.client.post(url, body=body)
|
||||
common.check_for_exceptions(resp, body, url)
|
||||
|
||||
def list_all_parameter_by_version(self, version):
|
||||
"""List all configuration parameters deleted or not."""
|
||||
return self._list("/mgmt/datastores/versions/%s/parameters" %
|
||||
version, "configuration-parameters")
|
||||
|
||||
def get_any_parameter_by_version(self, version, key):
|
||||
"""Get any configuration parameter deleted or not."""
|
||||
return self._get("/mgmt/datastores/versions/%s/parameters/%s" %
|
||||
(version, key))
|
||||
|
||||
def modify(self, version, name, restart_required, data_type,
|
||||
max_size=None, min_size=None):
|
||||
"""Mgmt call to modify an existing configuration parameter."""
|
||||
body = {
|
||||
"configuration-parameter": {
|
||||
"name": name,
|
||||
"restart_required": int(restart_required),
|
||||
"data_type": data_type,
|
||||
}
|
||||
}
|
||||
if max_size:
|
||||
body["configuration-parameter"]["max_size"] = max_size
|
||||
if min_size:
|
||||
body["configuration-parameter"]["min_size"] = min_size
|
||||
output = {
|
||||
'version': version,
|
||||
'parameter_name': name
|
||||
}
|
||||
url = ("/mgmt/datastores/versions/%(version)s/"
|
||||
"parameters/%(parameter_name)s" % output)
|
||||
resp, body = self.api.client.put(url, body=body)
|
||||
common.check_for_exceptions(resp, body, url)
|
||||
|
||||
def delete(self, version, name):
|
||||
"""Mgmt call to delete a configuration parameter."""
|
||||
output = {
|
||||
'version_id': version,
|
||||
'parameter_name': name
|
||||
}
|
||||
url = ("/mgmt/datastores/versions/%(version_id)s/"
|
||||
"parameters/%(parameter_name)s" % output)
|
||||
resp, body = self.api.client.delete(url)
|
||||
common.check_for_exceptions(resp, body, url)
|
||||
|
@ -981,7 +981,7 @@ def do_configuration_parameter_list(cs, args):
|
||||
raise exceptions.NoUniqueMatch('The datastore name or id is required'
|
||||
' to retrieve the parameters for the'
|
||||
' configuration group by name.')
|
||||
utils.print_list(params, ['name', 'type', 'min', 'max',
|
||||
utils.print_list(params, ['name', 'type', 'min_size', 'max_size',
|
||||
'restart_required'])
|
||||
|
||||
|
||||
@ -1097,3 +1097,74 @@ def do_metadata_create(cs, args):
|
||||
def do_metadata_delete(cs, args):
|
||||
"""Deletes metadata for instance <id>."""
|
||||
cs.metadata.delete(args.instance_id, args.key)
|
||||
|
||||
|
||||
# @utils.arg('datastore_version',
|
||||
# metavar='<datastore_version>',
|
||||
# help='Datastore version name or UUID assigned to the '
|
||||
# 'configuration group.')
|
||||
# @utils.arg('name', metavar='<name>',
|
||||
# help='Name of the datastore configuration parameter.')
|
||||
# @utils.arg('restart_required', metavar='<restart_required>',
|
||||
# help='Flags the instance to require a restart if this '
|
||||
# 'configuration parameter is new or changed.')
|
||||
# @utils.arg('data_type', metavar='<data_type>',
|
||||
# help='Data type of the datastore configuration parameter.')
|
||||
# @utils.arg('--max_size', metavar='<max_size>',
|
||||
# help='Maximum size of the datastore configuration parameter.')
|
||||
# @utils.arg('--min_size', metavar='<min_size>',
|
||||
# help='Minimum size of the datastore configuration parameter.')
|
||||
# @utils.service_type('database')
|
||||
# def do_configuration_parameter_create(cs, args):
|
||||
# """Create datastore configuration parameter"""
|
||||
# cs.mgmt_config_params.create(
|
||||
# args.datastore_version,
|
||||
# args.name,
|
||||
# args.restart_required,
|
||||
# args.data_type,
|
||||
# args.max_size,
|
||||
# args.min_size,
|
||||
# )
|
||||
|
||||
|
||||
# @utils.arg('datastore_version',
|
||||
# metavar='<datastore_version>',
|
||||
# help='Datastore version name or UUID assigned to the '
|
||||
# 'configuration group.')
|
||||
# @utils.arg('name', metavar='<name>',
|
||||
# help='Name of the datastore configuration parameter.')
|
||||
# @utils.arg('restart_required', metavar='<restart_required>',
|
||||
# help='Sets the datastore configuration parameter if it '
|
||||
# 'requires a restart or not.')
|
||||
# @utils.arg('data_type', metavar='<data_type>',
|
||||
# help='Data type of the datastore configuration parameter.')
|
||||
# @utils.arg('--max_size', metavar='<max_size>',
|
||||
# help='Maximum size of the datastore configuration parameter.')
|
||||
# @utils.arg('--min_size', metavar='<min_size>',
|
||||
# help='Minimum size of the datastore configuration parameter.')
|
||||
# @utils.service_type('database')
|
||||
# def do_configuration_parameter_modify(cs, args):
|
||||
# """Modify datastore configuration parameter"""
|
||||
# cs.mgmt_config_params.modify(
|
||||
# args.datastore_version,
|
||||
# args.name,
|
||||
# args.restart_required,
|
||||
# args.data_type,
|
||||
# args.max_size,
|
||||
# args.min_size,
|
||||
# )
|
||||
|
||||
|
||||
# @utils.arg('datastore_version',
|
||||
# metavar='<datastore_version>',
|
||||
# help='Datastore version name or UUID assigned to the '
|
||||
# 'configuration group.')
|
||||
# @utils.arg('name', metavar='<name>',
|
||||
# help='UUID of the datastore configuration parameter.')
|
||||
# @utils.service_type('database')
|
||||
# def do_configuration_parameter_delete(cs, args):
|
||||
# """Modify datastore configuration parameter"""
|
||||
# cs.mgmt_config_params.delete(
|
||||
# args.datastore_version,
|
||||
# args.name,
|
||||
# )
|
||||
|
Loading…
x
Reference in New Issue
Block a user