o x[h@sdddlZddlZddlmZddlmZddlmZeeZ ddZ ddZ dd d Z d dZ dS)N)dmi)net) url_helperc Csdd}g}t}td||dD]U}td||d}||vr.td||f|d}||}td ||||d d ||d }g} |d D]} || |d} | | qQ| |d<||q|drtd|d|d|ddd|dS)aC Convert the UpCloud network metadata description into Cloud-init's version 1 netconfig format. Example JSON: { "interfaces": [ { "index": 1, "ip_addresses": [ { "address": "94.237.105.53", "dhcp": true, "dns": [ "94.237.127.9", "94.237.40.9" ], "family": "IPv4", "floating": false, "gateway": "94.237.104.1", "network": "94.237.104.0/22" }, { "address": "94.237.105.50", "dhcp": false, "dns": [], "family": "IPv4", "floating": true, "gateway": "", "network": "94.237.105.50/32" } ], "mac": "32:d5:ba:4a:36:e7", "network_id": "031457f4-0f8c-483c-96f2-eccede02909c", "type": "public" }, { "index": 2, "ip_addresses": [ { "address": "10.6.3.27", "dhcp": true, "dns": [], "family": "IPv4", "floating": false, "gateway": "10.6.0.1", "network": "10.6.0.0/22" } ], "mac": "32:d5:ba:4a:84:cc", "network_id": "03d82553-5bea-4132-b29a-e1cf67ec2dd1", "type": "utility" }, { "index": 3, "ip_addresses": [ { "address": "2a04:3545:1000:720:38d6:baff:fe4a:63e7", "dhcp": true, "dns": [ "2a04:3540:53::1", "2a04:3544:53::1" ], "family": "IPv6", "floating": false, "gateway": "2a04:3545:1000:720::1", "network": "2a04:3545:1000:720::/64" } ], "mac": "32:d5:ba:4a:63:e7", "network_id": "03000000-0000-4000-8046-000000000000", "type": "public" }, { "index": 4, "ip_addresses": [ { "address": "172.30.1.10", "dhcp": true, "dns": [], "family": "IPv4", "floating": false, "gateway": "172.30.1.1", "network": "172.30.1.0/24" } ], "mac": "32:d5:ba:4a:8a:e1", "network_id": "035a0a4a-77b4-4de5-820d-189fc8135714", "type": "private" } ], "dns": [ "94.237.127.9", "94.237.40.9" ] } cSs|drd}|ddkrd}d|iSd}|ddkrd}|d|d d }|d r4|d |d <d |d vrG|d d d|d<||dkrZ|drZ|d|d<|S)NdhcpfamilyIPv6zipv6_dhcpv6-statelesstypestaticstatic6autoaddress)rcontrolr gateway/networknetmaskdnsdns_nameservers)getsplit)ip_addrr dhcp_type static_typesubpartrC/usr/lib/python3/dist-packages/cloudinit/sources/helpers/upcloud.py_get_subnet_configrs&  z8convert_to_network_config_v1.._get_subnet_configzNIC mapping: %s interfaceszConsidering %smaczVDid not find network interface on system with mac '%s'. Cannot apply configuration: %srz4Found %s interface '%s' with address '%s' (index %d)indexphysical)rname mac_address ip_addressesrsubnetszSetting DNS nameservers to %s nameserver)rr r)versionconfig)cloudnetget_interfaces_by_macLOGdebugr RuntimeErrorappend) r(r nic_configsmacs_to_interfaces raw_ifacer# iface_type sysfs_name interfacer% ip_addresssub_partrrrconvert_to_network_config_v1sLc          r7cCst|S)N)r7)r(rrrconvert_network_configsr8cCs6tj||||d}|std|t|jS)N)timeout sec_betweenretrieszunable to read metadata at %s)rreadurlokr-jsonloadscontentsdecode)urlr;r<r=responserrr read_metadatas  rFcCsNtd}|dkr dStd}|rtd|d|fSd}t|t|)Nzsystem-manufacturerUpCloud)FNz system-uuidz2system identified via SMBIOS as UpCloud server: %szsystem identified via SMBIOS as a UpCloud server, but did not provide an ID. Please contact support viahttps://hub.upcloud.com or via email with support@upcloud.comT)r read_dmi_datar+r,criticalr-) vendor_name server_uuidmsgrrr read_sysinfos    rM)r9r9r:)r@logging cloudinitrrr)r getLogger__name__r+r7r8rFrMrrrrs    2