summaryrefslogtreecommitdiff
path: root/troveclient/v1/shell.py
diff options
context:
space:
mode:
Diffstat (limited to 'troveclient/v1/shell.py')
-rw-r--r--troveclient/v1/shell.py56
1 files changed, 51 insertions, 5 deletions
diff --git a/troveclient/v1/shell.py b/troveclient/v1/shell.py
index d7e81db..4c6ffd7 100644
--- a/troveclient/v1/shell.py
+++ b/troveclient/v1/shell.py
@@ -187,6 +187,11 @@ def _find_cluster(cs, cluster):
return utils.find_resource(cs.clusters, cluster)
+def _find_flavor(cs, flavor):
+ """Get a flavor by ID."""
+ return utils.find_resource(cs.flavors, flavor)
+
+
def _find_volume_type(cs, volume_type):
"""Get a volume type by ID."""
return utils.find_resource(cs.volume_types, volume_type)
@@ -217,6 +222,46 @@ def _find_configuration(cs, configuration):
return utils.find_resource(cs.configurations, configuration)
+# Flavor related calls
+@utils.arg('--datastore_type', metavar='<datastore_type>',
+ default=None,
+ help=_('Type of the datastore. For eg: mysql.'))
+@utils.arg("--datastore_version_id", metavar="<datastore_version_id>",
+ default=None, help=_("ID of the datastore version."))
+@utils.service_type('database')
+def do_flavor_list(cs, args):
+ """Lists available flavors."""
+ if args.datastore_type and args.datastore_version_id:
+ flavors = cs.flavors.list_datastore_version_associated_flavors(
+ args.datastore_type, args.datastore_version_id)
+ elif not args.datastore_type and not args.datastore_version_id:
+ flavors = cs.flavors.list()
+ else:
+ raise exceptions.MissingArgs(['datastore_type',
+ 'datastore_version_id'])
+
+ # Fallback to str_id where necessary.
+ _flavors = []
+ for f in flavors:
+ if not f.id and hasattr(f, 'str_id'):
+ f.id = f.str_id
+ _flavors.append(f)
+
+ utils.print_list(_flavors, ['id', 'name', 'ram', 'vcpus', 'disk',
+ 'ephemeral'],
+ labels={'ram': 'RAM', 'vcpus': 'vCPUs', 'disk': 'Disk'},
+ order_by='ram')
+
+
+@utils.arg('flavor', metavar='<flavor>', type=str,
+ help=_('ID or name of the flavor.'))
+@utils.service_type('database')
+def do_flavor_show(cs, args):
+ """Shows details of a flavor."""
+ flavor = _find_flavor(cs, args.flavor)
+ _print_object(flavor)
+
+
# Volume type related calls
@utils.arg('--datastore_type', metavar='<datastore_type>',
default=None,
@@ -508,7 +553,7 @@ def do_update(cs, args):
@utils.arg('flavor',
metavar='<flavor>',
type=str,
- help=_('A flavor ID.'))
+ help=_('A flavor name or ID.'))
@utils.arg('--databases', metavar='<database>',
help=_('Optional list of databases.'),
nargs="+", default=[])
@@ -576,7 +621,7 @@ def do_update(cs, args):
@utils.service_type('database')
def do_create(cs, args):
"""Creates a new instance."""
- flavor_id = args.flavor
+ flavor_id = _find_flavor(cs, args.flavor).id
volume = None
if args.size is not None and args.size <= 0:
raise exceptions.ValidationError(
@@ -639,7 +684,8 @@ def _validate_nic_info(nic_info, nic_str):
def _get_flavor(cs, opts_str):
- flavor_id, opts_str = _strip_option(opts_str, 'flavor', True)
+ flavor_name, opts_str = _strip_option(opts_str, 'flavor', True)
+ flavor_id = _find_flavor(cs, flavor_name).id
return str(flavor_id), opts_str
@@ -881,12 +927,12 @@ def do_cluster_create(cs, args):
@utils.arg('flavor',
metavar='<flavor>',
type=str,
- help=_('New flavor ID for the instance.'))
+ help=_('New flavor of the instance.'))
@utils.service_type('database')
def do_resize_instance(cs, args):
"""Resizes an instance with a new flavor."""
instance = _find_instance(cs, args.instance)
- flavor_id = args.flavor
+ flavor_id = _find_flavor(cs, args.flavor).id
cs.instances.resize_instance(instance, flavor_id)