From df0cd9c9072f9d6555ed14ffeba10585b97da617 Mon Sep 17 00:00:00 2001 From: Aleksandr Kurbatov <aleks@aleks01.dev.gap.geant.org> Date: Tue, 30 May 2023 14:09:43 +0000 Subject: [PATCH] IPAM: create_device: LO, SI and LT_IAS; create_trunk: trunk networks. --- gso/settings.py | 2 ++ gso/workflows/device/create_device.py | 9 ++++++--- gso/workflows/iptrunk/create_iptrunk.py | 10 +++++----- test/conftest.py | 26 +++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/gso/settings.py b/gso/settings.py index 8e8ad08f..016b571b 100644 --- a/gso/settings.py +++ b/gso/settings.py @@ -63,6 +63,8 @@ class IPAMParams(BaseSettings): LO: ServiceNetworkParams TRUNK: ServiceNetworkParams GEANT_IP: ServiceNetworkParams + SI: ServiceNetworkParams + LT_IAS: ServiceNetworkParams class ProvisioningProxyParams(BaseSettings): diff --git a/gso/workflows/device/create_device.py b/gso/workflows/device/create_device.py index d7646e5d..73459908 100644 --- a/gso/workflows/device/create_device.py +++ b/gso/workflows/device/create_device.py @@ -95,9 +95,12 @@ def get_info_from_ipam(subscription: DeviceProvisioning) -> State: subscription.device.device_lo_ipv6_address = lo0_addr.v6 subscription.device.device_lo_iso_address \ = iso_from_ipv4(str(subscription.device.device_lo_ipv4_address)) - subscription.device.device_si_ipv4_network = '192.168.0.0/31' - subscription.device.device_ias_lt_ipv4_network = '192.168.1.0/31' - subscription.device.device_ias_lt_ipv6_network = 'fc00:798:1::150/126' + subscription.device.device_si_ipv4_network \ + = _ipam.allocate_service_ipv4_network(service_type='SI', comment=f"SI for {lo0_name}").v4 + subscription.device.device_ias_lt_ipv4_network \ + = _ipam.allocate_service_ipv4_network(service_type='LT_IAS', comment=f"LT for {lo0_name}").v4 + subscription.device.device_ias_lt_ipv6_network \ + = _ipam.allocate_service_ipv6_network(service_type='LT_IAS', comment=f"LT for {lo0_name}").v6 return {'subscription': subscription} diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py index 1c096575..48e15393 100644 --- a/gso/workflows/iptrunk/create_iptrunk.py +++ b/gso/workflows/iptrunk/create_iptrunk.py @@ -17,7 +17,7 @@ from gso.products.product_blocks.iptrunk import IptrunkType from gso.products.product_types.device import Device from gso.products.product_types.iptrunk import IptrunkInactive, \ IptrunkProvisioning -from gso.services import provisioning_proxy +from gso.services import provisioning_proxy, _ipam from gso.services.provisioning_proxy import confirm_pp_results, \ await_pp_results @@ -91,12 +91,12 @@ def create_subscription(product: UUIDstr) -> State: @step('Get information from IPAM') -def get_info_from_ipam(subscription: IptrunkInactive) -> State: +def get_info_from_ipam(subscription: IptrunkProvisioning) -> State: # TODO: get info about how these should be generated subscription.iptrunk.iptrunk_ipv4_network \ - = ipaddress.ip_network('192.168.255.0/31') + = _ipam.allocate_service_ipv4_network(service_type="TRUNK", comment=subscription.iptrunk.iptrunk_description).v4 subscription.iptrunk.iptrunk_ipv6_network \ - = ipaddress.ip_network('fc00:798:255::150/126') + = _ipam.allocate_service_ipv6_network(service_type="TRUNK", comment=subscription.iptrunk.iptrunk_description).v6 return {'subscription': subscription} @@ -235,8 +235,8 @@ def create_iptrunk(): init >> create_subscription >> store_process_subscription(Target.CREATE) - >> get_info_from_ipam >> initialize_subscription + >> get_info_from_ipam >> provision_ip_trunk_iface_dry >> await_pp_results >> confirm_pp_results diff --git a/test/conftest.py b/test/conftest.py index e714bf98..0edc5f13 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -58,6 +58,32 @@ def configuration_data(): "mask": 126 }, "domain_name": ".geantip" + }, + "SI": { + "V4": { + "containers": ["10.255.253.128/25"], + "networks": [], + "mask": 31 + }, + "V6": { + "containers": [], + "networks": [], + "mask": 126 + }, + "domain_name": ".geantip" + }, + "LT_IAS": { + "V4": { + "containers": ["10.255.255.0/24"], + "networks": [], + "mask": 31 + }, + "V6": { + "containers": ["dead:beef:cc::/48"], + "networks": [], + "mask": 126 + }, + "domain_name": ".geantip" } }, "PROVISIONING_PROXY": { -- GitLab