Allow setting a tenant router's external IP

Adds an external_ip option to the router creation
and update operations to set the IP address the router
will try to use as its fixed IP on the external network
it's attached to. By default this is restricted to an
admin-only operation by policy.json.

DocImpact
ApiImpact

Implements: blueprint specify-router-ext-ip
Closes-Bug: #1188427
Change-Id: Iba7c606eea48181fc10e9d0d5dc667e6f48f37de
linuxbridge: Use lazy logging interpolation

There are a small number of examples of "eager" interpolation in
neutron:
  logging.debug("foo %s" % arg)

These should be converted to perform the interpolation lazily within
the logging function, since if the severity is below the logging level
then the interpolation can be skipped entirely.

This change addresses all such examples found in linuxbridge agent via a
pylint test.  Other occurrences are addressed elsewhere.

Change-Id: I5cb3bbb401f5049760dfe5263a52bd43f23dcfd4
Partial-Bug: #1404788
brocade: Use lazy logging interpolation

There are a small number of examples of "eager" interpolation in
neutron:
  logging.debug("foo %s" % arg)

These should be converted to perform the interpolation lazily within
the logging function, since if the severity is below the logging level
then the interpolation can be skipped entirely.

This change addresses all such examples found in brocade
l3_router_plugin via a pylint test.  Other occurrences are addressed
elsewhere.

Change-Id: Ia2d51e8ecbc7af81390577ec69c5ce18523b65f3
Partial-Bug: #1404788
VMware: fix security group check on port create

The code did not consider an empty list among the cases
in which security groups are not supplied on port create.

Change-Id: I325cce2165d2ec683ecac3cabdbfb80a03b288c9
Closes-Bug: #1405311
Merge "VMware: fix security group check on port create"
Merge "linuxbridge: Use lazy logging interpolation"
Merge "brocade: Use lazy logging interpolation"
Merge "Allow setting a tenant router's external IP"