Skip to content

Commit 2ab986a

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Add Datastore Version Registry Extension"
2 parents 77757da + e32a0b0 commit 2ab986a

4 files changed

Lines changed: 59 additions & 10 deletions

File tree

troveclient/osc/v1/datastores.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,20 @@ def get_parser(self, prog_name):
194194
help=_('ID of the datastore image in Glance. This can be empty '
195195
'string if --image-tags is specified.'),
196196
)
197+
parser.add_argument(
198+
'--registry-ext',
199+
help=_('Extension for default datastore managers. '
200+
'Allows the use of custom managers for each of '
201+
'the datastores supported by Trove.'
202+
'This can be empty string.'),
203+
)
204+
parser.add_argument(
205+
'--repl-strategy',
206+
help=_('Extension for default strategy for replication. '
207+
'Allows the use of custom replication strategy '
208+
'for each of the datastores supported by Trove.'
209+
'This can be empty string.'),
210+
)
197211
parser.add_argument(
198212
'--active',
199213
action='store_true',
@@ -229,6 +243,8 @@ def take_action(self, parsed_args):
229243
parsed_args.datastore_manager,
230244
parsed_args.image_id,
231245
image_tags=image_tags,
246+
registry_ext=parsed_args.registry_ext,
247+
repl_strategy=parsed_args.repl_strategy,
232248
active='true' if parsed_args.active else 'false',
233249
default='true' if parsed_args.default else 'false',
234250
version=parsed_args.version_number
@@ -263,6 +279,20 @@ def get_parser(self, prog_name):
263279
default=None,
264280
help=_('List of image tags separated by comma, e.g. trove,mysql'),
265281
)
282+
parser.add_argument(
283+
'--registry-ext',
284+
help=_('Extension for default datastore managers. '
285+
'Allows the use of custom managers for each of '
286+
'the datastores supported by Trove.'
287+
'This can be empty string.'),
288+
)
289+
parser.add_argument(
290+
'--repl-strategy',
291+
help=_('Extension for default strategy for replication. '
292+
'Allows the use of custom replication strategy '
293+
'for each of the datastores supported by Trove.'
294+
'This can be empty string.'),
295+
)
266296
parser.add_argument(
267297
'--version-name',
268298
help=_('New datastore version name.'),
@@ -303,6 +333,8 @@ def take_action(self, parsed_args):
303333
datastore_manager=parsed_args.datastore_manager,
304334
image=parsed_args.image,
305335
image_tags=image_tags,
336+
registry_ext=parsed_args.registry_ext,
337+
repl_strategy=parsed_args.repl_strategy,
306338
active=parsed_args.enable, default=parsed_args.default,
307339
name=parsed_args.version_name
308340
)

troveclient/tests/osc/v1/test_datastores.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,18 @@ def setUp(self):
166166
def test_create_datastore_version(self):
167167
image_id = uuidutils.generate_uuid()
168168
args = ['new_name', 'ds_name', 'ds_manager', image_id, '--active',
169-
'--default', '--image-tags', 'trove,mysql']
169+
'--default', '--image-tags', 'trove,mysql',
170+
'--registry-ext', 'registry-ext',
171+
'--repl-strategy', 'repl_strategy']
170172
parsed_args = self.check_parser(self.cmd, args, [])
171173

172174
self.cmd.take_action(parsed_args)
173175

174176
self.dsversion_mgmt_client.create.assert_called_once_with(
175177
'new_name', 'ds_name', 'ds_manager', image_id, active='true',
176178
default='true', image_tags=['trove', 'mysql'],
177-
version=None)
179+
registry_ext="registry-ext",
180+
repl_strategy="repl_strategy", version=None)
178181

179182

180183
class TestUpdateDatastoreVersion(TestDatastores):
@@ -184,13 +187,15 @@ def setUp(self):
184187

185188
def test_update_datastore_version(self):
186189
version_id = uuidutils.generate_uuid()
187-
args = [version_id, '--image-tags', 'trove,mysql', '--enable',
188-
'--non-default']
190+
args = [version_id, '--registry-ext', 'registry-ext',
191+
'--repl-strategy', 'repl_strategy',
192+
'--image-tags', 'trove,mysql', '--enable', '--non-default']
189193
parsed_args = self.check_parser(self.cmd, args, [])
190194

191195
self.cmd.take_action(parsed_args)
192196

193197
self.dsversion_mgmt_client.edit.assert_called_once_with(
194198
version_id, datastore_manager=None, image=None,
195199
active='true', default='false', image_tags=['trove', 'mysql'],
196-
name=None)
200+
registry_ext="registry-ext",
201+
repl_strategy="repl_strategy", name=None)

troveclient/tests/test_management.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,15 @@ def side_effect_func(path, body, *kw):
235235
self.ds_version._create = mock.Mock(side_effect=side_effect_func)
236236
p, b, = self.ds_version.create(
237237
"ds-version1", "mysql", "mysql", "image-id",
238-
["mysql-server-5.5"], "true", "true")
238+
["mysql-server-5.5"], "registry-ext",
239+
"repl-strategy", "true", "true")
239240
self.assertEqual("/mgmt/datastore-versions", p)
240241
self.assertEqual("ds-version1", b["version"]["name"])
241242
self.assertEqual("mysql", b["version"]["datastore_name"])
242243
self.assertEqual("mysql", b["version"]["datastore_manager"])
243244
self.assertEqual("image-id", b["version"]["image"])
245+
self.assertEqual("registry-ext", b["version"]["registry_ext"])
246+
self.assertEqual("repl-strategy", b["version"]["repl_strategy"])
244247
self.assertEqual(["mysql-server-5.5"], b["version"]["packages"])
245248
self.assertTrue(b["version"]["active"])
246249
self.assertTrue(b["version"]["default"])

troveclient/v1/management.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,8 @@ def get(self, datastore_version_id):
268268
"version")
269269

270270
def create(self, name, datastore_name, datastore_manager, image,
271-
packages=None, active='true', default='false', image_tags=[],
272-
version=None):
271+
packages=None, registry_ext=None, repl_strategy=None,
272+
active='true', default='false', image_tags=[], version=None):
273273
"""Create a new datastore version."""
274274
packages = packages or []
275275
body = {
@@ -285,14 +285,19 @@ def create(self, name, datastore_name, datastore_manager, image,
285285
}
286286
if image:
287287
body['version']['image'] = image
288+
289+
if registry_ext:
290+
body['version']['registry_ext'] = registry_ext
291+
if repl_strategy:
292+
body['version']['repl_strategy'] = repl_strategy
288293
if version:
289294
body['version']['version'] = version
290295

291296
return self._create("/mgmt/datastore-versions", body, None, True)
292297

293298
def edit(self, datastore_version_id, datastore_manager=None, image=None,
294-
packages=None, active=None, default=None, image_tags=None,
295-
name=None):
299+
packages=None, registry_ext=None, repl_strategy=None,
300+
active=None, default=None, image_tags=None, name=None):
296301
"""Update a datastore-version."""
297302
packages = packages or []
298303
body = {}
@@ -302,6 +307,10 @@ def edit(self, datastore_version_id, datastore_manager=None, image=None,
302307
body['image'] = image
303308
if packages:
304309
body['packages'] = packages
310+
if registry_ext:
311+
body['registry_ext'] = registry_ext
312+
if repl_strategy:
313+
body['repl_strategy'] = repl_strategy
305314
if active is not None:
306315
body['active'] = json.loads(active)
307316
if default is not None:

0 commit comments

Comments
 (0)