Skip to content

Commit

Permalink
added nsxt transport nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
Richard Tief committed Aug 30, 2021
1 parent a5f7fa9 commit 7333f70
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 9 deletions.
14 changes: 14 additions & 0 deletions BaseCollector.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,14 @@ def get_nsxt_mgmt_service(self, target):
self.nsxt_mgmt_service = request.json() if request else {}
return self.nsxt_mgmt_service

def get_nsxt_transport_nodes(self, target):
self.wait_for_inventory_data()
current_iteration = self.get_iteration()
url = "http://" + os.environ['INVENTORY'] + "/" + target + "/nsxt_transport_nodes/{}".format(current_iteration)
request = requests.get(url)
self.nsxt_transport_nodes = request.json() if request else {}
return self.nsxt_transport_nodes

def get_alertdefinitions(self):
request = requests.get(url="http://" + os.environ['INVENTORY'] + "/alertdefinitions")
self.alertdefinitions = request.json() if request else {}
Expand Down Expand Up @@ -191,6 +199,12 @@ def get_nsxt_mgmt_service_by_target(self):
self.target_nsxt_mgmt_service = [nsxt_mgmt_service_dict[uuid]['uuid'] for uuid in nsxt_mgmt_service_dict]
return self.target_nsxt_mgmt_service

def get_nsxt_transport_nodes_by_target(self):
nsxt_transport_nodes_dict = self.get_nsxt_transport_nodes(self.target)
self.target_nsxt_transport_nodes = [nsxt_transport_nodes_dict[uuid]['uuid'] for uuid in
nsxt_transport_nodes_dict]
return self.target_nsxt_transport_nodes

def get_project_ids_by_target(self):
try:
token = self.get_target_tokens()
Expand Down
46 changes: 45 additions & 1 deletion InventoryBuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ def nsxt_mgmt_nodes(target, iteration):
def nsxt_mgmt_service(target, iteration):
return self.iterated_inventory.get(str(iteration)).get('nsxt_mgmt_service').get(target, {})

@app.route('/<target>/nsxt_transport_nodes/<int:iteration>', methods=['GET'])
def nsxt_transport_nodes(target, iteration):
return self.iterated_inventory.get(str(iteration)).get('nsxt_transport_nodes').get(target, {})

@app.route('/alertdefinitions/', methods=['GET'])
def alert_alertdefinitions():
return self.alertdefinitions
Expand Down Expand Up @@ -196,6 +200,7 @@ def query_inventory_permanent(self):
self.provide_nsxt_mgmt_cluster()
self.provide_nsxt_mgmt_nodes()
self.provide_nsxt_mgmt_service()
self.provide_nsxt_transport_nodes()
if len(self.iterated_inventory[str(self.iteration)]['vcenters']) > 0:
self.successful_iteration_list.append(self.iteration)
else:
Expand Down Expand Up @@ -283,11 +288,15 @@ def create_nsxt_objects(self, vrops, target: str, token: str):
nsxt_mgmt_plane.add_adapter(adapter)

nsxt_mgmt_cluster, self.response_codes[target]["nsxt_mgmt_cluster"] = \
Vrops.get_nsxt_mgmt_cluster(vrops, target,token,[a.uuid for a in nsxt_adapter])
Vrops.get_nsxt_mgmt_cluster(vrops, target, token, [a.uuid for a in nsxt_adapter])
nsxt_mgmt_nodes, self.response_codes[target]["nsxt_mgmt_nodes"] = \
Vrops.get_nsxt_mgmt_nodes(vrops, target, token, [c.uuid for c in nsxt_mgmt_cluster])
nsxt_mgmt_service, self.response_codes[target]["nsxt_mgmt_services"] = \
Vrops.get_nsxt_mgmt_service(vrops, target, token, [n.uuid for n in nsxt_mgmt_nodes])
nsxt_transport_zones, self.response_codes[target]["nsxt_transport_zones"] = \
Vrops.get_nsxt_transport_zone(vrops, target, token, [c.uuid for c in nsxt_mgmt_cluster])
nsxt_transport_nodes, self.response_codes[target]["nsxt_transport_nodes"] = \
Vrops.get_nsxt_transport_node(vrops, target, token, [t.uuid for t in nsxt_transport_zones])

for nsxt_adapter_object in nsxt_mgmt_plane.adapter:
for mgmt_cluster in nsxt_mgmt_cluster:
Expand All @@ -304,6 +313,15 @@ def create_nsxt_objects(self, vrops, target: str, token: str):
if mgmt_service_instance.parent == nsxt_mgmt_node.uuid:
nsxt_mgmt_node.add_mgmt_service(mgmt_service_instance)
logger.debug(f'Collecting NSX-T management service: {mgmt_service_instance.name}')
for transport_zone in nsxt_transport_zones:
if transport_zone.parent == mgmt_cluster_object.uuid:
mgmt_cluster_object.add_transport_zone(transport_zone)
logger.debug(f'Collecting NSX-T transport zone: {transport_zone.name}')
for nsxt_transport_zone in mgmt_cluster_object.transport_zones:
for transport_node in nsxt_transport_nodes:
if transport_node.parent == nsxt_transport_zone.uuid:
nsxt_transport_zone.add_transport_node(transport_node)
logger.debug(f'Collecting NSX-T transport node: {transport_node.name}')

return nsxt_mgmt_plane

Expand Down Expand Up @@ -522,3 +540,29 @@ def provide_nsxt_mgmt_service(self) -> dict:
}
self.iterated_inventory[str(self.iteration)]['nsxt_mgmt_service'] = tree
return tree

def provide_nsxt_transport_nodes(self) -> dict:
tree = dict()
for nsxt_entry in self.nsxt_dict:
nsxt_mgmt_plane = self.nsxt_dict[nsxt_entry]
if not nsxt_mgmt_plane:
continue
tree[nsxt_mgmt_plane.target] = dict()
for nsxt_adapter_object in nsxt_mgmt_plane.adapter:
for mgmt_cluster in nsxt_adapter_object.management_cluster:
for transport_zone in mgmt_cluster.transport_zones:
for transport_node in transport_zone.transport_nodes:
tree[nsxt_mgmt_plane.target][transport_node.uuid] = {
'uuid': transport_node.uuid,
'name': transport_node.name,
'nsxt_adapter_name': nsxt_adapter_object.name,
'nsxt_adapter_uuid': nsxt_adapter_object.uuid,
'mgmt_cluster_name': mgmt_cluster.name,
'mgmt_cluster_uuid': mgmt_cluster.uuid,
'transport_zone_name': transport_zone.name,
'transport_zone_uuid': transport_zone.uuid,
'target': nsxt_mgmt_plane.target,
'token': nsxt_mgmt_plane.token,
}
self.iterated_inventory[str(self.iteration)]['nsxt_transport_nodes'] = tree
return tree
17 changes: 9 additions & 8 deletions collectors/NSXTTransportNodeAlertCollector.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
from collectors.AlertCollector import AlertCollector


class NSXTMgmtNodeAlertCollector(AlertCollector):
class NSXTTransportNodeAlertCollector(AlertCollector):

def __init__(self):
super().__init__()
self.vrops_entity_name = 'nsxt_mgmt_node'
self.label_names = ['nsxt_mgmt_cluster', 'nsxt_adapter', 'nsxt_mgmt_node']
self.resourcekind = ["ManagementNode"]
self.vrops_entity_name = 'nsxt_transport_node'
self.label_names = ['nsxt_mgmt_cluster', 'nsxt_adapter', 'transport_zone_name', 'nsxt_transport_node']
self.resourcekind = ["TransportNode"]

def get_resource_uuids(self):
return self.get_nsxt_mgmt_nodes_by_target()
return self.get_nsxt_transport_nodes_by_target()

def get_labels(self, resource_id, project_ids):
return [self.nsxt_mgmt_nodes[resource_id]['mgmt_cluster_name'],
self.nsxt_mgmt_nodes[resource_id]['nsxt_adapter_name'],
self.nsxt_mgmt_nodes[resource_id]['name']] if resource_id in self.nsxt_mgmt_nodes else []
return [self.nsxt_transport_nodes[resource_id]['mgmt_cluster_name'],
self.nsxt_transport_nodes[resource_id]['nsxt_adapter_name'],
self.nsxt_transport_nodes[resource_id]['transport_zone_name'],
self.nsxt_transport_nodes[resource_id]['name']] if resource_id in self.nsxt_transport_nodes else []
18 changes: 18 additions & 0 deletions collectors/NSXTTransportNodePropertiesCollector.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from collectors.PropertiesCollector import PropertiesCollector


class NSXTTransportNodePropertiesCollector(PropertiesCollector):

def __init__(self):
super().__init__()
self.vrops_entity_name = 'nsxt_transport_node'
self.label_names = ['nsxt_mgmt_cluster', 'nsxt_adapter', 'transport_zone_name', 'nsxt_transport_node']

def get_resource_uuids(self):
return self.get_nsxt_transport_nodes_by_target()

def get_labels(self, resource_id, project_ids):
return [self.nsxt_transport_nodes[resource_id]['mgmt_cluster_name'],
self.nsxt_transport_nodes[resource_id]['nsxt_adapter_name'],
self.nsxt_transport_nodes[resource_id]['transport_zone_name'],
self.nsxt_transport_nodes[resource_id]['name']] if resource_id in self.nsxt_transport_nodes else []
16 changes: 16 additions & 0 deletions resources/Resourceskinds.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,14 @@ class NSXTManagementCluster:

def __init__(self):
self.management_nodes = list()
self.transport_zones = list()

def add_mgmt_node(self, mgmt_node):
self.management_nodes.append(mgmt_node)

def add_transport_zone(self, transport_zone):
self.transport_zones.append(transport_zone)


class NSXTManagementNode:

Expand All @@ -110,3 +114,15 @@ class NSXTManagementService:
pass


class NSXTTransportZone:

def __init__(self):
self.transport_nodes = list()

def add_transport_node(self, transport_node):
self.transport_nodes.append(transport_node)


class NSXTTransportNode:
pass

6 changes: 6 additions & 0 deletions tests/collector_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ default_collectors:
- 'NSXTMgmtClusterPropertiesCollector'
- 'NSXTMgmtNodeStatsCollector'
- 'NSXTMgmtNodePropertiesCollector'
- 'NSXTTransportNodePropertiesCollector'
- 'ClusterStatsCollector'
- 'ClusterPropertiesCollector'
- 'DatastoreStatsCollector'
Expand All @@ -22,6 +23,7 @@ default_collectors:
- 'NSXTMgmtClusterAlertCollector'
- 'NSXTMgmtServiceAlertCollector'
- 'NSXTMgmtNodeAlertCollector'
- 'NSXTTransportNodeAlertCollector'
- 'ClusterAlertCollector'
- 'DatastoreAlertCollector'
- 'HostSystemAlertCollector'
Expand Down Expand Up @@ -409,3 +411,7 @@ NSXTMgmtNodePropertiesCollector:
key: "NSXTManagerNodeVersion"
- metric_suffix: "connectivity_status"
key: "ConnectivityStatus|ManagerConnectivityProperty"

NSXTTransportNodePropertiesCollector:
- metric_suffix: "connectivity_status"
key: "ConnectivityStatus|TransportNodeState"
8 changes: 8 additions & 0 deletions tools/Vrops.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,14 @@ def get_nsxt_mgmt_service(self, target, token, parent_uuids):
return self.get_resources(target, token, parent_uuids, adapterkind="NSXTAdapter",
resourcekinds=["ManagementService"], resource_class=NSXTManagementService)

def get_nsxt_transport_zone(self, target, token, parent_uuids):
return self.get_resources(target, token, parent_uuids, adapterkind="NSXTAdapter",
resourcekinds=["TransportZone"], resource_class=NSXTTransportZone)

def get_nsxt_transport_node(self, target, token, parent_uuids):
return self.get_resources(target, token, parent_uuids, adapterkind="NSXTAdapter",
resourcekinds=["TransportNode"], resource_class=NSXTTransportNode)

def get_latest_values_multiple(self, target: str, token: str,
uuids: list,
keys: list,
Expand Down

0 comments on commit 7333f70

Please sign in to comment.