diff --git a/gso/services/resource_manager.py b/gso/services/resource_manager.py index 6962eefee1315bd069843ecdc1d4b942de944561..b555c7c301a1c9d3445f85c9248d1ce13184679b 100644 --- a/gso/services/resource_manager.py +++ b/gso/services/resource_manager.py @@ -16,27 +16,39 @@ class InterfaceAllocationState(Enum): ALLOCATED = auto() -def _dummy_router_interfaces(): +def _dummy_router_interfaces(site_name) -> dict: return { + "site": site_name, "lags": [], "physical": [{"name": f"ifc-{x}", "state": InterfaceAllocationState.AVAILABLE} for x in range(250)], } +_DUMMY_SITES = {"site-a", "site-b", "site-c"} + _DUMMY_INVENTORY = { - "fqdn-a": _dummy_router_interfaces(), - "fqdn-b": _dummy_router_interfaces(), - "fqdn-c": _dummy_router_interfaces(), - "fqdn-d": _dummy_router_interfaces(), + "fqdn-a": _dummy_router_interfaces("site-a"), + "fqdn-b": _dummy_router_interfaces("site-a"), + "fqdn-c": _dummy_router_interfaces("site-b"), + "fqdn-d": _dummy_router_interfaces("site-b"), + "fqdn-e": _dummy_router_interfaces("site-c"), + "fqdn-f": _dummy_router_interfaces("site-c"), } -def import_new_router(new_router_fqdn: str, oss_params=settings.OSSParams): +def import_new_site(new_site_name: str, oss_params=settings.OSSParams): + # TODO: this is a dummy implementation + assert new_site_name not in _DUMMY_SITES + _DUMMY_SITES.add(new_site_name) + + +def import_new_router(new_router_fqdn: str, site_name: str, oss_params=settings.OSSParams): # TODO: this is a dummy implementation - # TODO: specifiy if this should be an error (and if now, what it means) + # TODO: specify if this should be an error (and if not, what it means) + assert site_name in _DUMMY_SITES assert new_router_fqdn not in _DUMMY_INVENTORY - _DUMMY_INVENTORY[new_router_fqdn] = _dummy_router_interfaces() + _DUMMY_INVENTORY[new_router_fqdn] = _dummy_router_interfaces(site_name) def next_lag(router_fqdn: str, oss_params=settings.OSSParams) -> str: diff --git a/test/test_resource_manager.py b/test/test_resource_manager.py index 5258f4b80e7f12f85d0d194a7c2df3cbf40e2cc5..37e26fe78cb8b6a1d68702994b824c38c63820aa 100644 --- a/test/test_resource_manager.py +++ b/test/test_resource_manager.py @@ -11,10 +11,20 @@ def _random_string(n=None, letters=string.ascii_letters + string.digits + string return "".join(random.choices(letters, k=n)) # noqa: S311 +def test_new_site(): + site_name = _random_string(10) + assert site_name not in resource_manager._DUMMY_SITES + resource_manager.import_new_site(new_site_name=site_name) + assert site_name in resource_manager._DUMMY_SITES + + def test_new_router(): + site_name = _random_string(10) + resource_manager.import_new_site(new_site_name=site_name) + router_name = _random_string(10) assert router_name not in resource_manager._DUMMY_INVENTORY - resource_manager.import_new_router(new_router_fqdn=router_name) + resource_manager.import_new_router(new_router_fqdn=router_name, site_name=site_name) assert router_name in resource_manager._DUMMY_INVENTORY