[Admin-Util]: Add support to list missing edges for NSXv plugin

This patch adds support to list missing-edges for NSXv plugin.
Missing edges are those edges which are present in the Neutron DB
but are not present on the NSX-v backend.

Usage:
nsxadmin -o list -r missing-edges
NSX Plugin in use: nsxv
==== [NSX] List Missing Edges ====
NSXv edges present in Neutron DB but not present on the NSXv backend

missing-edges
+----------+
| edge_id  |
+----------+
| edge-121 |
+----------+

DocImpact

Change-Id: I19d6356694012ef9d050b5b8a179a11e438b7b3f
This commit is contained in:
Abhishek Raut 2016-03-30 01:11:29 -07:00
parent e0bd8f4c87
commit abb4846464
3 changed files with 39 additions and 0 deletions

View File

@ -31,4 +31,5 @@ SPOOFGUARD_POLICY = 'spoofguard-policy'
DHCP_BINDING = 'dhcp-binding'
BACKUP_EDGES = 'backup-edges'
ORPHANED_EDGES = 'orphaned-edges'
MISSING_EDGES = 'missing-edges'
NETWORKS = 'networks'

View File

@ -118,6 +118,39 @@ def nsx_delete_orphaned_edges(resource, event, trigger, **kwargs):
pprint.pformat(get_orphaned_edges()))
def get_missing_edges():
nsxv_edge_ids = set()
for edge in get_nsxv_edges():
nsxv_edge_ids.add(edge.get('id'))
neutron_edge_bindings = set()
for binding in get_router_edge_bindings():
neutron_edge_bindings.add(binding.edge_id)
return neutron_edge_bindings - nsxv_edge_ids
@admin_utils.output_header
def nsx_list_missing_edges(resource, event, trigger, **kwargs):
"""List missing Edges on NSXv.
Missing edges are NSXv edges that have a binding in Neutron DB
but are currently missing from the NSXv backend.
"""
LOG.info(_LI("NSXv edges present in Neutron DB but not present "
"on the NSXv backend\n"))
missing_edges = get_missing_edges()
if not missing_edges:
LOG.info(_LI("\nNo edges are missing."
"\nNeutron DB and NSXv backend are in sync\n"))
else:
LOG.info(constants.MISSING_EDGES)
data = [('edge_id',)]
for edge in missing_edges:
data.append((edge,))
LOG.info(formatters.tabulate_results(data))
def change_edge_ha(properties):
ha = bool(properties.get('highavailability').lower() == "true")
request = {
@ -179,6 +212,9 @@ registry.subscribe(nsx_list_orphaned_edges,
registry.subscribe(nsx_delete_orphaned_edges,
constants.ORPHANED_EDGES,
shell.Operations.CLEAN.value)
registry.subscribe(nsx_list_missing_edges,
constants.MISSING_EDGES,
shell.Operations.LIST.value)
registry.subscribe(nsx_update_edge,
constants.EDGES,
shell.Operations.NSX_UPDATE.value)

View File

@ -92,6 +92,8 @@ nsxv_resources = {
constants.ORPHANED_EDGES: Resource(constants.ORPHANED_EDGES,
[Operations.LIST.value,
Operations.CLEAN.value]),
constants.MISSING_EDGES: Resource(constants.MISSING_EDGES,
[Operations.LIST.value]),
constants.SPOOFGUARD_POLICY: Resource(constants.SPOOFGUARD_POLICY,
[Operations.LIST.value,
Operations.CLEAN.value]),