Sylvain Afchain [Tue, 26 Nov 2013 21:24:33 +0000 (22:24 +0100)]
Add LeastRouters Scheduler to Neutron L3 Agent
Allow scheduling of a virtual router on an L3 Agent node with the least
number of routers currently scheduled. This scheduler can be used
instead of the default random scheduler.
Also refactor the l3_agent_scheduler to allow for adding new schedulers.
Aaron Rosen [Fri, 6 Dec 2013 19:12:33 +0000 (11:12 -0800)]
Remove dead code _arp_spoofing_rule()
This code should have been removed when the allowed_address_pair
extension was added here (0efce6195fa7be80e110bd841dc9b3537a94c376).
The arp spoofing rules are handled in the method _setup_spoof_filter_chain().
Reported by: Amir Sadoughi that this was crud I left behind :)
John Dewey [Fri, 6 Dec 2013 03:35:37 +0000 (19:35 -0800)]
Removed erronus config file comment
The comment stating 'DHCP agents needs it.' with regards to the
rpc_notifier notification_driver is incorrect. Looking through
the code, I see no place this is true. I believe it to be an
error.
This fix improves the unit test coverage for the Cisco Nexus plugin
common modules (directory neutron/plugins/cisco/common) from:
--- cisco_credentials_v2.py 82%
--- cisco_faults.py 0%
--- config.py 84%
To:
--- cisco_credentials_v2.py 100%
--- cisco_faults.py 76%
--- config.py 100%
Ed Bak [Tue, 3 Dec 2013 23:00:23 +0000 (23:00 +0000)]
Change to improve dhcp-agent sync_state
Added a pool.waitall to dhcp-agent sync_state
to ensure that the last pool of threads are complete
before another sync_state begins. Added another
log message to aid in debugging. Also added the
test_sync_state_waitall unit test.
If a network/subnet is deleted while creating the dhcp
port, the agent will detect a conflict on state of the
network and deal with it accordingly.
A concurrent delete may manifest itself via a number
of exceptions, IPAddressGenerationFailure amongst others,
hence the refactoring of the error handling logic into its
own utility method.
Aaron Rosen [Thu, 21 Nov 2013 13:28:28 +0000 (05:28 -0800)]
Fix unable to add allow all IPv4/6 security group rule
Previously, if one tried to add a rule to allow all ingress ipv4 neutron
would respond that the rule was already part of the security group.
This happened as the filter for querying existing rules uses a wildcard for
remote_group_id thus returning a false match. This patch addresses
this issue.
Irena Berezovsky [Sun, 29 Sep 2013 11:09:44 +0000 (13:09 +0200)]
Add request timeout handling for Mellanox Neutron Agent
Add request timeout handling for messages sent to eswitch Daemon.
Using configurable number of retries and increasing waiting interval
between retries resend the message.
If request timeout persists, eswitch daemon is not reachable.
In such case, exit the agent process.
There is really no problem with this change. However, it is probably
triggering a port_update notification to the agent for each port
with an allocated IP.
The agent handles that notification in a way which might be improved
from a scalability perspective.
I don't actually want this change to removed, I am just checking
whether neutron without it passess jobs.
This patch adds some debug logging statements aimed at profiling
tasks in the agent's main rpc loop.
These logging capabilities will help gain some better insights into
the performance bottlenecks of the agent.
Jian Wen [Wed, 27 Nov 2013 14:23:26 +0000 (22:23 +0800)]
l3_agent: make process_router more robust
If internal_network_added/removed fails, _sync_routers_task will call
process_router to do fault recovery. Because the port is already
added/removed to/from ri.internal_ports, internal_network_added or
internal_network_removed will not be called again.
The patch fix this issue by calling ri.internal_ports.append/removed
only if internal_network_added/removed succeed. Without the patch,
the added testcases would fail.
Zhenguo Niu [Thu, 28 Nov 2013 15:12:00 +0000 (23:12 +0800)]
Updates .gitignore
To ignore swap files from getting into repository
currently the implemented ignores are *.swp and *.swo
however vim adds more swap files if these files exists,
so improving this with *.sw?
Maru Newby [Wed, 27 Nov 2013 07:57:48 +0000 (07:57 +0000)]
Stop logging unnecessary warning on context create
The context was previously logging at the 'warn' level when unknown
kwargs were being passed to its __init__(). Since the agents were
passing tenant=None with each rpc request, this was generating an
unreasonable amount of log chatter that would not be useful to an
operator. The fix is to log at the debug level instead so that
the operators don't see the output by default but developers can
still choose to.
Eugene Nikanorov [Thu, 28 Nov 2013 08:46:41 +0000 (12:46 +0400)]
Avoid loading policy when processing rpc requests
When Neutron server is restarted in the environment where multiple agents
are sending rpc requests to Neutron, it causes loading of policy.json
before API extensions are loaded. That causes different policy check
failures later on.
This patch avoids loading policy when creating a Context in rpc layer.
This fix improves test code coverage for the file:
neutron/plugins/cisco/network_plugin.py
from 34% to 98%.
Some of the changes made to realize this code coverage improvements
are the following:
- Core API methods (create_network, update_network, etc.) have been
removed from the core plugin (network_plugin.py). These methods
are currently unused. Before this change, we relied on the underlying
model layer to inform the core plugin whether or not the model layer
was capable of handling these core API calls itself via a 'MANAGE_STATE'
attribute. However, there is only one existing model layer
implementation (i.e. for Nexus plugin; the N1KV plugin does not use
network_plugin.py), and that model layer supports the core API calls.
Given that it is unlikely that another model layer for the Cisco Nexus
plugin will ever be developed (esp. with the availability of the ML2
plugin), so it makes more sense to delete this untested code.
- Exception raising for non-existent credentials has been removed from
get_credential_details and rename_credential methods since
exceptions are already raised for this condition in lower-level
credential database code.
- The schedule_host, associate_port, and detach_port methods are
deleted because these essentially do nothing useful (log a debug
message and then return None), since these methods look for
the same-named methods in the model layer, but these methods are
not defined in the model layer.
- The helper functions _invoke_device_plugins and _func_name are
deleted because they are no longer used.
- In unit test code for the Cisco QoS and credentials database, calls
are now made indirectly through the core plugin (network_plugin.py)
extension API methods, as a quick-and-easy way to provide code
coverage for these core plugin methods.
Akihiro Motoki [Wed, 27 Nov 2013 10:09:01 +0000 (19:09 +0900)]
Mocking ryu plugin notifier in ryu plugin test
Previously RPC notifier is not mocked in ryu plugin test and the
plugin tries to send RPC notifications. It may interact with
impl_fake RPC set up in previous tests by other plugin
and sometimes leads to unexpected ovs-vsctl invoking.