diff --git a/releasenotes/notes/victoria-flavor-optional.yaml b/releasenotes/notes/victoria-flavor-optional.yaml new file mode 100644 index 00000000..b538014a --- /dev/null +++ b/releasenotes/notes/victoria-flavor-optional.yaml @@ -0,0 +1,4 @@ +--- +features: + - Change flavor as an optional parameter (``--flavor``) for creating + instance. When creating replicas, flavor is not requried. diff --git a/troveclient/osc/v1/database_instances.py b/troveclient/osc/v1/database_instances.py index ffda02b5..2d186265 100644 --- a/troveclient/osc/v1/database_instances.py +++ b/troveclient/osc/v1/database_instances.py @@ -227,7 +227,7 @@ class CreateDatabaseInstance(command.ShowOne): help=_("Name of the instance."), ) parser.add_argument( - 'flavor', + '--flavor', metavar='', type=str, help=_("A flavor ID."), @@ -241,7 +241,7 @@ class CreateDatabaseInstance(command.ShowOne): "Required when volume support is enabled."), ) parser.add_argument( - '--volume_type', + '--volume-type', metavar='', type=str, default=None, @@ -268,7 +268,7 @@ class CreateDatabaseInstance(command.ShowOne): help=_("A backup name or ID."), ) parser.add_argument( - '--availability_zone', + '--availability-zone', metavar='', default=None, help=_("The Zone hint to give to Nova."), @@ -280,7 +280,7 @@ class CreateDatabaseInstance(command.ShowOne): help=_("A datastore name or ID."), ) parser.add_argument( - '--datastore_version', + '--datastore-version', metavar='', default=None, help=_("A datastore version name or ID."), @@ -298,13 +298,13 @@ class CreateDatabaseInstance(command.ShowOne): help=_("ID of the configuration group to attach to the instance."), ) parser.add_argument( - '--replica_of', + '--replica-of', metavar='', default=None, help=_("ID or name of an existing instance to replicate from."), ) parser.add_argument( - '--replica_count', + '--replica-count', metavar='', type=int, default=None, @@ -353,7 +353,6 @@ class CreateDatabaseInstance(command.ShowOne): def take_action(self, parsed_args): database = self.app.client_manager.database db_instances = database.instances - flavor_id = parsed_args.flavor volume = None if parsed_args.size is not None and parsed_args.size <= 0: @@ -409,7 +408,7 @@ class CreateDatabaseInstance(command.ShowOne): instance = db_instances.create( parsed_args.name, - flavor_id, + flavor_id=parsed_args.flavor, volume=volume, databases=databases, users=users, diff --git a/troveclient/tests/osc/v1/test_database_instances.py b/troveclient/tests/osc/v1/test_database_instances.py index bb3950df..630ba1d5 100644 --- a/troveclient/tests/osc/v1/test_database_instances.py +++ b/troveclient/tests/osc/v1/test_database_instances.py @@ -204,15 +204,15 @@ class TestDatabaseInstanceCreate(TestInstances): @mock.patch.object(utils, 'find_resource') def test_instance_create(self, mock_find): mock_find.id.side_effect = ['test', 'mod_id'] - args = ['test-name', '103', + args = ['test-name', '--flavor', '103', '--size', '1', '--databases', 'db1', 'db2', '--users', 'u1:111', 'u2:111', '--datastore', "datastore", - '--datastore_version', "datastore_version", + '--datastore-version', "datastore_version", '--nic', 'net-id=net1', - '--replica_of', 'test', - '--replica_count', '4', + '--replica-of', 'test', + '--replica-count', '4', '--module', 'mod_id', '--is-public', '--allowed-cidr', '10.0.0.1/24', diff --git a/troveclient/v1/instances.py b/troveclient/v1/instances.py index 15725a30..2ff17f3b 100644 --- a/troveclient/v1/instances.py +++ b/troveclient/v1/instances.py @@ -89,18 +89,20 @@ class Instances(base.ManagerWithFind): auth_url, user, key, auth_version=auth_version, os_options=os_options) - def create(self, name, flavor_id, volume=None, databases=None, users=None, - restorePoint=None, availability_zone=None, datastore=None, - datastore_version=None, nics=None, configuration=None, - replica_of=None, replica_count=None, modules=None, - locality=None, region_name=None, access=None, **kwargs): + def create(self, name, flavor_id=None, volume=None, databases=None, + users=None, restorePoint=None, availability_zone=None, + datastore=None, datastore_version=None, nics=None, + configuration=None, replica_of=None, replica_count=None, + modules=None, locality=None, region_name=None, access=None, + **kwargs): """Create (boot) a new instance.""" body = {"instance": { "name": name, - "flavorRef": flavor_id }} datastore_obj = {} + if flavor_id: + body["instance"]["flavorRef"] = flavor_id if volume: body["instance"]["volume"] = volume if databases: