diff --git a/gso/settings.py b/gso/settings.py index 8e8ad08f44ec1efdd8c3860e4e602e9e4d23e7cd..016b571b95218218cad8039445042d967965e85d 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 d7646e5da5b0ff2f484372266abf905d5302206e..73459908963c4fc4fe4c5be936fe6110f1746dec 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 1c096575bb674c9e879c22c147fbc664fac8f352..48e15393817947d424dec916da628fa4c8e9e770 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 e714bf98ee8be66741b220731ba07ae1693ab16b..0edc5f13f9a40f199fe3e2d696b16d4d17b0c603 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": {