Add Datastore Version Registry Extension
Current, users can config default datastore registry for managers not by verions. This make you can flexible when have some experimental datastore. With this patch, users with the administrator role can configure the datastore registry external for each datastore version using a command, without editing configuration files. Story: #2010860 Task: #48536 Change-Id: I7ee47dd1bb6e52991f0e0028a01e81252a1718c3
This commit is contained in:
parent
0415e4bc88
commit
e32a0b0c9c
@ -194,6 +194,20 @@ class CreateDatastoreVersion(command.Command):
|
||||
help=_('ID of the datastore image in Glance. This can be empty '
|
||||
'string if --image-tags is specified.'),
|
||||
)
|
||||
parser.add_argument(
|
||||
'--registry-ext',
|
||||
help=_('Extension for default datastore managers. '
|
||||
'Allows the use of custom managers for each of '
|
||||
'the datastores supported by Trove.'
|
||||
'This can be empty string.'),
|
||||
)
|
||||
parser.add_argument(
|
||||
'--repl-strategy',
|
||||
help=_('Extension for default strategy for replication. '
|
||||
'Allows the use of custom replication strategy '
|
||||
'for each of the datastores supported by Trove.'
|
||||
'This can be empty string.'),
|
||||
)
|
||||
parser.add_argument(
|
||||
'--active',
|
||||
action='store_true',
|
||||
@ -229,6 +243,8 @@ class CreateDatastoreVersion(command.Command):
|
||||
parsed_args.datastore_manager,
|
||||
parsed_args.image_id,
|
||||
image_tags=image_tags,
|
||||
registry_ext=parsed_args.registry_ext,
|
||||
repl_strategy=parsed_args.repl_strategy,
|
||||
active='true' if parsed_args.active else 'false',
|
||||
default='true' if parsed_args.default else 'false',
|
||||
version=parsed_args.version_number
|
||||
@ -263,6 +279,20 @@ class UpdateDatastoreVersion(command.Command):
|
||||
default=None,
|
||||
help=_('List of image tags separated by comma, e.g. trove,mysql'),
|
||||
)
|
||||
parser.add_argument(
|
||||
'--registry-ext',
|
||||
help=_('Extension for default datastore managers. '
|
||||
'Allows the use of custom managers for each of '
|
||||
'the datastores supported by Trove.'
|
||||
'This can be empty string.'),
|
||||
)
|
||||
parser.add_argument(
|
||||
'--repl-strategy',
|
||||
help=_('Extension for default strategy for replication. '
|
||||
'Allows the use of custom replication strategy '
|
||||
'for each of the datastores supported by Trove.'
|
||||
'This can be empty string.'),
|
||||
)
|
||||
parser.add_argument(
|
||||
'--version-name',
|
||||
help=_('New datastore version name.'),
|
||||
@ -303,6 +333,8 @@ class UpdateDatastoreVersion(command.Command):
|
||||
datastore_manager=parsed_args.datastore_manager,
|
||||
image=parsed_args.image,
|
||||
image_tags=image_tags,
|
||||
registry_ext=parsed_args.registry_ext,
|
||||
repl_strategy=parsed_args.repl_strategy,
|
||||
active=parsed_args.enable, default=parsed_args.default,
|
||||
name=parsed_args.version_name
|
||||
)
|
||||
|
@ -166,7 +166,9 @@ class TestCreateDatastoreVersion(TestDatastores):
|
||||
def test_create_datastore_version(self):
|
||||
image_id = uuidutils.generate_uuid()
|
||||
args = ['new_name', 'ds_name', 'ds_manager', image_id, '--active',
|
||||
'--default', '--image-tags', 'trove,mysql']
|
||||
'--default', '--image-tags', 'trove,mysql',
|
||||
'--registry-ext', 'registry-ext',
|
||||
'--repl-strategy', 'repl_strategy']
|
||||
parsed_args = self.check_parser(self.cmd, args, [])
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
@ -174,7 +176,8 @@ class TestCreateDatastoreVersion(TestDatastores):
|
||||
self.dsversion_mgmt_client.create.assert_called_once_with(
|
||||
'new_name', 'ds_name', 'ds_manager', image_id, active='true',
|
||||
default='true', image_tags=['trove', 'mysql'],
|
||||
version=None)
|
||||
registry_ext="registry-ext",
|
||||
repl_strategy="repl_strategy", version=None)
|
||||
|
||||
|
||||
class TestUpdateDatastoreVersion(TestDatastores):
|
||||
@ -184,8 +187,9 @@ class TestUpdateDatastoreVersion(TestDatastores):
|
||||
|
||||
def test_update_datastore_version(self):
|
||||
version_id = uuidutils.generate_uuid()
|
||||
args = [version_id, '--image-tags', 'trove,mysql', '--enable',
|
||||
'--non-default']
|
||||
args = [version_id, '--registry-ext', 'registry-ext',
|
||||
'--repl-strategy', 'repl_strategy',
|
||||
'--image-tags', 'trove,mysql', '--enable', '--non-default']
|
||||
parsed_args = self.check_parser(self.cmd, args, [])
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
@ -193,4 +197,5 @@ class TestUpdateDatastoreVersion(TestDatastores):
|
||||
self.dsversion_mgmt_client.edit.assert_called_once_with(
|
||||
version_id, datastore_manager=None, image=None,
|
||||
active='true', default='false', image_tags=['trove', 'mysql'],
|
||||
name=None)
|
||||
registry_ext="registry-ext",
|
||||
repl_strategy="repl_strategy", name=None)
|
||||
|
@ -235,12 +235,15 @@ class MgmtDatastoreVersionsTest(testtools.TestCase):
|
||||
self.ds_version._create = mock.Mock(side_effect=side_effect_func)
|
||||
p, b, = self.ds_version.create(
|
||||
"ds-version1", "mysql", "mysql", "image-id",
|
||||
["mysql-server-5.5"], "true", "true")
|
||||
["mysql-server-5.5"], "registry-ext",
|
||||
"repl-strategy", "true", "true")
|
||||
self.assertEqual("/mgmt/datastore-versions", p)
|
||||
self.assertEqual("ds-version1", b["version"]["name"])
|
||||
self.assertEqual("mysql", b["version"]["datastore_name"])
|
||||
self.assertEqual("mysql", b["version"]["datastore_manager"])
|
||||
self.assertEqual("image-id", b["version"]["image"])
|
||||
self.assertEqual("registry-ext", b["version"]["registry_ext"])
|
||||
self.assertEqual("repl-strategy", b["version"]["repl_strategy"])
|
||||
self.assertEqual(["mysql-server-5.5"], b["version"]["packages"])
|
||||
self.assertTrue(b["version"]["active"])
|
||||
self.assertTrue(b["version"]["default"])
|
||||
|
@ -268,8 +268,8 @@ class MgmtDatastoreVersions(base.ManagerWithFind):
|
||||
"version")
|
||||
|
||||
def create(self, name, datastore_name, datastore_manager, image,
|
||||
packages=None, active='true', default='false', image_tags=[],
|
||||
version=None):
|
||||
packages=None, registry_ext=None, repl_strategy=None,
|
||||
active='true', default='false', image_tags=[], version=None):
|
||||
"""Create a new datastore version."""
|
||||
packages = packages or []
|
||||
body = {
|
||||
@ -285,14 +285,19 @@ class MgmtDatastoreVersions(base.ManagerWithFind):
|
||||
}
|
||||
if image:
|
||||
body['version']['image'] = image
|
||||
|
||||
if registry_ext:
|
||||
body['version']['registry_ext'] = registry_ext
|
||||
if repl_strategy:
|
||||
body['version']['repl_strategy'] = repl_strategy
|
||||
if version:
|
||||
body['version']['version'] = version
|
||||
|
||||
return self._create("/mgmt/datastore-versions", body, None, True)
|
||||
|
||||
def edit(self, datastore_version_id, datastore_manager=None, image=None,
|
||||
packages=None, active=None, default=None, image_tags=None,
|
||||
name=None):
|
||||
packages=None, registry_ext=None, repl_strategy=None,
|
||||
active=None, default=None, image_tags=None, name=None):
|
||||
"""Update a datastore-version."""
|
||||
packages = packages or []
|
||||
body = {}
|
||||
@ -302,6 +307,10 @@ class MgmtDatastoreVersions(base.ManagerWithFind):
|
||||
body['image'] = image
|
||||
if packages:
|
||||
body['packages'] = packages
|
||||
if registry_ext:
|
||||
body['registry_ext'] = registry_ext
|
||||
if repl_strategy:
|
||||
body['repl_strategy'] = repl_strategy
|
||||
if active is not None:
|
||||
body['active'] = json.loads(active)
|
||||
if default is not None:
|
||||
|
Loading…
Reference in New Issue
Block a user