Skip to content

Commit

Permalink
SIMPLE-6020 sped up syncing operational by removing unneeded API calls (
Browse files Browse the repository at this point in the history
#72)

* SIMPLE-6020 sped up syncing operational by removing unneeded API calls
  • Loading branch information
daniel-valent authored Dec 5, 2023
1 parent 9aeadf7 commit 0381844
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
14 changes: 14 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,23 @@ def respx_mock_with_labs(respx_mock):
respx_mock.get(
FAKE_HOST_API
+ f"labs/444a78d1-575c-4746-8469-696e580f17b6/nodes/{node}?operational=true"
f"&exclude_configurations=true"
).respond(
json={"operational": {"compute_id": "99c887f5-052e-4864-a583-49fa7c4b68a9"}}
)
respx_mock.get(
FAKE_HOST_API
+ "labs/444a78d1-575c-4746-8469-696e580f17b6/nodes?data=true&operational=true&"
"exclude_configurations=true"
).respond(
json=[
{
"id": node,
"operational": {"compute_id": "99c887f5-052e-4864-a583-49fa7c4b68a9"},
}
for node in nodes
]
)
resp_from_files = (
"labs",
"populate_lab_tiles",
Expand Down
12 changes: 9 additions & 3 deletions virl2_client/models/lab.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ class Lab:
"lab": "labs/{lab_id}",
"nodes": "labs/{lab_id}/nodes",
"nodes_populated": "labs/{lab_id}/nodes?populate_interfaces=true",
"nodes_operational": "labs/{lab_id}/nodes?data=true&operational=true"
"&exclude_configurations=true",
"links": "labs/{lab_id}/links",
"interfaces": "labs/{lab_id}/interfaces",
"simulation_stats": "labs/{lab_id}/simulation_stats",
Expand Down Expand Up @@ -1652,7 +1654,11 @@ def sync_operational(self) -> None:
response = self._session.get(url).json()
res_pools = self._resource_pool_manager.get_resource_pools_by_ids(response)
self._resource_pools = list(res_pools.values())
self._last_sync_operational_time = time.time()

for node in self._nodes.values():
node.sync_operational()
url = self._url_for("nodes_operational")
response: list[dict] = self._session.get(url).json()
for node_data in response:
if node := self._nodes.get(node_data["id"]):
node.sync_operational(node_data)

self._last_sync_operational_time = time.time()
2 changes: 1 addition & 1 deletion virl2_client/models/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class Node:
"console_key": "{lab}/nodes/{id}/keys/console",
"vnc_key": "{lab}/nodes/{id}/keys/vnc",
"layer3_addresses": "{lab}/nodes/{id}/layer3_addresses",
"operational": "{lab}/nodes/{id}?operational=true",
"operational": "{lab}/nodes/{id}?operational=true&exclude_configurations=true",
}

def __init__(
Expand Down

0 comments on commit 0381844

Please sign in to comment.