oB]c @sddlZddlZddlZddlZddlZddlZddlmZddlmZ ddlm Z ddlm Z ddlm Z ddlm Z ddlmZe jeZid d d fd 6d e jifd6ddd fd6ZddefddeffZdZdZdZdZdZdZdZdZdZ eeeeeeee fZ!d5Z#d*e$fd+YZ%d,e&fd-YZ'ej(ej)d.e&fd/YZ*d0e*fd1YZ+d2e*fd3YZ,ddd4Z-dS(6iN(t ec2_utils(tlog(tnet(tsources(t url_helper(tutil(tBrokenMetadatatnetwork_configcCs|S(N((tx((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt stsetc/network/interfacestmeta_jssmeta.jstauthorized_keyscCs|S(N((R((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyR "ssroot/.ssh/authorized_keysslocal-hostnamethostnames instance-idtuuidtlatests 2012-08-10s 2013-04-04s 2013-10-17s 2015-10-15s 2016-06-30s 2016-10-06s 2017-02-22s 2018-08-27tbgpovstbridgetdvstethernetthw_vebthypervtovstphyttapt vhostusertvift NonReadablecBseZRS((t__name__t __module__(((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyRVst SourceMixincBs5eZdZdZdZdZdZRS(cCsS|js dS|jjdi}x*|jD]\}}||kr/|Sq/WdS(Nsblock-device-mapping(t ec2_metadatatNonetgettitems(tselftnametbdmtent_nametdevice((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt_ec2_name_to_device[s  cCs7d}|jdkrd}ntj|jj|S(Nt public_keysis public-keys(tversionRtnormalize_pubkey_datatmetadataR!(R#R$((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pytget_public_ssh_keysds cCsjd}yId|}|dkr,d|}ntj|}|rN|d}nWntjk renX|S(NsLABEL=%stswapsTYPE=%si(R Rtfind_devs_withtProcessExecutionError(R#R$R'tcriteriat dev_entries((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt_os_name_to_devicejs   cCsx|s dS|jds&d|}ntjj|r<|S|jtjj|}|rttjd|||SdS(Nt/s/dev/%ssRemapped device name %s => %s( R t startswithtostpathtexistst _remap_devicetbasenametLOGtdebug(R#R'tremapped((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt_validate_device_namews cCs|s dS|g}|dkr2|jddn|dkrN|jdnd}tjd|x6|D].}|j|}|j|}|rkPqkqkW|stjd|x9|D].}|j|}|j|}|rPqqWn|sdStjd|||SdS(Ntrootitamis(Using ec2 style lookup to find device %ss.Using openstack style lookup to find device %ssMapped %s to device %s(R tinserttappendR;R<R(R>R3(R#R$tnamesR'tn((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pytdevice_name_to_devices2      (RRR(R-R3R>RE(((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyRZs   t BaseReadercBszeZdZejdZejedZejdZejdZ dZ edZ dZ RS(cCs ||_dS(N(t base_path(R#RG((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt__init__scGsdS(N((R#tbasetadd_ons((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt _path_joinscCsdS(N((R#R7tdecode((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt _path_readscCsdS(N((R#((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt_fetch_available_versionsscCsdS(N((R#((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt_read_ec2_metadatascCsy|j}Wn/tk rA}tjd|j|g}nXgtttD] }|^qU}t}x'|D]}||krqtn|}PqtWtjd|||S(Ns4Unable to read openstack versions from %s due to: %ssSelected version '%s' from %s( RNt ExceptionR;R<RGtreversedtlistt OS_VERSIONSt OS_LATEST(R#tversions_availabletetvt supportedtselected_versiontpotential_version((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt_find_working_versions    %   cCs|jddjd}|jd}g|D]}t|r1|^q1}|shtd|n|j|jd|}|j|d|S(Nt content_pathR R4s!Item %s has no valid content patht openstackRL(R!tlstriptsplittlenRRKRGRM(R#titemRLR7t path_piecestpt valid_pieces((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt_read_content_paths%cs{tjtjdttftjfd}idd6dd6}|j}x |j D]\}\}}}j j |}d}t }yj|}WnBtk r} |stjd|| qtjd|| nXt}|r| rtd |n|ri|riy||}Wqitk re} td || fqiXn|rj|||krq|jid'd6|jd(d6n|dd?kr| jitd)6n|dd%krt|d%6s tethernet_mac_addresstidtmactlinkc3s1|]'\}}|dkr||fVqdS(RN((RRRW(R(sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pys Is t ipv4_dhcptdhcp4t ipv6_dhcptdhcp6t ipv6_slaacsipv6_dhcpv6-statelesssipv6_dhcpv6-statefultipv4tipv6tstatict ip_addresss accept-ratbondt bond_linksitbond_interfacess%stvlans%s.%st vlan_linktvlan_idtvlan_mac_addresss%%s.%ss9Unknown network_data link type (%s); treating as physicals#No mac_address or name entry for %ss"Unable to find a system nic for %st infinibandt nameserverR*tconfigN(Rsipv6_dhcpv6-statelesssipv6_dhcpv6-stateful(RR(sipv6_dhcpv6-statefulR(R(R(R R!RvR"tlowertupdateRkRBR5RRtKNOWN_PHYSICAL_TYPESR;twarningRtget_interfaces_by_macR|t isinstanceRRttupletget_ib_hwaddrs_by_interface("t network_jsont known_macsRRRt link_updatest link_id_infot bond_name_fmtt bond_numberRRRtcfgt link_mac_addrtcurinfoRDtnetworkRRRRWt link_nameR$Rt need_namest_link_idtinfoRRtfmtttargetRtib_known_hwaddrstservice((RsG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pytconvert_net_jsons    " $"               -    ,   ( NRRRRRRRRRRR(.RRzRRtR6Rwt cloudinitRRtloggingRRRRtcloudinit.sourcesRt getLoggerRR;RlRRmRkRRTt OS_FOLSOMt OS_GRIZZLYt OS_HAVANAt OS_LIBERTYt OS_NEWTON_ONEt OS_NEWTON_TWOtOS_OCATAtOS_ROCKYRSR RRyRtobjectRt add_metaclasstABCMetaRFRRR(((sG/usr/lib/python2.7/site-packages/cloudinit/sources/helpers/openstack.pyt sn        Lc7