ó 'KXc@síddlZddlZddlmZddlmZddlmZddlmZddlm Z ddl m Z dZ d Z d ZejeƒZd efd „ƒYZd efd „ƒYZd„Zd„Zd„Zd„ZdS(iÿÿÿÿN(timporter(tlog(t type_utils(t user_data(tutil(t launch_indext FILESYSTEMtNETWORKt DataSourcetDataSourceNotFoundExceptioncBseZRS((t__name__t __module__(((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyR )scBsÑeZejZdd„Zd„Zed„Z d„Z e d„ƒZ d„Z e d„ƒZd„Zd„Zd „Zd „Zd „Zd „Zd „Ze d„ƒZd„Zeed„Zd„ZRS(cCsä||_||_||_d|_d|_d|_d|_d|_t j |ƒ}|j t ƒry|t t ƒ}n|jdƒr˜|dd!}ntj|jd|fiƒ|_|s×tj|jƒ|_n ||_dS(NtNetiiýÿÿÿt datasource(tsys_cfgtdistrotpathstNonetuserdatatmetadatat userdata_rawt vendordatatvendordata_rawRtobj_namet startswitht DS_PREFIXtlentendswithRtget_cfg_by_pathtds_cfgtudtUserDataProcessortud_proc(tselfRRRR tname((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyt__init__1s$         cCs tj|ƒS(N(RR(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyt__str__KscCsJ|jdkr-|jj|jƒƒ|_n|rC|j|jƒS|jS(N(RRR tprocesstget_userdata_rawt _filter_xdata(R!t apply_filter((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyt get_userdataNs cCs4|jdkr-|jj|jƒƒ|_n|jS(N(RRR R%tget_vendordata_raw(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pytget_vendordataUscCs+|js dSd|jkr'|jdSdS(Ns launch-index(RR(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyRZs   cCsHtjtj|jƒƒg}|}x|D]}|j|ƒ}q+W|S(N(RtFilterRtsafe_inttapply(R!t processed_udtfilterstnew_udtf((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyR'bs  cCstS(N(tFalse(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pytis_disconnectedkscCs|jS(N(R(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyR&oscCs|jS(N(R(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyR*rscCsiS(N((R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pytget_config_objxscCst|jjdƒƒS(Ns public-keys(tnormalize_pubkey_dataRtget(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pytget_public_ssh_keys{scCs„idd6}xp|jƒD]b\}}|j|ƒs;qnx>|D]6}d||t|ƒf}tjj|ƒrB|SqBWqWdS(Ntvdtxvdtvtbtsds /dev/%s%s(R9R:R;(t iteritemsRRtostpathtexistsR(R!t short_nametmappingstnfromttlisttntotcand((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyt _remap_device~s   cCsdS(N(R(R!t_name((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pytdevice_name_to_deviceŽscCs|jjdkrdSdSdS(Ntaixten_USs en_US.UTF-8(RR"(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyt get_locale–scCs|jjd|jjdƒƒS(Nsavailability-zonetavailability_zone(RR7(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyRMœs cCs.|j sd|jkrdSt|jdƒS(Ns instance-idsiid-datasource(Rtstr(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pytget_instance_id¡sc Cs~d}d}|}|j s+d|jkr£g}tjƒ}tj|ƒ}|r|jdƒdkrt|ƒjdƒ}q&|r”||g}q&||g}nƒ|jd}tj|ƒrg}|rÝtj|ƒ}n|rût|ƒjdƒ}q&d|j ddƒg}n|jdƒ}t |ƒdkrX|d}dj |dƒ}n |d}|rvd ||fS|SdS( Nt localdomaint localhostslocal-hostnamet.isip-%st-is%s.%s( RRt get_hostnametget_fqdn_from_hoststfindRNtsplittis_ipv4t gethostbyaddrtreplaceRtjoin( R!tfqdnt resolve_ipt defdomaintdefhosttdomainttoksthostnametlhost((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyRT§s8    cCs|jjd|jƒS(NRM(Rtget_package_mirror_infoRM(R!((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyRdÕs N(R R tabctABCMetat __metaclass__RR#R$R3R)R+tpropertyRR'R4R&R*R5R8RGRIRLRMRORTRd(((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyR-s&              .cCsçg}|s|St|ttfƒr5t|ƒjƒSt|ttfƒrTt|ƒSt|tƒrãx}|jƒD]l\}}t|ttfƒr|g}nt|ttfƒrpx'|D]}|r¹|j|ƒq¹q¹WqpqpWn|S(N( t isinstancet basestringRNt splitlinestlisttsettdictR=tappend(t pubkey_datatkeyst_keynametklisttpkey((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyR6Ús    c Csät|||ƒ}g|D]}tj|ƒ^q}tjd|ƒxz|D]r} yEtjd| ƒ| |||ƒ} | jƒr•| tj| ƒfSWqKtk r¼tjtd| ƒqKXqKWddj |ƒ} t | ƒ‚dS(Ns Searching for data source in: %ss%Seeing if we can get any data from %ssGetting data from %s faileds4Did not find any data source, searched classes: (%s)s, ( t list_sourcesRRtLOGtdebugtget_datat ExceptionRtlogexcR[R ( RRRtds_depstcfg_listtpkg_listtds_listR2tds_namestclststmsg((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyt find_source÷s"   c Cs½g}tjd|||ƒxš|D]’}|jtƒsKdt|f}ntj||dgƒ}xO|D]G}tj|ƒ}t|dƒ}||ƒ} | rj|j| ƒPqjqjWq#W|S(NsPLooking for for data source in: %s, via packages %s that matches dependencies %ss%s%stget_datasource_list( RvRwRRRt find_modulet import_moduletgetattrtextend( R|tdependsR}tsrc_listtds_nametm_locstm_loctmodtlistertmatches((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyRus"         cCsOg}t|ƒ}x6|D].\}}|t|ƒkr|j|ƒqqW|S(N(RmRo(R‰R~tret_listtdepsetR€tdeps((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pytlist_from_depends*s  (ReR>t cloudinitRRtloggingRRRRtcloudinit.filtersRtDEP_FILESYSTEMt DEP_NETWORKRt getLoggerR RvRyR tobjectRR6RƒRuR”(((sG/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/__init__.pyts"  ­