Add configuration-parameter-list to OSC
This change adds database support to the python-openstackclient project for the configuration-parameter-list command. The trove command configuration-parameter-list is now: openstack database configuration parameter list Change-Id: I8e7ee36529b75b0962aeaf30a074b55b9e0cee12 Partially-Implements: trove-support-in-python-openstackclient
This commit is contained in:
parent
854d3e2a31
commit
c2de9c6a22
@ -0,0 +1,5 @@
|
||||
---
|
||||
features:
|
||||
- The command ``trove configuration-parameter-list`` is now available to
|
||||
use in the python-openstackclient CLI as ``openstack database
|
||||
configuration parameter list``
|
@ -35,6 +35,7 @@ openstack.database.v1 =
|
||||
database_cluster_list = troveclient.osc.v1.database_clusters:ListDatabaseClusters
|
||||
database_cluster_show = troveclient.osc.v1.database_clusters:ShowDatabaseCluster
|
||||
database_configuration_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurations
|
||||
database_configuration_parameter_list = troveclient.osc.v1.database_configurations:ListDatabaseConfigurationParameters
|
||||
database_configuration_show = troveclient.osc.v1.database_configurations:ShowDatabaseConfiguration
|
||||
database_flavor_list = troveclient.osc.v1.database_flavors:ListDatabaseFlavors
|
||||
database_flavor_show = troveclient.osc.v1.database_flavors:ShowDatabaseFlavor
|
||||
|
@ -17,7 +17,9 @@ from osc_lib.command import command
|
||||
from osc_lib import utils as osc_utils
|
||||
import six
|
||||
|
||||
from troveclient import exceptions
|
||||
from troveclient.i18n import _
|
||||
from troveclient import utils
|
||||
|
||||
|
||||
def set_attributes_for_print_detail(configuration):
|
||||
@ -80,3 +82,51 @@ class ShowDatabaseConfiguration(command.ShowOne):
|
||||
db_configurations, parsed_args.configuration_group)
|
||||
configuration = set_attributes_for_print_detail(configuration)
|
||||
return zip(*sorted(six.iteritems(configuration)))
|
||||
|
||||
|
||||
class ListDatabaseConfigurationParameters(command.Lister):
|
||||
|
||||
_description = _("Lists available parameters for a configuration group.")
|
||||
columns = ['Name', 'Type', 'Min Size', 'Max Size', 'Restart Required']
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(ListDatabaseConfigurationParameters, self).\
|
||||
get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'datastore_version',
|
||||
metavar='<datastore_version>',
|
||||
help=_('Datastore version name or ID assigned'
|
||||
'to the configuration group.')
|
||||
)
|
||||
parser.add_argument(
|
||||
'--datastore',
|
||||
metavar='<datastore>',
|
||||
default=None,
|
||||
help=_('ID or name of the datastore to list configuration'
|
||||
'parameters for. Optional if the ID of the'
|
||||
'datastore_version is provided.')
|
||||
)
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
db_configuration_parameters = self.app.client_manager.\
|
||||
database.configuration_parameters
|
||||
if parsed_args.datastore:
|
||||
params = db_configuration_parameters.\
|
||||
parameters(parsed_args.datastore,
|
||||
parsed_args.datastore_version)
|
||||
elif utils.is_uuid_like(parsed_args.datastore_version):
|
||||
params = db_configuration_parameters.\
|
||||
parameters_by_version(parsed_args.datastore_version)
|
||||
else:
|
||||
raise exceptions.NoUniqueMatch(_('The datastore name or id is'
|
||||
' required to retrieve the'
|
||||
' parameters for the'
|
||||
' configuration group'
|
||||
' by name.'))
|
||||
for param in params:
|
||||
setattr(param, 'min_size', getattr(param, 'min', '-'))
|
||||
setattr(param, 'max_size', getattr(param, 'max', '-'))
|
||||
params = [osc_utils.get_item_properties(p, self.columns)
|
||||
for p in params]
|
||||
return self.columns, params
|
||||
|
@ -17,6 +17,7 @@ from troveclient.tests import fakes
|
||||
from troveclient.tests.osc import utils
|
||||
from troveclient.v1 import backups
|
||||
from troveclient.v1 import clusters
|
||||
from troveclient.v1 import configurations
|
||||
from troveclient.v1 import databases
|
||||
from troveclient.v1 import datastores
|
||||
from troveclient.v1 import flavors
|
||||
@ -57,7 +58,17 @@ class FakeConfigurations(object):
|
||||
[2]['configurations'])
|
||||
|
||||
def get_configurations_c_123(self):
|
||||
return flavors.Flavor(None, self.fake_config[0])
|
||||
return configurations.Configuration(None, self.fake_config[0])
|
||||
|
||||
|
||||
class FakeConfigurationParameters(object):
|
||||
fake_config_param = (fakes.FakeHTTPClient().
|
||||
get_datastores_d_123_versions_v_156_parameters()
|
||||
[2]['configuration-parameters'])
|
||||
|
||||
def get_params_connect_timeout(self):
|
||||
return configurations.\
|
||||
ConfigurationParameter(None, self.fake_config_param[1])
|
||||
|
||||
|
||||
class FakeLimits(object):
|
||||
|
@ -11,18 +11,22 @@
|
||||
# under the License.
|
||||
|
||||
from troveclient import common
|
||||
from troveclient import exceptions
|
||||
from troveclient.osc.v1 import database_configurations
|
||||
from troveclient.tests.osc.v1 import fakes
|
||||
|
||||
|
||||
class TestConfigurations(fakes.TestDatabasev1):
|
||||
fake_configurations = fakes.FakeConfigurations()
|
||||
fake_configuration_params = fakes.FakeConfigurationParameters()
|
||||
|
||||
def setUp(self):
|
||||
super(TestConfigurations, self).setUp()
|
||||
self.mock_client = self.app.client_manager.database
|
||||
self.configuration_client = (self.app.client_manager.database.
|
||||
configurations)
|
||||
self.configuration_params_client = (self.app.client_manager.
|
||||
database.configuration_parameters)
|
||||
|
||||
|
||||
class TestConfigurationList(TestConfigurations):
|
||||
@ -77,3 +81,43 @@ class TestConfigurationShow(TestConfigurations):
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual(self.values, data)
|
||||
|
||||
|
||||
class TestConfigurationParameterList(TestConfigurations):
|
||||
|
||||
columns = database_configurations.\
|
||||
ListDatabaseConfigurationParameters.columns
|
||||
values = ('connect_timeout', 'integer', 2, 31536000, 'false')
|
||||
|
||||
def setUp(self):
|
||||
super(TestConfigurationParameterList, self).setUp()
|
||||
self.cmd = database_configurations.\
|
||||
ListDatabaseConfigurationParameters(self.app, None)
|
||||
data = [self.fake_configuration_params.get_params_connect_timeout()]
|
||||
self.configuration_params_client.parameters.return_value =\
|
||||
common.Paginated(data)
|
||||
self.configuration_params_client.parameters_by_version.return_value =\
|
||||
common.Paginated(data)
|
||||
|
||||
def test_configuration_parameters_list_defaults(self):
|
||||
args = ['d-123', '--datastore', 'mysql']
|
||||
verifylist = [
|
||||
('datastore_version', 'd-123'),
|
||||
('datastore', 'mysql'),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, args, verifylist)
|
||||
columns, data = self.cmd.take_action(parsed_args)
|
||||
self.assertEqual(self.columns, columns)
|
||||
self.assertEqual([tuple(self.values)], data)
|
||||
|
||||
def test_configuration_parameters_list_with_version_id_exception(self):
|
||||
args = [
|
||||
'd-123',
|
||||
]
|
||||
verifylist = [
|
||||
('datastore_version', 'd-123'),
|
||||
]
|
||||
parsed_args = self.check_parser(self.cmd, args, verifylist)
|
||||
self.assertRaises(exceptions.NoUniqueMatch,
|
||||
self.cmd.take_action,
|
||||
parsed_args)
|
||||
|
Loading…
x
Reference in New Issue
Block a user