Skip to content
Snippets Groups Projects

Feature/dboard3 921

Merged Neda Moeini requested to merge feature/DBOARD3-921 into develop
All threads resolved!
2 files
+ 51
29
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 43
28
@@ -125,33 +125,48 @@ def extract_router_info(device: dict, token: str, app_config: dict) -> dict or N
def load_routers_from_orchestrator(app_config: dict) -> dict:
"""Gets devices from the orchestrator and returns a dictionary of FQDNs and vendors."""
token = get_token(app_config['aai'])
query = """
{
subscriptions(
filterBy: {field: "status", value: "PROVISIONING|ACTIVE"},
first: 500,
query: "tag:(RTR|OFFICE_ROUTER|Super_POP_SWITCH)"
) {
page {
subscriptionId
product {
tag
}
}
}
}
"""
routers = {}
response = make_request(body={'query': query}, token=token, app_config=app_config)
try:
devices = response['data']['subscriptions']['page']
except (TypeError, KeyError):
devices = []
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(extract_router_info, device, token, app_config) for device in devices]
for future in concurrent.futures.as_completed(futures):
router_info = future.result()
if router_info is not None:
routers[router_info['fqdn']] = router_info['vendor']
end_cursor = 0
has_next_page = True
while has_next_page:
query = f"""
{{
subscriptions(
filterBy: {{field: "status", value: "PROVISIONING|ACTIVE"}},
first: 100,
after: {end_cursor},
query: "tag:(RTR|OFFICE_ROUTER|Super_POP_SWITCH)"
) {{
pageInfo {{
hasNextPage
endCursor
}}
page {{
subscriptionId
product {{
tag
}}
}}
}}
}}
"""
response = make_request(body={'query': query}, token=token, app_config=app_config)
try:
devices = response['data']['subscriptions']['page']
page_info = response['data']['subscriptions']['pageInfo']
end_cursor = page_info['endCursor']
has_next_page = page_info['hasNextPage']
except (TypeError, KeyError):
devices = []
has_next_page = False
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(extract_router_info, device, token, app_config) for device in devices]
for future in concurrent.futures.as_completed(futures):
router_info = future.result()
if router_info is not None:
routers[router_info['fqdn']] = router_info['vendor']
return routers
Loading