a '¡Dgêã@sdddlZddlZddlmZddlmZddlmZe e¡Z dd„Z dd„Z dd d „Z d d„Z dS)éN)Údmi)Únet)Ú url_helperc Csdd„}g}t ¡}t d|¡| d¡D]ª}t d|¡| d¡}||vr\td||fƒ‚| d¡}| |¡}t d |||| d ¡¡d ||d œ}g} | d ¡D]} || | d¡ƒ} |  | ¡q¢| |d<| |¡q*| d¡r t d| d¡¡| d| d¡dœ¡d|dœS)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¸| d¡r(d}| d¡dkr d}d|iSd}| d¡dkr>d}|d| d ¡d œ}| d ¡rh| d ¡|d <d | d ¡vrŽ| d ¡ d ¡d|d<|| d¡kr´| d¡r´| d¡|d<|S)NZdhcpZfamilyZIPv6zipv6_dhcpv6-statelessÚtypeZstaticZstatic6ÚautoÚaddress)rZcontrolrZgatewayú/ÚnetworkéÚnetmaskÚdnsZdns_nameservers)ÚgetÚsplit)Zip_addrr Z dhcp_typeZ static_typeZsubpart©rúE/usr/lib/python3.9/site-packages/cloudinit/sources/helpers/upcloud.pyÚ_get_subnet_configrs& ý z8convert_to_network_config_v1.._get_subnet_configzNIC mapping: %sZ interfaceszConsidering %sZmaczVDid not find network interface on system with mac '%s'. Cannot apply configuration: %srz4Found %s interface '%s' with address '%s' (index %d)ÚindexZphysical)rÚnameÚ mac_addressZ ip_addressesr ÚsubnetszSetting DNS nameservers to %sZ nameserver)rrr )ÚversionÚconfig)ÚcloudnetZget_interfaces_by_macÚLOGÚdebugr Ú RuntimeErrorÚappend) rrZ nic_configsZmacs_to_interfacesZ raw_ifacerZ iface_typeZ sysfs_nameZ interfacerÚ ip_addressZsub_partrrrÚconvert_to_network_config_v1sLc   þÿ  û ý   ÿrcCst|ƒS)N)r)rrrrÚconvert_network_configÀsréécCs6tj||||d}| ¡s&td|ƒ‚t |j ¡¡S)N)ÚtimeoutÚ sec_betweenÚretrieszunable to read metadata at %s)rZreadurlÚokrÚjsonÚloadsÚcontentsÚdecode)Úurlr"r#r$ZresponserrrÚ read_metadataÄs ÿ r+cCsPt d¡}|dkrdSt d¡}|r2t d|¡nd}t |¡t|ƒ‚d|fS)Nzsystem-manufacturerZUpCloud)FNz system-uuidz2system identified via SMBIOS as UpCloud server: %sz¤system 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)rZ read_dmi_datarrZcriticalr)Z vendor_nameZ server_uuidÚmsgrrrÚ read_sysinfoÍs  ÿÿ r-)r r r!)r&ZloggingZ cloudinitrrrrZ getLoggerÚ__name__rrrr+r-rrrrÚs    2