From a46c126b3842dd0a4f34d11506b53e6787056074 Mon Sep 17 00:00:00 2001 From: James Arendt Date: Mon, 14 Sep 2015 13:18:29 -0700 Subject: [PATCH] Add flavor argument to loadbalancer v2 create Builds on cli changes for Neutron flavor framework, which have now been merged. The '--flavor' argument takes a flavor name or id, looking up the id from name if needed. The loadbalancer v2 service can be configured to use the flavor to find the operator-selected provider and populate the provider field, enabling dynamic operator control of which provider is being used on creation. Change-Id: I02ed05d56fab4d0f60a8616978970336b4415f2c Implements: blueprint neutron-flavor-framework --- neutronclient/neutron/v2_0/lb/v2/loadbalancer.py | 8 ++++++++ neutronclient/tests/unit/lb/v2/test_cli20_loadbalancer.py | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/neutronclient/neutron/v2_0/lb/v2/loadbalancer.py b/neutronclient/neutron/v2_0/lb/v2/loadbalancer.py index be70c4e..dc5be00 100644 --- a/neutronclient/neutron/v2_0/lb/v2/loadbalancer.py +++ b/neutronclient/neutron/v2_0/lb/v2/loadbalancer.py @@ -55,6 +55,9 @@ class CreateLoadBalancer(neutronV20.CreateCommand): parser.add_argument( '--provider', help=_('Provider name of load balancer service.')) + parser.add_argument( + '--flavor', + help=_('ID or name of flavor.')) parser.add_argument( '--vip-address', help=_('VIP address for the load balancer.')) @@ -67,6 +70,11 @@ class CreateLoadBalancer(neutronV20.CreateCommand): self.get_client(), 'subnet', parsed_args.vip_subnet) body = {'vip_subnet_id': _subnet_id, 'admin_state_up': parsed_args.admin_state} + if parsed_args.flavor: + _flavor_id = neutronV20.find_resourceid_by_name_or_id( + self.get_client(), 'flavor', parsed_args.flavor) + body['flavor_id'] = _flavor_id + neutronV20.update_dict(parsed_args, body, ['description', 'provider', 'vip_address', 'tenant_id', 'name']) diff --git a/neutronclient/tests/unit/lb/v2/test_cli20_loadbalancer.py b/neutronclient/tests/unit/lb/v2/test_cli20_loadbalancer.py index 3f34b3c..e96df15 100644 --- a/neutronclient/tests/unit/lb/v2/test_cli20_loadbalancer.py +++ b/neutronclient/tests/unit/lb/v2/test_cli20_loadbalancer.py @@ -44,13 +44,14 @@ class CLITestV20LbLoadBalancerJSON(test_cli20.CLITestV20Base): cmd = lb.CreateLoadBalancer(test_cli20.MyApp(sys.stdout), None) name = 'lbaas-loadbalancer-name' description = 'lbaas-loadbalancer-desc' + flavor_id = 'lbaas-loadbalancer-flavor' vip_subnet_id = 'vip-subnet' my_id = 'my-id' args = ['--admin-state-down', '--description', description, - '--name', name, vip_subnet_id] + '--name', name, '--flavor', flavor_id, vip_subnet_id] position_names = ['admin_state_up', 'description', 'name', - 'vip_subnet_id'] - position_values = [False, description, name, vip_subnet_id] + 'flavor_id', 'vip_subnet_id'] + position_values = [False, description, name, flavor_id, vip_subnet_id] self._test_create_resource(resource, cmd, name, my_id, args, position_names, position_values, cmd_resource=cmd_resource)