Bug 1478116 - Unable to manage load balancer V2 quotas with neutron quota-update command
Unable to manage load balancer V2 quotas with neutron quota-update command
Status: CLOSED ERRATA
Product: Red Hat OpenStack
Classification: Red Hat
Component: python-neutronclient (Show other bugs)
8.0 (Liberty)
Unspecified Unspecified
medium Severity medium
: zstream
: 8.0 (Liberty)
Assigned To: Nir Magnezi
Ofer Blaut
: Triaged, ZStream
Depends On:
Blocks: 1381612
  Show dependency treegraph
 
Reported: 2017-08-03 11:31 EDT by Punit Kundal
Modified: 2017-10-25 13:03 EDT (History)
6 users (show)

See Also:
Fixed In Version: python-neutronclient-3.1.0-4.el7ost
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1482587 1482671 1482684 (view as bug list)
Environment:
Last Closed: 2017-10-25 13:03:35 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Punit Kundal 2017-08-03 11:31:01 EDT
Description of problem:

Unable to manage load balancer V2 quotas with neutron quota-update command

Version-Release number of selected component (if applicable):

[root@overcloud-controller-0 ~]# rpm -qa | grep neutron
openstack-neutron-bigswitch-agent-2015.3.8-1.el7ost.noarch
python-neutron-7.2.0-10.el7ost.noarch
openstack-neutron-lbaas-7.2.0-2.el7ost.noarch
openstack-neutron-common-7.2.0-10.el7ost.noarch
python-neutronclient-3.1.0-3.el7ost.noarch
openstack-neutron-ml2-7.2.0-10.el7ost.noarch
openstack-neutron-metering-agent-7.2.0-10.el7ost.noarch
python-neutron-lbaas-7.2.0-2.el7ost.noarch
openstack-neutron-7.2.0-10.el7ost.noarch
openstack-neutron-openvswitch-7.2.0-10.el7ost.noarch
openstack-neutron-bigswitch-lldp-2015.3.8-1.el7ost.noarch


How reproducible:
Always 


Steps to Reproduce:

Created 2 lab setups with RHOSP 8, one having LBaaS V1 enabled and other one having LBaaS V2 enabled

+++
[stack@instack ~]$ neutron agent-list
+--------------------------------------+--------------------+------------------------------------+-------+----------------+---------------------------+
| id                                   | agent_type         | host                               | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+------------------------------------+-------+----------------+---------------------------+
| 48a9423a-6f04-4e44-9f72-50ae0fdaab51 | Metadata agent     | overcloud-controller-0.localdomain | :-)   | True           | neutron-metadata-agent    |
| 4a35c99b-9263-45b8-ae37-f0e2b80fb652 | Open vSwitch agent | overcloud-compute-0.localdomain    | :-)   | True           | neutron-openvswitch-agent |
| 586d62c9-d487-4943-b08c-56231b896dbc | Loadbalancer agent | overcloud-controller-0.localdomain | :-)   | True           | neutron-lbaas-agent       |
| c26298f9-040b-4488-a5c8-4c74b008db08 | DHCP agent         | overcloud-controller-0.localdomain | :-)   | True           | neutron-dhcp-agent        |
| cc2b8eaa-b11a-4411-b709-cd75954c44e2 | Open vSwitch agent | overcloud-controller-0.localdomain | :-)   | True           | neutron-openvswitch-agent |
| dbe73526-a06b-4de7-af13-80402f2be0c5 | L3 agent           | overcloud-controller-0.localdomain | :-)   | True           | neutron-l3-agent          |
+--------------------------------------+--------------------+------------------------------------+-------+----------------+---------------------------+
+++

+++
[stack@instack ~]$ neutron agent-list
+--------------------------------------+----------------------+------------------------------------+-------+----------------+---------------------------+
| id                                   | agent_type           | host                               | alive | admin_state_up | binary                    |
+--------------------------------------+----------------------+------------------------------------+-------+----------------+---------------------------+
| 2809e67f-96bc-490c-b905-9a2883b5ffb6 | Loadbalancerv2 agent | overcloud-controller-0.localdomain | :-)   | True           | neutron-lbaasv2-agent     |
| 473f6f6b-7ca8-4c07-bf4d-7c1271de93b7 | Open vSwitch agent   | overcloud-compute-0.localdomain    | :-)   | True           | neutron-openvswitch-agent |
| 8b9f55f1-e965-422d-844f-afc6968b6b91 | L3 agent             | overcloud-controller-0.localdomain | :-)   | True           | neutron-l3-agent          |
| a66a3630-0c00-480d-ad44-8159b35edf20 | Metadata agent       | overcloud-controller-0.localdomain | :-)   | True           | neutron-metadata-agent    |
| afa7e455-4bc3-4ffb-ba95-5bc00b7fadf9 | DHCP agent           | overcloud-controller-0.localdomain | :-)   | True           | neutron-dhcp-agent        |
| ef226d15-6223-4dc0-b25e-0bd27c54ea59 | Open vSwitch agent   | overcloud-controller-0.localdomain | :-)   | True           | neutron-openvswitch-agent |
+--------------------------------------+----------------------+------------------------------------+-------+----------------+---------------------------+
+++

After this, I tried update the quotas with neutron quota-update command as follows:

quota-update operation with LBaaS V1 agent enabled:

+++
[stack@instack ~]$ source overcloudrc 

[stack@instack ~]$ neutron quota-update --vip 50
+---------------------+-------+
| Field               | Value |
+---------------------+-------+
| floatingip          | 50    |
| health_monitor      | 20    |
| member              | 20    |
| network             | 10    |
| pool                | 10    |
| port                | 50    |
| rbac_policy         | 10    |
| router              | 10    |
| security_group      | 10    |
| security_group_rule | 100   |
| subnet              | 10    |
| subnetpool          | -1    |
| vip                 | 50    |
+---------------------+-------+

[stack@instack ~]$ neutron quota-update --pool 50
+---------------------+-------+
| Field               | Value |
+---------------------+-------+
| floatingip          | 50    |
| health_monitor      | 20    |
| member              | 20    |
| network             | 10    |
| pool                | 50    |
| port                | 50    |
| rbac_policy         | 10    |
| router              | 10    |
| security_group      | 10    |
| security_group_rule | 100   |
| subnet              | 10    |
| subnetpool          | -1    |
| vip                 | 50    |
+---------------------+-------+

[stack@instack ~]$ neutron quota-update --member 50
+---------------------+-------+
| Field               | Value |
+---------------------+-------+
| floatingip          | 50    |
| health_monitor      | 20    |
| member              | 50    |
| network             | 10    |
| pool                | 50    |
| port                | 50    |
| rbac_policy         | 10    |
| router              | 10    |
| security_group      | 10    |
| security_group_rule | 100   |
| subnet              | 10    |
| subnetpool          | -1    |
| vip                 | 50    |
+---------------------+-------+

[stack@instack ~]$ neutron quota-update --health-monitor 50
+---------------------+-------+
| Field               | Value |
+---------------------+-------+
| floatingip          | 50    |
| health_monitor      | 50    |
| member              | 50    |
| network             | 10    |
| pool                | 50    |
| port                | 50    |
| rbac_policy         | 10    |
| router              | 10    |
| security_group      | 10    |
| security_group_rule | 100   |
| subnet              | 10    |
| subnetpool          | -1    |
| vip                 | 50    |
+---------------------+-------+
+++
It appears that quota-update operations are working fine with LBaaS V1.

quota-update operations on LBaaS V2:

+++
[stack@instack ~]$ neutron quota-update --member 10
Unrecognized attribute(s) 'member'

[stack@instack ~]$ neutron quota-update --health-monitor 20
Unrecognized attribute(s) 'health_monitor'

[stack@instack ~]$ neutron quota-update --vip 20   <- actually not needed, just tested it for completeness
Unrecognized attribute(s) 'vip'

surprisingly, the pool quota could be update without any issues:

 [stack@instack ~]$ neutron quota-update --pool 50  <- this is what is even more confusing
+---------------------+-------+
| Field               | Value |
+---------------------+-------+
| floatingip          | 50    |
| healthmonitor       | -1    |
| listener            | -1    |
| loadbalancer        | 10    |
| network             | 10    |
| pool                | 50    |
| port                | 50    |
| rbac_policy         | 10    |
| router              | 10    |
| security_group      | 10    |
| security_group_rule | 100   |
| subnet              | 10    |
| subnetpool          | -1    |
+---------------------+-------+

[stack@instack ~]$ openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| a1ebc10be9a54647b0f72afe5c1922c7 | admin   |
| 253764fbe5104b27a46cfdccaa0a569c | service |
+----------------------------------+---------+

[stack@instack ~]$ neutron quota-update --tenant-id a1ebc10be9a54647b0f72afe5c1922c7 --pool 50
+---------------------+-------+
| Field               | Value |
+---------------------+-------+
| floatingip          | 50    |
| healthmonitor       | -1    |
| listener            | -1    |
| loadbalancer        | 10    |
| network             | 10    |
| pool                | 50    |
| port                | 50    |
| rbac_policy         | 10    |
| router              | 10    |
| security_group      | 10    |
| security_group_rule | 100   |
| subnet              | 10    |
| subnetpool          | -1    |
+---------------------+-------+

[stack@instack ~]$ neutron quota-update --tenant-id a1ebc10be9a54647b0f72afe5c1922c7 --member 50
Unrecognized attribute(s) 'member'
+++

From the above results, it can be seen that, quota-update operations are working but only for LBaaS V1 agent and not the V2 agent.


Actual results:

can not update lbaas v2 quotas with neutron quota-update

I can't find any option for setting quota of loadbalancer either

[stack@instack ~]$ neutron help quota-update
usage: neutron quota-update [-h]
                            [-f {html,json,json,shell,table,value,yaml,yaml}]
                            [-c COLUMN] [--max-width <integer>] [--noindent]
                            [--prefix PREFIX] [--request-format {json,xml}]
                            [--tenant-id tenant-id] [--network networks]
                            [--subnet subnets] [--port ports]
                            [--router routers] [--floatingip floatingips]
                            [--security-group security_groups]
                            [--security-group-rule security_group_rules]
                            [--vip vips] [--pool pools] [--member members]
                            [--health-monitor health_monitors]


Expected results:

quota update operations should work when lbaas v2 agent is running

Additional info:

package versions from customer environment:

# rpm -qa | grep neutron
openstack-neutron-metering-agent-7.2.0-9.el7ost.noarch
openstack-neutron-linuxbridge-7.2.0-9.el7ost.noarch
neutron-opflex-agent-2015.2.3-35.el7.noarch
neutron-ml2-driver-apic-2015.2.5-95.el7.noarch
python-neutron-7.2.0-9.el7ost.noarch
python-neutronclient-3.1.0-2.el7ost.noarch
openstack-neutron-common-7.2.0-9.el7ost.noarch
openstack-neutron-7.2.0-9.el7ost.noarch
python-neutron-lbaas-7.2.0-3.el7ost.noarch
openstack-neutron-openvswitch-7.2.0-9.el7ost.noarch
openstack-neutron-lbaas-7.2.0-3.el7ost.noarch
openstack-neutron-ml2-7.2.0-9.el7ost.noarch


Please let me know if any other information is required.
Comment 5 Nir Magnezi 2017-08-21 10:08:47 EDT
Hi,

We are very close to resolving this.
My investigation shows that we'll need to cherry-pick

client:
https://review.openstack.org/#/c/356862/
https://review.openstack.org/#/c/371297/

neutron-lbaas bugs:
https://review.openstack.org/#/c/373135/
https://review.openstack.org/#/c/368217/

Internal tests show that when all 4 patches are included, quota updates work as expected:

---------------------+-------+
| Field               | Value |
+---------------------+-------+
| floatingip          | 50    |
| healthmonitor       | 1234  |
| listener            | 1234  |
| loadbalancer        | 1234  |
| member              | 1234  |
| network             | 10    |
| pool                | 1234  |
| port                | 50    |
| rbac_policy         | 10    |
| router              | 10    |
| security_group      | 10    |
| security_group_rule | 100   |
| subnet              | 10    |
| subnetpool          | -1    |
+---------------------+-------+
Comment 9 Nir Magnezi 2017-08-24 05:18:35 EDT
Please note that this fix consists of both neutronclient and neutron-lbaas patches. Thus, one should update both packages:

1. Client: python-neutronclient-3.1.0-4.el7ost
2. neutron-lbaas: as specified in bug 1482671
Comment 13 errata-xmlrpc 2017-10-25 13:03:35 EDT
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2017:3066

Note You need to log in before you can comment on or make changes to this bug.