Skip to content
Snippets Groups Projects
Verified Commit 4c346d4f authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

reformat some files, make tox pass

parent 99ed5627
No related branches found
Tags 2.13
1 merge request!16Feature/ipam integration
......@@ -12,18 +12,18 @@
"password": "robot-user-password"
},
"LO": {
"V4": {"containers": ["1.1.0.0/24"], "mask": 32},
"V6": {"containers": ["dead:beef::/64"], "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"], "mask": 31},
"V6": {"containers": ["dead:beef::/64"], "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"], "mask": 31},
"V6": {"containers": ["dead:beef::/64"], "mask": 126},
"V4": {"containers": ["1.1.2.0/24"], "networks": [], "mask": 31},
"V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126},
"domain_name": ".geantip"
}
},
......
......@@ -19,10 +19,11 @@ from gso.products.product_types import device
from gso.products.product_types.device import DeviceInactive, \
DeviceProvisioning
from gso.products.product_types.site import Site
from gso.services import _ipam
from gso.services import provisioning_proxy
from gso.services.provisioning_proxy import await_pp_results, \
confirm_pp_results
from gso.services import ipam, _ipam
def site_selector() -> list:
site_subscriptions = {}
......@@ -85,21 +86,13 @@ def iso_from_ipv4(ipv4_address):
@step('Get information from IPAM')
def get_info_from_ipam(subscription: DeviceProvisioning) -> State:
# lo = ipam.new_device_lo_address()
# subscription.device.lo_ipv4_address = lo.v4
# subscription.device.lo_ipv6_address = lo.v6
# TODO: get info about how these should be generated
lo0_alias = re.sub(".geant.net", "", subscription.device.device_fqdn)
lo0_name = f"lo0.{lo0_alias}"
#print(lo0_alias)
lo0_addr = _ipam.allocate_service_host(hostname=lo0_name, service_type='LO', cname_aliases=[lo0_alias])
lo0_alias = re.sub('.geant.net', '', subscription.device.device_fqdn)
lo0_name = f'lo0.{lo0_alias}'
lo0_addr = _ipam.allocate_service_host(hostname=lo0_name,
service_type='LO',
cname_aliases=[lo0_alias])
subscription.device.device_lo_ipv4_address = lo0_addr.v4
subscription.device.device_lo_ipv6_address = lo0_addr.v6
# subscription.device.device_lo_ipv4_address = \
# ipam.new_service_host()
# ipaddress.ip_address('10.10.10.20')
# subscription.device.device_lo_ipv6_address = \
# ipaddress.ip_address('fc00:798:10::20')
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'
......@@ -123,20 +116,19 @@ def initialize_subscription(
subscription.device.device_vendor = device_vendor
subscription.device.device_site \
= Site.from_subscription(device_site[0]).site
fqdn = f"{hostname}.{subscription.device.device_site.site_name.lower()}.{subscription.device.device_site.site_country_code.lower()}.geant.net"
#fqdn = str(hostname + '.' +
# subscription.device.device_site.site_name.lower() + '.' +
# subscription.device.device_site.site_country_code.lower() +
# '.geant.net')
fqdn = f'{hostname}.{subscription.device.device_site.site_name.lower()}.' \
f'{subscription.device.device_site.site_country_code.lower()}' \
f'.geant.net'
subscription.device.device_fqdn = fqdn
subscription.device.device_role = device_role
subscription.description = f'Device {fqdn} ' \
f'({subscription.device_type})'
subscription = device.DeviceProvisioning.from_other_lifecycle(
subscription, SubscriptionLifecycle.PROVISIONING
)
return {'subscription': subscription, 'fqdn': fqdn}
return {'subscription': subscription}
@step('Provision device [DRY RUN]')
......
......@@ -2,9 +2,10 @@ import contextlib
import json
import os
import socket
import pytest
import tempfile
import pytest
@pytest.fixture(scope='session')
def configuration_data():
......@@ -26,17 +27,21 @@ def configuration_data():
"password": "robot-user-password"
},
"LO": {
"V4": {"containers": ["10.255.255.0/24"], "mask": 32},
"V6": {"containers": ["dead:beef::/64"], "mask": 128},
"V4": {"containers": ["10.255.255.0/24"], "networks": [],
"mask": 32},
"V6": {"containers": ["dead:beef::/64"], "networks": [],
"mask": 128},
"domain_name": ".lo"
},
"TRUNK": {
"V4": {
"containers": ["10.255.255.0/24", "10.255.254.0/24"],
"networks": [],
"mask": 31
},
"V6": {
"containers": ["dead:beef::/64", "dead:beee::/64"],
"networks": [],
"mask": 126
},
"domain_name": ".trunk"
......@@ -44,10 +49,12 @@ def configuration_data():
"GEANT_IP": {
"V4": {
"containers": ["10.255.255.0/24", "10.255.254.0/24"],
"networks": [],
"mask": 31
},
"V6": {
"containers": ["dead:beef::/64", "dead:beee::/64"],
"networks": [],
"mask": 126
},
"domain_name": ".geantip"
......
import ipaddress
import re
import responses
from gso.services import ipam
......@@ -7,12 +8,12 @@ from gso.services import ipam
@responses.activate
def test_new_service_networks(data_config_filename):
responses.add(
method=responses.POST,
url=re.compile(r'.*/wapi.*/network.*'),
json={
'_ref': 'network/ZG5zLm5ldHdvcmskMTAuMjU1LjI1NS4yMC8zMi8w:10.255.255.20/32/default', # noqa: E501
'_ref': 'network/ZG5zLm5ldHdvcmskMTAuMjU1LjI1NS4yMC8zMi8w:10.255.2'
'55.20/32/default', # noqa: E501
'network': '10.255.255.20/32'
}
)
......@@ -21,7 +22,8 @@ def test_new_service_networks(data_config_filename):
method=responses.POST,
url=re.compile(r'.*/wapi.*/ipv6network.*'),
json={
'_ref': 'ipv6network/ZG5zLm5ldHdvcmskZGVhZDpiZWVmOjoxOC8xMjgvMA:dead%3Abeef%3A%3A18/128/default', # noqa: E501
'_ref': 'ipv6network/ZG5zLm5ldHdvcmskZGVhZDpiZWVmOjoxOC8xMjgvMA:de'
'ad%3Abeef%3A%3A18/128/default', # noqa: E501
'network': 'dead:beef::18/128'
}
)
......@@ -35,23 +37,25 @@ def test_new_service_networks(data_config_filename):
@responses.activate
def test_new_service_host(data_config_filename):
responses.add(
method=responses.POST,
url=re.compile(r'.*/wapi.*/record:host$'),
json='record:host/ZG5zLmhvc3QkLm5vbl9ETlNfaG9zdF9yb290LjAuMTY4MzcwNTU4MzY3MC5nc28udGVzdA:test.lo/%20' # noqa: E501
json='record:host/ZG5zLmhvc3QkLm5vbl9ETlNfaG9zdF9yb290LjAuMTY4MzcwNTU4'
'MzY3MC5nc28udGVzdA:test.lo/%20' # noqa: E501
)
responses.add(
method=responses.POST,
url=re.compile(r'.*/wapi.*/record:a$'),
json='record:a/ZG5zLmJpbmRfYSQuX2RlZmF1bHQuZ3NvLHRlc3QsMTAuMjU1LjI1NS44:test.lo/default' # noqa: E501
json='record:a/ZG5zLmJpbmRfYSQuX2RlZmF1bHQuZ3NvLHRlc3QsMTAuMjU1LjI1NS4'
'4:test.lo/default' # noqa: E501
)
responses.add(
method=responses.POST,
url=re.compile(r'.*/wapi.*/record:aaaa$'),
json='record:aaaa/ZG5zLmJpbmRfYSQuX2RlZmF1bHQuZ3NvLHRlc3QsMTAuMjU1LjI1NS44:test.lo/default' # noqa: E501
json='record:aaaa/ZG5zLmJpbmRfYSQuX2RlZmF1bHQuZ3NvLHRlc3QsMTAuMjU1LjI1'
'NS44:test.lo/default' # noqa: E501
)
responses.add(
......@@ -59,7 +63,8 @@ def test_new_service_host(data_config_filename):
url=re.compile(r'.*/wapi.*/network.*'),
json=[
{
"_ref": "network/ZG5zLm5ldHdvcmskMTAuMjU1LjI1NS4yMC8zMi8w:10.255.255.20/32/default", # noqa: E501
"_ref": "network/ZG5zLm5ldHdvcmskMTAuMjU1LjI1NS4yMC8zMi8w:10.2"
"55.255.20/32/default", # noqa: E501
"network": "10.255.255.20/32",
"network_view": "default"
}
......@@ -72,7 +77,8 @@ def test_new_service_host(data_config_filename):
url=re.compile(r'.*/wapi.*/ipv6network.*'),
json=[
{
"_ref": "ipv6network/ZG5zLm5ldHdvcmskZGVhZDpiZWVmOjoxOC8xMjgvMA:dead%3Abeef%3A%3A18/128/default", # noqa: E501
"_ref": "ipv6network/ZG5zLm5ldHdvcmskZGVhZDpiZWVmOjoxOC8xMjgvM"
"A:dead%3Abeef%3A%3A18/128/default", # noqa: E501
"network": "dead:beef::18/128",
"network_view": "default"
}
......@@ -81,13 +87,17 @@ def test_new_service_host(data_config_filename):
responses.add(
method=responses.POST,
url=re.compile(r'.*/wapi.*/network.*/.*?_function=next_available_ip&num=1.*'), # noqa: E501
url=re.compile(
r'.*/wapi.*/network.*/.*?_function=next_available_ip&num=1.*'),
# noqa: E501
json={'ips': ['10.255.255.20']}
)
responses.add(
method=responses.POST,
url=re.compile(r'.*/wapi.*/ipv6network.*/.*?_function=next_available_ip&num=1.*'), # noqa: E501
url=re.compile(
r'.*/wapi.*/ipv6network.*/.*?_function=next_available_ip&num=1.*'),
# noqa: E501
json={'ips': ['dead:beef::18']}
)
......
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