summaryrefslogtreecommitdiff
path: root/trove/cmd/manage.py
diff options
context:
space:
mode:
authorMatt Van Dijk <mvandijk@tesora.com>2016-11-24 15:25:20 -0500
committerMatt Van Dijk <mvandijk@tesora.com>2016-12-19 14:24:09 -0500
commit610354413e89ca1be6566e98cfa297ada676bc63 (patch)
tree03b13b01958d5d2fd8599c60c2c0e14b5148f78a /trove/cmd/manage.py
parent8adfb7e4f27fb9daf87dda018094cc6c58089b88 (diff)
downloadtrove-610354413e89ca1be6566e98cfa297ada676bc63.tar.gz
Associate datastore, version with volume-type
Cinder supports multiple volume types and volume types can be explicitly requested in create requests. This change allows users to restrict the allowed volume types for a given datastore/version in a manner similar to flavors. Co-Authored-By: amrith <amrith@tesora.com> Change-Id: I790751ade042e271ba1cc902a8ef4d3c3a8dc557 Implements: blueprint associate-volume-type-datastore
Diffstat (limited to 'trove/cmd/manage.py')
-rw-r--r--trove/cmd/manage.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/trove/cmd/manage.py b/trove/cmd/manage.py
index b84f7964..cadd21d3 100644
--- a/trove/cmd/manage.py
+++ b/trove/cmd/manage.py
@@ -116,6 +116,52 @@ class Commands(object):
except exception.DatastoreVersionNotFound as e:
print(e)
+ def datastore_version_volume_type_add(self, datastore_name,
+ datastore_version_name,
+ volume_type_ids):
+ """Adds volume type assiciation for a given datastore version id."""
+ try:
+ dsmetadata = datastore_models.DatastoreVersionMetadata
+ dsmetadata.add_datastore_version_volume_type_association(
+ datastore_name, datastore_version_name,
+ volume_type_ids.split(","))
+ print("Added volume type '%s' to the '%s' '%s'."
+ % (volume_type_ids, datastore_name, datastore_version_name))
+ except exception.DatastoreVersionNotFound as e:
+ print(e)
+
+ def datastore_version_volume_type_delete(self, datastore_name,
+ datastore_version_name,
+ volume_type_id):
+ """Deletes a volume type association with a given datastore."""
+ try:
+ dsmetadata = datastore_models.DatastoreVersionMetadata
+ dsmetadata.delete_datastore_version_volume_type_association(
+ datastore_name, datastore_version_name, volume_type_id)
+ print("Deleted volume type '%s' from '%s' '%s'."
+ % (volume_type_id, datastore_name, datastore_version_name))
+ except exception.DatastoreVersionNotFound as e:
+ print(e)
+
+ def datastore_version_volume_type_list(self, datastore_name,
+ datastore_version_name):
+ """Lists volume type association with a given datastore."""
+ try:
+ dsmetadata = datastore_models.DatastoreVersionMetadata
+ vtlist = dsmetadata.list_datastore_volume_type_associations(
+ datastore_name, datastore_version_name)
+ if vtlist.count() > 0:
+ for volume_type in vtlist:
+ print ("Datastore: %s, Version: %s, Volume Type: %s" %
+ (datastore_name, datastore_version_name,
+ volume_type.value))
+ else:
+ print("No Volume Type Associations found for Datastore: %s, "
+ "Version: %s." %
+ (datastore_name, datastore_version_name))
+ except exception.DatastoreVersionNotFound as e:
+ print(e)
+
def params_of(self, command_name):
if Commands.has(command_name):
return utils.MethodInspector(getattr(self, command_name))
@@ -205,6 +251,33 @@ def main():
'datastore version.')
parser.add_argument('flavor_id', help='The flavor to be deleted for '
'a given datastore and datastore version.')
+ parser = subparser.add_parser(
+ 'datastore_version_volume_type_add', help='Adds volume_type '
+ 'association to a given datastore and datastore version.')
+ parser.add_argument('datastore_name', help='Name of the datastore.')
+ parser.add_argument('datastore_version_name', help='Name of the '
+ 'datastore version.')
+ parser.add_argument('volume_type_ids', help='Comma separated list of '
+ 'volume_type ids.')
+
+ parser = subparser.add_parser(
+ 'datastore_version_volume_type_delete',
+ help='Deletes a volume_type '
+ 'associated with a given datastore and datastore version.')
+ parser.add_argument('datastore_name', help='Name of the datastore.')
+ parser.add_argument('datastore_version_name', help='Name of the '
+ 'datastore version.')
+ parser.add_argument('volume_type_id', help='The volume_type to be '
+ 'deleted for a given datastore and datastore '
+ 'version.')
+
+ parser = subparser.add_parser(
+ 'datastore_version_volume_type_list',
+ help='Lists the volume_types '
+ 'associated with a given datastore and datastore version.')
+ parser.add_argument('datastore_name', help='Name of the datastore.')
+ parser.add_argument('datastore_version_name', help='Name of the '
+ 'datastore version.')
cfg.custom_parser('action', actions)
cfg.parse_args(sys.argv)