import contextlib import json import os import socket import pytest import tempfile @pytest.fixture(scope='session') def configuration_data(): with contextlib.closing( socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s: s.bind(('', 0)) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) yield { "GENERAL": { "public_hostname": "https://gap.geant.org" }, "RESOURCE_MANAGER_API_PREFIX": "http://localhost:44444", "IPAM": { "INFOBLOX": { "scheme": "https", "wapi_version": "v2.12", "host": "10.0.0.1", "username": "robot-user", "password": "robot-user-password" }, "LO": { "V4": { "containers": [], "networks": ["10.255.255.0/26"], "mask": 32 }, "V6": { "containers": [], "networks": ["dead:beef::/80"], "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" }, "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" } }, "PROVISIONING_PROXY": { "scheme": "https", "api_base": "localhost:44444", "auth": "Bearer <token>", "api_version": 1123 } } @pytest.fixture(scope='session') def data_config_filename(configuration_data): file_name = os.path.join( tempfile.gettempdir(), os.urandom(24).hex()) open(file_name, 'x').close() with open(file_name, 'wb') as f: f.write(json.dumps(configuration_data).encode('utf-8')) f.flush() os.environ['OSS_PARAMS_FILENAME'] = f.name yield f.name