session_persistence: invalid str2dict value: u''

Can't receive empty session_persistence dict to update the vip.
It would raise the following error:

$ neutron lb-vip-update vip --session_persistence type=dict ""
usage: neutron [--session_persistence SESSION_PERSISTENCE]
neutron: error: argument --session_persistence: invalid str2dict value: u''

Change-Id: Ice43bbe19138be6af85b47c2090359d22c70b29f
Closes-Bug: #1262582
Support building wheels (PEP-427)

Universal is used to identify pure-Python module(by bdist_wheel). For
these, it is sufficient to build a wheel with _any_ Python ABI version
and publish that to PyPI (by whatever means).

Change-Id: I3dd06b63d2fdcce8961f87fe1d71be052cb0fdf0
Extending quota support neutron LBaaS entities

Note: This change is a continuation of the abandoned
      change https://review.openstack.org/#/c/59192/
      Previous change was abandoned due to rebase problem.

Extending quota mechanism to support neutron
LBaaS entities. Adding quota for vips, pools, members
and health monitors.

This is one of four changes related to the BP.
This one is for python-neutronclient package.
Another one is for neutron project, another for tempest project
and another one for horizon/openstack-dashboard project.

See blueprint neutron-quota-extension for another two changes.

Change-Id: I2bfb974d513bd21b4dac6c90ddc6ede19797caf9
Implements: blueprint neutron-quota-extension
Enable hacking H233 rule

H233: Python 3.x incompatible use of print operator

Change-Id: I7acd664b888c0ba049524e5f519c72038d79495b
Remove unused imports

Remove unused imports in doc/source/conf.py

Change-Id: Ia21f8952b36ae74b1c2d3bfd10c0a4a04a390faa
Closes-Bug: #1265266
Adds delete of extra-dhcp-opt to the client

Add support to delete existing extra-dhcp-opt(s) for a port
via the port-update operation. To use it, set the opt_value=null
of the opt_name that you want deleted (i.e. neutron port-update
--extra-dhcp-opt opt_name=tftp-server,opt_value=null), which will
delete this DHCP option from the port.

Change-Id: I9c2c2474b2bfe8c8f8c3c3cc1513d2b999643d14
Closes-Bug: 1228008
Replace assertEqual(None, *) with assertIsNone in tests

Replace assertEqual(None, *) with assertIsNone in tests to have
more clear messages in case of failure.

Change-Id: I442951deb2bc6df199a1dd76142f71fc92e6f745
Closes-Bug:#1280522
Enable to select specific network service type

Network service type is selected as 'network' statically.
This will select the service_type from environment variables or CLI options.
The option works like the service type option in the novaclient.

Implements blueprint specify-service-type
Change-Id: If21bd2b5cb35da5bcabca79aa0567870331a3a6f
Python 3: fix a call to ugettext()

In Python 3, ugettext() does not exist and gettext() should be used instead.

Closes-Bug: 128485
Change-Id: Id9f51f0d630ef0c92fc315253c45d3abba356cd1
Print human friendly string as an error message

This commit also removes a blank line displayed
when error_dict['detail'] is empty.

When 403 is returned, Forbidden exception is raised from
HTTPClient (neutronclient/client.py). There is no reason
this exception is raised by it. By this commit v2_0.client
now handles 403 response to show human friendly message
by parsing Neutron 2.0 -specific error format.

Change-Id: Iefbd7db094267fe3799ebf4713e142e62c63174c
Closes-Bug: #1246271
Merge "Enable hacking H233 rule"
Supporting Net-Partition as extension for Nuage plugin

A net-partition provides administrative separation between groups of tenant
routers/networks/subnets. Within a net-partition, subnets can be shared, and
VMs can connect multiple vNICs to subnets within the net-partition.
For security and isolation between organizations, VMs may not connect
VNICs to subnets within more than one net-partition.

This work is in accordance with bp/nuage-networks-plugin which is
under review: https://review.openstack.org/#/c/67272/

Change-Id: Ia9b0304f714c65548cd6b8ce6ff74a3075c4e673
Implements: blueprint nuage-net-partition-extension
Merge "Supporting Net-Partition as extension for Nuage plugin"
New exception when auth_url is not specified

Certain scenarios into the neutron client will not specify the
auth_url.  This is typically when a token is specified.  However, when
the token is expired the neutron client will attempt to refresh the
token.  Users of this may not have passed in all of the required
information for this reauthentication to properly occur.

This code fixes an error that occurs in this flow where the auth_url
(which is None) is appended to another string.  This results in a core
Python error.

The update will provide a more targetted error message specifying to
the user that the auth_url needs to be specified.  An associated unit
test is also included to validate this behavior.

Change-Id: I577ce0c009a9a281acdc238d290a22c5e561ff82
Closes-Bug: #1241275
Updated from global requirements

Change-Id: I24869d188b7ecdc2a08ed10e1aafdeee2914d127
Merge "Adds delete of extra-dhcp-opt to the client"
Merge "Python 3: fix a call to ugettext()"
Use six.moves.urllib.parse to replace urlparse

Import six.moves.urllib.parse as urlparse for python3 compatible.

Change-Id: Icc6dc92c4d4016b8a4f1118220a51415d2b5feb0
Closes-Bug:#1279611
Merge "Print human friendly string as an error message"
Merge "Updated from global requirements"