Add a gate-specific tox env for functional tests

The functional gate jobs (*-neutron-dsvm-functional) need special
configuration (e.g. OS_SUDO_TESTING, OS_ROOTWRAP_CMD) to run tests.
This patch adds a new gate-specific tox env (tox -e dsvm-functional)
that sets the appropriate values and allows easy duplication of the
results of the upstream job on a host that has successfully run
devstack with neutron enabled.

A new configuration option, OS_FAIL_ON_MISSING_DEPS, is also set by
the dsvm-functional tox env to ensure that dependency failures will
result in failures rather than skips when run in the gate.

Change-Id: Idbfef1ba72ed129a3021509c7969e2685b8a6d09
Partial-bug: #1336172
Validate expected parameters in add/remove router interfaces

The add and remove router interface methods check that interface_info
is not empty but don't check if it contains any of expected parameters:
port_id and subnet_id
This patch adds a helper method to validate that interface_info contains
at least one of the expected parameters
Include a unit test for the empty port_id and subnet_id case

Closes-Bug: #1325982

Change-Id: Ia370565235a33a847704b972c875d8f1573306c0
Fix incorrect default paramater in migration

Migration 5446f2a45467_set_server_default try to set incorrect default
boolean value on Integer column cisco_network_profiles.

Closes-bug: #1341518

Change-Id: I594a6811af23fced7105252f47d72232bf37184c
Dnsmasq config files syntax issue when dhcp_domain is empty

When using dhcp-agent with the following property dhcp_domain=""
addn_hosts and host files genererated for Dnsmasq have wrong syntax
concerning hostname parameter (dot char at the end).

As described in RFC-952 the hostname grammar is as follows:
<hname> ::= <name>*["."<name>]
<name>  ::= <let>[*[<let-or-digit-or-hyphen>]<let-or-digit>]
Hence it can't be conclude with a dot char.

Dnsmasq process is waiting for a hostname (2nd parameter) in the
following files:
"addn_hosts" file contains:
   20.0.0.3 host-20-0-0-3. host-20-0-0-3
"host" file contains:
   fa:16:3e:bf:e1:e4,host-20-0-0-3.,20.0.0.3

With the patch you will get:
"addn_hosts":
   20.0.0.3 host-20-0-0-3 host-20-0-0-3
"host":
   fa:16:3e:bf:e1:e4,host-20-0-0-3,20.0.0.3

Change-Id: I4c10169019becaed6b2968b74f03ef356244a057
Closes-Bug: #1326256
Allow to import _LC, _LE, _LI and _LW functions directly

_LC, _LE, _LI, _LW are translation helper functions. This change updates
hacking rules to allow importing them directly:

    from neutron.openstack.common.gettextutils import _LC
    from neutron.openstack.common.gettextutils import _LE
    from neutron.openstack.common.gettextutils import _LI
    from neutron.openstack.common.gettextutils import _LW

neutron.policy module has been updated as an example of _LE, _LI and
_LW uses.

Change-Id: I11cba6bca48a179945385fce69e6f642270f5563
Fix DVR regression for ofagent

Background:
    ML2 plugin sometimes uses truncated port uuids.
    For example, in the case of ofagent and linuxbridge,
    if port id is 804ceaa1-0e3e-11e4-b537-08606e7f74e7,
    an agent would send "tap804ceaa1-0e" to the plugin.
    ML2 plugin's _device_to_port_id() would restore it to
    "804ceaa1-0e".  While it's still truncated, ML2 plugin's
    get_port() handles that by using "startswith".

The recently merged DVR change (https://review.openstack.org/#/c/102332/)
assumes that port_id is always a complete uuid (it's the case
for openvswitch) and fails to handle the above mentioned case.
This commit fixes the regression.

Change-Id: I9c0845be606969068ab5d13c0165e76760378500
Closes-Bug: #1343750
Merge "Allow to import _LC, _LE, _LI and _LW functions directly"
Merge "Fix DVR regression for ofagent"
Merge "Fix incorrect default paramater in migration"
Merge "Dnsmasq config files syntax issue when dhcp_domain is empty"
Merge "Add a gate-specific tox env for functional tests"
Merge "Validate expected parameters in add/remove router interfaces"