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 @@
"password": "robot-user-password"
},
"LO": {
"V4": {"containers": ["1.1.0.0/24"], "networks": [], "mask": 32},
"V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 128},
"V4": {
"containers": [
"1.1.0.0/24"
],
"networks": [],
"mask": 32
},
"V6": {
"containers": [
"dead:beef::/64"
],
"networks": [],
"mask": 128
},
"domain_name": ".lo"
},
"TRUNK": {
"V4": {"containers": ["1.1.1.0/24"], "networks": [], "mask": 31},
"V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126},
"V4": {
"containers": [
"1.1.1.0/24"
],
"networks": [],
"mask": 31
},
"V6": {
"containers": [
"dead:beef::/64"
],
"networks": [],
"mask": 126
},
"domain_name": ".trunk"
},
"GEANT_IP": {
"V4": {"containers": ["1.1.2.0/24"], "networks": [], "mask": 31},
"V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126},
"V4": {
"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"
}
},
......
......@@ -63,6 +63,8 @@ class IPAMParams(BaseSettings):
LO: ServiceNetworkParams
TRUNK: ServiceNetworkParams
GEANT_IP: ServiceNetworkParams
SI: ServiceNetworkParams
LT_IAS: ServiceNetworkParams
class ProvisioningProxyParams(BaseSettings):
......
......@@ -19,6 +19,7 @@ from gso.products.product_types import device
from gso.products.product_types.device import DeviceInactive, \
DeviceProvisioning
from gso.products.product_types.site import Site
# noinspection PyProtectedMember
from gso.services import _ipam
from gso.services import provisioning_proxy
from gso.services.provisioning_proxy import await_pp_results, \
......@@ -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_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}
......
......@@ -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.iptrunk import IptrunkInactive, \
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, \
await_pp_results
......@@ -91,12 +92,17 @@ def create_subscription(product: UUIDstr) -> State:
@step('Get information from IPAM')
def get_info_from_ipam(subscription: IptrunkInactive) -> State:
# TODO: get info about how these should be generated
def get_info_from_ipam(subscription: IptrunkProvisioning) -> State:
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 +241,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
......
......@@ -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": {
......
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