Skip to content
Snippets Groups Projects
Commit 5e4640aa authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

Merge branch 'feature/ipam-integration-3' into 'develop'

IPAM: create_device: LO, SI and LT_IAS; create_trunk: trunk networks.

See merge request !20
parents 0119f1b7 028a2d46
No related branches found
No related tags found
1 merge request!20IPAM: create_device: LO, SI and LT_IAS; create_trunk: trunk networks.
...@@ -12,18 +12,86 @@ ...@@ -12,18 +12,86 @@
"password": "robot-user-password" "password": "robot-user-password"
}, },
"LO": { "LO": {
"V4": {"containers": ["1.1.0.0/24"], "networks": [], "mask": 32}, "V4": {
"V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 128}, "containers": [
"1.1.0.0/24"
],
"networks": [],
"mask": 32
},
"V6": {
"containers": [
"dead:beef::/64"
],
"networks": [],
"mask": 128
},
"domain_name": ".lo" "domain_name": ".lo"
}, },
"TRUNK": { "TRUNK": {
"V4": {"containers": ["1.1.1.0/24"], "networks": [], "mask": 31}, "V4": {
"V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126}, "containers": [
"1.1.1.0/24"
],
"networks": [],
"mask": 31
},
"V6": {
"containers": [
"dead:beef::/64"
],
"networks": [],
"mask": 126
},
"domain_name": ".trunk" "domain_name": ".trunk"
}, },
"GEANT_IP": { "GEANT_IP": {
"V4": {"containers": ["1.1.2.0/24"], "networks": [], "mask": 31}, "V4": {
"V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126}, "containers": [
"1.1.2.0/24"
],
"networks": [],
"mask": 31
},
"V6": {
"containers": [
"dead:beef::/64"
],
"networks": [],
"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" "domain_name": ".geantip"
} }
}, },
......
...@@ -63,6 +63,8 @@ class IPAMParams(BaseSettings): ...@@ -63,6 +63,8 @@ class IPAMParams(BaseSettings):
LO: ServiceNetworkParams LO: ServiceNetworkParams
TRUNK: ServiceNetworkParams TRUNK: ServiceNetworkParams
GEANT_IP: ServiceNetworkParams GEANT_IP: ServiceNetworkParams
SI: ServiceNetworkParams
LT_IAS: ServiceNetworkParams
class ProvisioningProxyParams(BaseSettings): class ProvisioningProxyParams(BaseSettings):
......
...@@ -19,6 +19,7 @@ from gso.products.product_types import device ...@@ -19,6 +19,7 @@ from gso.products.product_types import device
from gso.products.product_types.device import DeviceInactive, \ from gso.products.product_types.device import DeviceInactive, \
DeviceProvisioning DeviceProvisioning
from gso.products.product_types.site import Site from gso.products.product_types.site import Site
# noinspection PyProtectedMember
from gso.services import _ipam from gso.services import _ipam
from gso.services import provisioning_proxy from gso.services import provisioning_proxy
from gso.services.provisioning_proxy import await_pp_results, \ from gso.services.provisioning_proxy import await_pp_results, \
...@@ -95,9 +96,15 @@ def get_info_from_ipam(subscription: DeviceProvisioning) -> State: ...@@ -95,9 +96,15 @@ def get_info_from_ipam(subscription: DeviceProvisioning) -> State:
subscription.device.device_lo_ipv6_address = lo0_addr.v6 subscription.device.device_lo_ipv6_address = lo0_addr.v6
subscription.device.device_lo_iso_address \ subscription.device.device_lo_iso_address \
= iso_from_ipv4(str(subscription.device.device_lo_ipv4_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_si_ipv4_network \
subscription.device.device_ias_lt_ipv4_network = '192.168.1.0/31' = _ipam.allocate_service_ipv4_network(service_type='SI',
subscription.device.device_ias_lt_ipv6_network = 'fc00:798:1::150/126' 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} return {'subscription': subscription}
......
...@@ -17,7 +17,8 @@ from gso.products.product_blocks.iptrunk import IptrunkType ...@@ -17,7 +17,8 @@ from gso.products.product_blocks.iptrunk import IptrunkType
from gso.products.product_types.device import Device from gso.products.product_types.device import Device
from gso.products.product_types.iptrunk import IptrunkInactive, \ from gso.products.product_types.iptrunk import IptrunkInactive, \
IptrunkProvisioning IptrunkProvisioning
from gso.services import provisioning_proxy # noinspection PyProtectedMember
from gso.services import provisioning_proxy, _ipam
from gso.services.provisioning_proxy import confirm_pp_results, \ from gso.services.provisioning_proxy import confirm_pp_results, \
await_pp_results await_pp_results
...@@ -91,12 +92,17 @@ def create_subscription(product: UUIDstr) -> State: ...@@ -91,12 +92,17 @@ def create_subscription(product: UUIDstr) -> State:
@step('Get information from IPAM') @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 \ 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 \ 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} return {'subscription': subscription}
...@@ -235,8 +241,8 @@ def create_iptrunk(): ...@@ -235,8 +241,8 @@ def create_iptrunk():
init init
>> create_subscription >> create_subscription
>> store_process_subscription(Target.CREATE) >> store_process_subscription(Target.CREATE)
>> get_info_from_ipam
>> initialize_subscription >> initialize_subscription
>> get_info_from_ipam
>> provision_ip_trunk_iface_dry >> provision_ip_trunk_iface_dry
>> await_pp_results >> await_pp_results
>> confirm_pp_results >> confirm_pp_results
......
...@@ -58,6 +58,32 @@ def configuration_data(): ...@@ -58,6 +58,32 @@ def configuration_data():
"mask": 126 "mask": 126
}, },
"domain_name": ".geantip" "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": { "PROVISIONING_PROXY": {
......
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