Kevin Benton [Thu, 24 Dec 2015 08:54:06 +0000 (00:54 -0800)]
Call _allocate_vr_id outside of transaction
_allocate_vr_id is called from _set_vr_id, which was starting a
transaction before calling it. This caused an error when the retry
logic was triggered inside of _allocate_vr_id since it would
encounter a DB exception and put the transaction into a bad state
that couldn't be used on the retry.
This patch just stops _set_vr_id from starting a transaction because
it didn't serve a purpose. It also stops _allocate_vr_id from allowing
subtransactions when it starts a transaction, since it's retry logic
isn't compatible with them.
Co-Authored-By: Ann Kamyshnikova <akamyshnikova@mirantis.com>
Closes-Bug: #1528201
Change-Id: If7bcae39098f40f5ee9db78d3190bf9fdaf6438b
Carl Baldwin [Wed, 23 Dec 2015 17:16:15 +0000 (10:16 -0700)]
Add address scope to floating IPs in RPC response to L3 agent
The L3 agent needs to know the address scope of the fixed ip of each
floating ip because floating ips are a way to cross scope boundaries.
Without the scope information, there could be ambiguity and no way to
know which scope to send it to.
lzklibj [Thu, 17 Dec 2015 04:07:32 +0000 (12:07 +0800)]
update docstring for get_ports_on_host_by_subnet
This patch updates docstring for get_ports_on_host_by_subnet, to
tell that the method will only get dvr serviced ports, not all ports
for given subnet and host.
Akihiro Motoki [Tue, 22 Dec 2015 10:14:37 +0000 (19:14 +0900)]
Restore _validate_subnet/uuid_list not to break subproject gates
https://review.openstack.org/#/c/258867/ removed
_validate_subnet_list and _validate_uuid_list.
_validate_subnet_list is being used in VPNaaS and VPNaaS gate
is now broken. We need to remove validators more carefully
because subprojects may use them.
This commit restores them once.
DVR:Fix _notify_l3_agent_new_port for proper arp update
Now with notifications coming from ml2 plugin on port create
and port update, it is worth fixing the existing _notify_
l3_agent_new_port for proper arp update and router scheduling.
Previously we have been sending arp update and calling router
scheduling for every update notification for service ports,
but now we can take necessary action only when required, since
the fix to update the arp and router scheduling was recently
done by sending the port info for every new port created.
When _notify_l3_agent_port_update is triggered, we check if the
original port host binding exists and if there is a change in
host binding with respect to the new port, then we go ahead and
reschedule the router on the new host and flush the arp entry.
rossella [Mon, 14 Dec 2015 12:31:17 +0000 (12:31 +0000)]
Don't raise if polling manager is running when stopped
AsyncProcess.stop() will raise if the process we are trying
to stop is not running. Some functional tests sporadically
fail because in the clean up the polling manager is stopped
without checking if it's still running. Add an except
in InterfacePollingMinimizer.stop() to avoid raising an
exception when the monitor is not running.
Sreekumar S [Wed, 16 Dec 2015 21:04:33 +0000 (02:34 +0530)]
Corrected wrong ethertype exception message
This patch resolves the issue where wrong message was being
shown when ethertype input parameter was not amongst one of
the types supported. New message made akin to other input
parameters like 'protocol'.
Gary Kotton [Sun, 13 Dec 2015 12:52:27 +0000 (04:52 -0800)]
Use the constant HOST_ID instead of 'binding:host_id'
This patch makes use of the constant defined in the extension.
In addition to this having value of debing defined in one place it
also enables the caller to understand that the portbindings
extension is required.
Note: the constant is not used in the API tests. This has import
issues so it is not relevant.
Assaf Muller [Sat, 19 Dec 2015 19:13:43 +0000 (14:13 -0500)]
Force L3 agent to resync router it could not configure
If the L3 agent fails to configure a router, commit: 4957b5b43521a61873a041fe3e8989ed399903d9 changed it so
that instead of performing an expensive full sync, only that
router is reconfigured. However, it tries to reconfigure the
cached router. This is a change of behavior from the fullsync
days. The retry is more likely to succeed if the
router is retrieved from the server, instead of using
the locally cached version, in case the user or operator
fixed bad input, or if the router was retrieved in a bad
state due to a server-side race condition.
Note that this is only relevant to full syncs, as those retrieve
routers from the server and queue updates with the router object.
Incremental updates queue up updates without router objects,
so if one of those fails it would always be resynced on a
second attempt.
Add notes on loading strategies for ORM relationships
There have been a number of regressions caused by our inability
to thoroughly review relatiohships' loading strategies. We should
at least make an attempt to remind ourselves, and since I am guilty
as charged, this patch is my attempt to redemption.
Ihar Hrachyshka [Thu, 17 Dec 2015 13:38:08 +0000 (14:38 +0100)]
Enable Guru Meditation Reports for other refarch agents
OVS agent already supports GMR, but LinuxBridge and SR-IOV agents don't.
To enable them for those agents, we should move their main() entry
points under neutron/cmd/, so that __init__.py code that initializes
them is triggered on their invocation.
Since we put their entrypoints under neutron/cmd/eventlet/, there is now
also no need to explicitly monkey patch stdlib for eventlet in the
agents code (neutron/cmd/eventlet/__init__.py already does it for us).
With that, there is no more code in the tree that directly patches
stdlib except neutron/cmd/eventlet/__init__.py.
Also removed a way to execute agent modules as scripts since it's not a
supported way to invoke them (instead, stevedore generated console
scripts should always be used).
LIU Yulong [Tue, 8 Dec 2015 06:13:44 +0000 (14:13 +0800)]
Catch known exceptions during deleting last HA router
In some scenarios, for instance rally test create_and_delete_routers,
it will get some exceptions, such as the network in use exception,
during the router deleting api call, but actually the router has
been deleted. There has race between HA router create and delete,
if set more api and rpc worker race raises exception more frequently.
Because the inconsistent error message was not useful for user,
this patch will catch those know exceptions ObjectDeletedError,
NetworkInUse when user delete last HA router.
At the same time, when user create the first HA router, but because
of the failure of HA network creation, the router will be deleted,
then the deleting HA network will raise AttributeError, this patch
also move HA network deleting procedure under ha_network exist check
block.
Hong Hui Xiao [Wed, 4 Nov 2015 06:44:43 +0000 (01:44 -0500)]
Kill the vrrp orphan process when (re)spawn keepalived
When keepalived crashed unexpectedly, the vrrp process that
it associates with will be orphan process. This will make
the VIP unable to migrate to the router in the same host.
Also, neutron code is not able to respawn the keepalived
process, because keepalived thinks itself is still running,
according to [1-3]. As a result, neutron will report respawning
keepalived all the time. Restart l3-agent will not help.
This patch will check and delete the orphan vrrp process
if there is any, in the processmonitor of l3 agent.
More details can be found in the bug description and comments.
Bo Chi [Thu, 10 Dec 2015 13:42:26 +0000 (08:42 -0500)]
reject leading '0's in IPv4 addr to avoid ambiguity
If a IPv4 address has a leading '0', it will be interpreted as an
octal number, e.g. 10.0.0.011 will be interpreted as 10.0.0.9.
Users who are not familiar with or not expecting octal interpretation
will not get the address they intended. Since there is no standard
around this, we reject leading '0's to avoid ambiguity.
AKamyshnikova [Wed, 16 Dec 2015 12:32:45 +0000 (15:32 +0300)]
Fix comparison of Variant and other type in test_model_sync
Tests TestModelsMigrations failed on comparation Variant type and
BigInteger after alembic 0.8.4 release.
Current change corrected compare_type for such case.
Kevin Benton [Wed, 16 Dec 2015 06:49:50 +0000 (22:49 -0800)]
Use a joined relationship for AZ info on routers
This patch adds a joined relationship from the routers
to the agent table to prevent excessive DB lookups of the
agent availability zones during router listings.
This fix is the same as the one for networks here:
I908ceb1a68e0eed7c304e3ff82279ad6fa406167
A follow-up patch will add an AZ table so this doesn't
have to join directly to the agents table.
Right now we have seen some performance issues when
dvr routers are scheduled on multiple compute nodes
with thousands of VMs on the routed subnets.
The _get_candidates call get_l3_agent_candidates with
a complete list of agents irrespective of the routers
already hosted on the agents or not.
So this fix will reduce the amount of iterations that
get_l3_agent_candidates need to process for all the
agents and would increase the control plane performance.
This fixes an issue where the lb agent did not plug the
dhcp tap device into the bridge when having vlan networking
set up. Caused by setting of disable_ipv6 value.
Closes-Bug: #1520618
Change-Id: I0d21fad3a676d1fdd30501ea6a295f1e9b207a3a Co-Authored-By: Brian Haley <brian.haley@hpe.com>
Kevin Benton [Fri, 11 Dec 2015 17:56:01 +0000 (09:56 -0800)]
Separate rbac calculation from _make_network_dict
When a subnet dict was being created, it was calling
_make_network_dict to get the 'shared' flag for the
subnet. The issue with this is that the _make_network_dict
function would iterate over the subnets on the passed in
network object, which would trigger a database lookup
of all of the subnets.
This patch just separates the 'shared' flag calculation out
into a separate function that both calls can leverage.
Ryan Tidwell [Sat, 10 Oct 2015 00:07:51 +0000 (17:07 -0700)]
Add explicit address family to AddressScope
Adds an ip_version field for enforcing an address family on
an AddressScope. All SubnetPools in an AddressScope must be
from the same address family. A SubnetPool cannot be created
in an AddressScope with a different address family.
Oleg Bondarev [Thu, 22 Oct 2015 10:23:21 +0000 (13:23 +0300)]
DVR: handle dvr serviceable port's host change
When a VM port's host is changed we need to check if a router
should be unscheduled from old host and send corresponding
notifications.
commit d5a8074ec3c67ed68e64a96827da990f1c34e10f added such
a check when port is unbound. This patch adds similar check
in case of host change (instance live migration)
Brent Eagles [Mon, 9 Nov 2015 12:56:53 +0000 (09:26 -0330)]
Adding a VNIC type for physical functions
This change adds a new VNIC type to distinguish between virtual and
physical functions in SR-IOV.
The new VNIC type 'direct-physical' deviates from the behavior of
'direct' VNICs for virtual functions. While neutron tracks the resource
as a port, it does not currently perform any management functions.
Future changes may extend the segment mapping functionality that is
currently based on agent configuration to include direct types.
However, the direct-physical VNICs will not have functional parity with
the other SR-IOV VNIC types in that quality of service and port security
functionality is not available.
APIImpact
DocImpact: Add description for new 'direct-physical' VNIC type.
Paul Michali [Mon, 7 Dec 2015 20:05:35 +0000 (15:05 -0500)]
Removing adv svcs dependencies on neutron
After upstreaming Idcfeee6ddc2982fff49f44064c918bfd4627be12 and
I62bfd6b34c381427425ca2a656e5782087de3a3b, we can remove items
from Neutron.
Specifically, LOADBALANCER_PLUGIN and LOADBALANCER_AGENT are not
used now. FIREWALL_PLUGIN is used in one module, so moved there.
The LOADBALANCER constant is only used in test files, but it is
used in multiple files, so leaving it. LOADBALANCERV2 is only used
in the header it is defined, so leaving it as well.
In the FW and LB repos, there are no longer dependency on these literals.
fumihiko kakuma [Wed, 9 Dec 2015 04:00:39 +0000 (13:00 +0900)]
Decompose OFAgent mechanism driver from neutron tree completely
All 3rd-party code is required to be removed from the neutron tree.
This change removes definition for ofagent mechanism driver from
neutron repository.