Skip to content
Snippets Groups Projects
Commit 44cd9de1 authored by Erik Reid's avatar Erik Reid
Browse files

Finished feature resource-manager-remove-sites.

parents 71f8ea58 0cc28c5d
No related branches found
No related tags found
No related merge requests found
Pipeline #83768 passed
......@@ -16,42 +16,30 @@ class InterfaceAllocationState(Enum):
ALLOCATED = auto()
def _dummy_router_interfaces(site_name) -> dict:
def _dummy_router_interfaces():
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("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"),
"fqdn-a": _dummy_router_interfaces(),
"fqdn-b": _dummy_router_interfaces(),
"fqdn-c": _dummy_router_interfaces(),
"fqdn-d": _dummy_router_interfaces(),
}
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):
def import_new_router(new_router_fqdn: str, subscription_id: str, oss_params=settings.OSSParams):
# TODO: this is a dummy implementation
# TODO: specify if this should be an error (and if not, what it means)
assert site_name in _DUMMY_SITES
# TODO: specifiy if this should be an error (and if now, what it means)
assert new_router_fqdn not in _DUMMY_INVENTORY
_DUMMY_INVENTORY[new_router_fqdn] = _dummy_router_interfaces(site_name)
_DUMMY_INVENTORY[new_router_fqdn] = _dummy_router_interfaces()
def next_lag(router_fqdn: str, oss_params=settings.OSSParams) -> str:
def next_lag(router_fqdn: str, subscription_id: str, oss_params=settings.OSSParams) -> str:
# TODO: this is a dummy implementation
assert router_fqdn in _DUMMY_INVENTORY
......@@ -85,7 +73,9 @@ def _find_physical(router_fqdn: str, interface_name: str) -> dict:
raise AssertionError(f"interface {interface_name} not found on {router_fqdn}")
def reserve_physical_interface(router_fqdn: str, interface_name: str, oss_params=settings.OSSParams):
def reserve_physical_interface(
router_fqdn: str, interface_name: str, subscription_id: str, oss_params=settings.OSSParams
):
# TODO: this is a dummy implementation
ifc = _find_physical(router_fqdn, interface_name)
......
......@@ -11,26 +11,18 @@ 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, site_name=site_name)
resource_manager.import_new_router(new_router_fqdn=router_name, subscription_id=_random_string(10))
assert router_name in resource_manager._DUMMY_INVENTORY
def test_new_lag():
router_name = list(resource_manager._DUMMY_INVENTORY.keys())[0]
new_lags = {resource_manager.next_lag(router_fqdn=router_name) for _ in range(10)}
new_lags = {
resource_manager.next_lag(router_fqdn=router_name, subscription_id=_random_string(10)) for _ in range(10)
}
assert len(new_lags) == 10
assert new_lags <= set(resource_manager._DUMMY_INVENTORY[router_name]["lags"])
......@@ -45,7 +37,9 @@ def test_physical_allocation_lifecycle_happy():
interface_name = initial_available[0]
resource_manager.reserve_physical_interface(router_fqdn=router_name, interface_name=interface_name)
resource_manager.reserve_physical_interface(
router_fqdn=router_name, subscription_id=_random_string(10), interface_name=interface_name
)
current_available = _interfaces()
assert interface_name not in current_available
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment