summaryrefslogtreecommitdiff
path: root/troveclient/osc/v1/datastores.py
diff options
context:
space:
mode:
Diffstat (limited to 'troveclient/osc/v1/datastores.py')
-rw-r--r--troveclient/osc/v1/datastores.py83
1 files changed, 81 insertions, 2 deletions
diff --git a/troveclient/osc/v1/datastores.py b/troveclient/osc/v1/datastores.py
index bf12158..20b23c8 100644
--- a/troveclient/osc/v1/datastores.py
+++ b/troveclient/osc/v1/datastores.py
@@ -191,12 +191,17 @@ class CreateDatastoreVersion(command.Command):
)
parser.add_argument(
'image_id',
- help=_('ID of the datastore image in Glance.'),
+ help=_('ID of the datastore image in Glance. This can be empty '
+ 'string if --image-tags is specified.'),
)
parser.add_argument(
'--active',
action='store_true',
- help=_('Enable the datastore version or not.'),
+ help=_('Enable the datastore version.'),
+ )
+ parser.add_argument(
+ '--image-tags',
+ help=_('List of image tags separated by comma, e.g. trove,mysql'),
)
parser.add_argument(
'--default',
@@ -207,12 +212,18 @@ class CreateDatastoreVersion(command.Command):
def take_action(self, parsed_args):
client = self.app.client_manager.database.mgmt_ds_versions
+
+ image_tags = []
+ if parsed_args.image_tags:
+ image_tags = parsed_args.image_tags.split(',')
+
try:
client.create(
parsed_args.version_name,
parsed_args.datastore_name,
parsed_args.datastore_manager,
parsed_args.image_id,
+ image_tags=image_tags,
active='true' if parsed_args.active else 'false',
default='true' if parsed_args.default else 'false'
)
@@ -220,3 +231,71 @@ class CreateDatastoreVersion(command.Command):
msg = (_("Failed to create datastore version %(version)s: %(e)s")
% {'version': parsed_args.version_name, 'e': e})
raise exceptions.CommandError(msg)
+
+
+class UpdateDatastoreVersion(command.Command):
+ _description = _("Updates a datastore version.")
+
+ def get_parser(self, prog_name):
+ parser = super(UpdateDatastoreVersion, self).get_parser(prog_name)
+ parser.add_argument(
+ 'datastore_version_id',
+ help=_('Datastore version ID.'),
+ )
+ parser.add_argument(
+ '--datastore-manager',
+ default=None,
+ help=_("Datastore manager name."),
+ )
+ parser.add_argument(
+ '--image',
+ default=None,
+ help=_('ID of the datastore image in Glance.'),
+ )
+ parser.add_argument(
+ '--image-tags',
+ default=None,
+ help=_('List of image tags separated by comma, e.g. trove,mysql'),
+ )
+
+ enable_group = parser.add_mutually_exclusive_group()
+ enable_group.add_argument('--enable', dest='enable',
+ default=None,
+ action='store_const',
+ const='true')
+ enable_group.add_argument('--disable', dest='enable',
+ default=None,
+ action='store_const',
+ const='false')
+
+ default_group = parser.add_mutually_exclusive_group()
+ default_group.add_argument('--default', dest='default',
+ default=None,
+ action='store_const',
+ const='true')
+ default_group.add_argument('--non-default', dest='default',
+ default=None,
+ action='store_const',
+ const='false')
+
+ return parser
+
+ def take_action(self, parsed_args):
+ client = self.app.client_manager.database.mgmt_ds_versions
+
+ image_tags = None
+ if parsed_args.image_tags is not None:
+ image_tags = parsed_args.image_tags.split(',')
+
+ try:
+ client.edit(
+ parsed_args.datastore_version_id,
+ datastore_manager=parsed_args.datastore_manager,
+ image=parsed_args.image,
+ image_tags=image_tags,
+ active=parsed_args.enable, default=parsed_args.default
+ )
+ except Exception as e:
+ msg = (_("Failed to update datastore version %(version)s: %(e)s")
+ % {'version': parsed_args.datastore_version_id, 'e': e})
+ raise exceptions.CommandError(msg)