fddlZddlZddlZddlmZddlmZddlmZm Z ddl m Z ddl m Z ejeZGddZy) N)Optional)Distro)PathsRunners)events) DataSourceceZdZ ddedededededee jf dZ e d Z dd Zd Zdd Zd Ze dZdZdZddZdZddZddZddZy)CloudN datasourcepathscfgdistrorunnersreporterc||_||_||_||_||_|t j ddd}||_y)Nzunnamed-cloud-reporterF)name descriptionreporting_enabled)r r r_cfg_runnersrReportEventStackr)selfr r r rrrs 1/usr/lib/python3/dist-packages/cloudinit/cloud.py__init__zCloud.__init__ sO%     ..-4"'H ! c@tj|jSN)copydeepcopyrrs rr z Cloud.cfg6s}}TYY''rc@|jj|||||S)aRun a function gated by a named semaphore for a desired frequency. The typical case for this method would be to limit running of the provided func to a single well-defined frequency: PER_INSTANCE, PER_BOOT or PER_ONCE The semaphore provides a gate that persists across cloud-init boot stage boundaries so multiple modules can share this state even if they happen to be run in different boot stages or across reboots. )rrun)rrfunctorargsfreq clear_on_fails rr"z Cloud.run;s!}}  wdMJJrc|jj|z}tjj |s5t j dtjj||y|S)Nz-No template found in %s for template named %s)r template_tplospathisfileLOGwarningdirname)rrfns rget_template_filenamezCloud.get_template_filenameIsR ZZ $ $ -ww~~b! KK?#   rc8|jj|Sr)r get_userdata)r apply_filters rr2zCloud.get_userdataUs++L99rc6|jjSr)r get_instance_idr s rr5zCloud.get_instance_idXs..00rc.|jjSr)r launch_indexr s rr7zCloud.launch_index[s+++rc6|jjSr)r get_public_ssh_keysr s rr9zCloud.get_public_ssh_keys_s2244rc6|jjSr)r get_localer s rr;zCloud.get_localebs))++rc<|jj||S)N)fqdn metadata_only)r get_hostname)rr=r>s rr?zCloud.get_hostnamees#++],  rc8|jj|Sr)r device_name_to_devicerrs rrAzCloud.device_name_to_devicejs44T::rc8|jj|Sr)r get_ipath_currBs rrDzCloud.get_ipath_curmszz''--rc8|jj|Sr)r get_cpathrBs rrFzCloud.get_cpathpzz##D))rc8|jj|Sr)r get_ipathrBs rrIzCloud.get_ipathsrGrr)NF)T)FF)__name__ __module__ __qualname__rrdictrrrrrrpropertyr r"r0r2r5r7r9r;r?rArDrFrIrrr r s7;!!! !  !  !6223!,(( K :1,,5, ;.**rr )rloggingr)typingrcloudinit.distrosrcloudinit.helpersrrcloudinit.reportingrcloudinit.sourcesr getLoggerrJr,r rOrrrWs=  $,&(g!U*U*r