import logging from orchestrator.types import UUIDstr from gso.products.product_blocks.device import DeviceBlockProvisioning from gso import settings import requests from gso.products.product_types.device import DeviceProvisioning logger = logging.getLogger(__name__) def provision_node( node_subscription_params: DeviceProvisioning, process_id: UUIDstr, dry_run: bool = True): oss = settings.load_oss_params() pp_params = oss.PROVISIONING_PROXY assert pp_params device_params = node_subscription_params.device callback_url = f'{settings.load_oss_params().GENERAL.public_hostname}' \ f'/api/process/{process_id}/resume' # TODO: verify this URL logger.debug(f'[disabled] provisioning node {device_params}') parameters = { 'callback': callback_url, 'dry_run': dry_run, 'device': { 'fqdn': device_params.fqdn, 'lo_address': { 'v4': str(device_params.lo_ipv4_address), 'v6': str(device_params.lo_ipv6_address) }, 'lo_iso_address': device_params.lo_iso_address, 'si_ipv4_network': str(device_params.si_ipv4_network), 'ias_lt_network': { 'v4': str(device_params.ias_lt_ipv4_network), 'v6': str(device_params.ias_lt_ipv6_network) }, 'site_country_code': device_params.site_country_code, 'site_city': device_params.site_city, 'site_latitude': device_params.site_latitude, 'site_longitude': device_params.site_longitude, 'snmp_location': device_params.snmp_location, 'device_type': node_subscription_params.device_type, 'device_vendor': node_subscription_params.device_vendor, 'ts_address': device_params.ts_address, 'ts_port': device_params.ts_port } } post_request = requests.post( f'{pp_params.scheme}://{pp_params.api_base}' f'/api/device', json=parameters) post_request.raise_for_status()