From 98f7c574a692556bc330c228a8b89df871e47633 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Wed, 9 Jan 2019 20:50:18 -0800 Subject: [PATCH] Add load balancer flavor support to the OSC client This patch adds the flavor fields for load balancers. It also adds .stestr to the .gitigonre list. Change-Id: I9153895eb5e7ebba50a2c31b5375ecf173d8bfa2 --- .gitignore | 1 + octaviaclient/osc/v2/constants.py | 2 +- octaviaclient/osc/v2/load_balancer.py | 10 ++++++++ octaviaclient/osc/v2/utils.py | 7 +++++- octaviaclient/tests/unit/osc/v2/constants.py | 1 + .../tests/unit/osc/v2/test_load_balancer.py | 24 +++++++++++++++++-- .../notes/add-lb-flavor-b917faa0298c3a74.yaml | 4 ++++ 7 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 releasenotes/notes/add-lb-flavor-b917faa0298c3a74.yaml diff --git a/.gitignore b/.gitignore index 4f3911d..953bcc6 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ cover/ nosetests.xml .testrepository .venv +.stestr # Translations *.mo diff --git a/octaviaclient/osc/v2/constants.py b/octaviaclient/osc/v2/constants.py index cc516b9..2c3b3ee 100644 --- a/octaviaclient/osc/v2/constants.py +++ b/octaviaclient/osc/v2/constants.py @@ -16,7 +16,7 @@ LOAD_BALANCER_ROWS = ( 'admin_state_up', 'created_at', 'description', - 'flavor', + 'flavor_id', 'id', 'listeners', 'name', diff --git a/octaviaclient/osc/v2/load_balancer.py b/octaviaclient/osc/v2/load_balancer.py index 25234a5..5941d72 100644 --- a/octaviaclient/osc/v2/load_balancer.py +++ b/octaviaclient/osc/v2/load_balancer.py @@ -113,6 +113,11 @@ class CreateLoadBalancer(command.ShowOne): default=None, help="Disable load balancer." ) + parser.add_argument( + '--flavor', + metavar='', + help="The name or ID of the flavor for the load balancer." + ) return parser @@ -260,6 +265,11 @@ class ListLoadBalancer(lister.Lister): metavar='', help="List load balancers according to their provider." ) + parser.add_argument( + '--flavor', + metavar='', + help="List load balancers according to their flavor." + ) return parser diff --git a/octaviaclient/osc/v2/utils.py b/octaviaclient/osc/v2/utils.py index e98b337..171a981 100644 --- a/octaviaclient/osc/v2/utils.py +++ b/octaviaclient/osc/v2/utils.py @@ -161,7 +161,12 @@ def get_loadbalancer_attrs(client_manager, parsed_args): 'cascade': ('cascade', lambda x: True), 'provisioning_status': ('provisioning_status', str), 'operating_status': ('operating_status', str), - 'provider': ('provider', str) + 'provider': ('provider', str), + 'flavor': ( + 'flavor_id', + 'flavors', + client_manager.load_balancer.flavor_list + ), } _attrs = vars(parsed_args) diff --git a/octaviaclient/tests/unit/osc/v2/constants.py b/octaviaclient/tests/unit/osc/v2/constants.py index eef665f..dfa7910 100644 --- a/octaviaclient/tests/unit/osc/v2/constants.py +++ b/octaviaclient/tests/unit/osc/v2/constants.py @@ -85,6 +85,7 @@ LOADBALANCER_ATTRS = { "provisioning_status": "ACTIVE", "operating_status": "ONLINE", "provider": "octavia", + "flavor_id": uuidutils.generate_uuid(dashed=True), } L7POLICY_ATTRS = { diff --git a/octaviaclient/tests/unit/osc/v2/test_load_balancer.py b/octaviaclient/tests/unit/osc/v2/test_load_balancer.py index 971e65b..faa16b8 100644 --- a/octaviaclient/tests/unit/osc/v2/test_load_balancer.py +++ b/octaviaclient/tests/unit/osc/v2/test_load_balancer.py @@ -178,6 +178,24 @@ class TestLoadBalancerList(TestLoadBalancer): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist, tuple(data)) + @mock.patch('octaviaclient.osc.v2.utils.get_loadbalancer_attrs') + def test_load_balancer_list_with_flavor(self, mock_client): + mock_client.return_value = { + 'flavor_id': self._lb.flavor_id, + } + arglist = [ + '--flavor', self._lb.flavor_id, + ] + verify_list = [ + ('flavor', self._lb.flavor_id), + + ] + + parsed_args = self.check_parser(self.cmd, arglist, verify_list) + columns, data = self.cmd.take_action(parsed_args) + self.assertEqual(self.columns, columns) + self.assertEqual(self.datalist, tuple(data)) + class TestLoadBalancerDelete(TestLoadBalancer): @@ -225,11 +243,13 @@ class TestLoadBalancerCreate(TestLoadBalancer): mock_client.return_value = self.lb_info arglist = ['--name', self._lb.name, '--vip-network-id', self._lb.vip_network_id, - '--project', self._lb.project_id] + '--project', self._lb.project_id, + '--flavor', self._lb.flavor_id] verifylist = [ ('name', self._lb.name), ('vip_network_id', self._lb.vip_network_id), - ('project', self._lb.project_id) + ('project', self._lb.project_id), + ('flavor', self._lb.flavor_id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) diff --git a/releasenotes/notes/add-lb-flavor-b917faa0298c3a74.yaml b/releasenotes/notes/add-lb-flavor-b917faa0298c3a74.yaml new file mode 100644 index 0000000..df8bf70 --- /dev/null +++ b/releasenotes/notes/add-lb-flavor-b917faa0298c3a74.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Adds the ``flavor`` option to loadbalancer create and loadbalancer list.