??????????????
Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 173

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 174

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 176

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 177

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 178
ó àUdac@`ssddlmZmZmZeZddlZddlZddlZddl Z ddl Z ddl m Z ddlmZmZddlmZddlmZmZddlmZmZmZddlmZdd lmZdd lmZm Z m!Z!m"Z"m#Z#dd l$m%Z%dd l&m'Z'e'ƒZ(e j)d ej*j+ej*j+fƒZ,ddd„ƒYZ-dS(i(tabsolute_importtdivisiontprint_functionN(t constants(tAnsibleFileNotFoundtAnsibleParserError(t is_executable(t binary_typet text_type(tto_bytest to_nativetto_text(tunquote(t from_yaml(tVaultLibtb_HEADERt is_encryptedtis_encrypted_filetparse_vaulttext_envelope(t unfrackpath(tDisplayu(?:^|%s)+tasks%s?$t DataLoadercB`seZdZd„Zd„Zdeed„Zeeed„Zd„Z d„Z d„Z d „Z d „Z dd „Zd „Zd „Zd„Zd„Zd„Zed„Zed„Zd„Zed„Zd„Zd„Zded„Zd„ZRS(s  The DataLoader class is used to load and parse YAML or JSON content, either from a given file name or from a string that was previously read in through other means. A Vault password can be specified, and any vault-encrypted files will be decrypted. Data read from files will also be cached, so the file will never be read from disk more than once. Usage: dl = DataLoader() # optionally: dl.set_vault_password('foo') ds = dl.load('...') ds = dl.load_from_file('/path/to/file') cC`sGd|_tƒ|_tƒ|_i|_tƒ|_|jdƒdS(Nt.( t_basedirtdictt _FILE_CACHEtsett _tempfilest_vaultsRt_vaulttset_vault_secretstNone(tself((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt__init__5s      cC`s||j_dS(N(Rtsecrets(R t vault_secrets((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyRKsscC`st||||jjd|ƒS(sBackwards compat for nowt json_only(R RR"(R tdatat file_namet show_contentR$((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytloadNsc C`s¸|j|ƒ}tjd|ƒ|rE||jkrE|j|}nX|j|ƒ\}}t|ddƒ}|jd|d|d|d|ƒ}||j|<|r§|Stj|ƒSdS( sA Loads data from a file, which can contain either JSON or YAML. sLoading data from %sterrorstsurrogate_or_strictR%R&R'R$N( t path_dwimtdisplaytdebugRt_get_file_contentsR R(tcopytdeepcopy( R R&tcachetunsafeR$t parsed_datat b_file_dataR't file_data((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytload_from_fileRs$ cC`s+|j|ƒ}tjjt|ddƒƒS(NR)R*(R+tostpathtexistsR (R R8((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt path_existslscC`s:|j|ƒ}tjjt|ddƒƒp9|tjkS(NR)R*(R+R7R8tisfileR tdevnull(R R8((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytis_filepscC`s+|j|ƒ}tjjt|ddƒƒS(NR)R*(R+R7R8tisdirR (R R8((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt is_directorytscC`s|j|ƒ}tj|ƒS(N(R+R7tlistdir(R R8((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytlist_directoryxscC`s|j|ƒ}t|ƒS(sis the given path executable?(R+R(R R8((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyR|sc C`s\t|ƒst}||fSt|ƒ\}}}}|jj|d|ƒ}t}||fS(sMDecrypt b_vault_data if encrypted and return b_data and the show_content flagtfilename(RtTrueRRtdecrypttFalse( R t b_vault_datat b_file_nameR't b_ciphertextt b_versiont cipher_nametvault_idtb_data((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt_decrypt_if_vault_datas  cC`sé| st|ttfƒ r6tdt|ƒƒ‚nt|j|ƒƒ}|j|ƒsotdd|ƒ‚ny8t |dƒ#}|j ƒ}|j ||ƒSWdQXWn;t t fk rä}td|t|ƒfd|ƒ‚nXdS(s  Reads the file contents from the given file name If the contents are vault-encrypted, it will decrypt them and return the decrypted data :arg file_name: The name of the file to read. If this is a relative path, it will be expanded relative to the basedir :raises AnsibleFileNotFound: if the file_name does not refer to a file :raises AnsibleParserError: if we were unable to read the file :return: Returns a byte string of the file contents sInvalid filename: '%s's Unable to retrieve file contentsR&trbNs8an error occurred while trying to read the file '%s': %storig_exc(t isinstanceRRRR R R+R:RtopentreadRMtIOErrortOSError(R R&RGtfR%te((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyR.Žs  cC`s|jS(s returns the current basedir (R(R ((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt get_basedir«scC`s"|dk rt|ƒ|_ndS(sK sets the base directory, used to find files when a relative path is given N(RR R(R tbasedir((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt set_basedir¯s cC`s‹t|ƒ}t|ddƒ}|jttjjƒƒsH|jdƒrQ|}n*t|jddƒ}tjj||ƒ}t|dt ƒS(s= make relative paths work like folks expect. R)R*u~tfollow( R R t startswithR7R8tsepRtjoinRRE(R tgivenR8RX((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyR+µs * c C`s÷t|ddƒ}tt|dtƒddƒ}xÀd D]¸}x¯d D]§}d |}tjj||ƒ}tj|ƒr™tjjtjj||ƒƒsçtjjtjj||ƒƒsçtjjtjjtjj |ƒ|ƒƒrDt SqDWq7WtS( sR imperfect role detection, roles are still valid w/o tasks|meta/main.yml|yaml|etc R)R*RZtmetattaskss.ymls.yamltsmain%s(R_R`(s.ymls.yamlRa( R RRER7R8R]tRE_TASKStsearchR9tdirnameRC(R R8tb_pathtb_upatht b_finddirtb_suffixtb_maintb_tasked((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt_is_roleÅs   !!- c C`s1g}t|ddƒ}|jttjjƒƒsB|jdƒr^|jt|dtƒƒnœ|jtjj|||ƒƒt|dtƒ}|s§|j |ƒ}n|rÝt j |ƒrÝttjj |ƒdtƒ}n|j }|j|ƒ|jttjj|||ƒdtƒƒ|j|ƒ|ro|j|ƒ ro|jttjj|d|ƒdtƒƒn|jttjj||ƒdtƒƒ|jttjj||ƒdtƒƒ|j|jtjj||ƒƒƒ|j|j|ƒƒx0|D](}tjjt|ddƒƒrPqqW|S(sç find one file in either a role or playbook dir with or without explicitly named dirname subdirs Used in action plugins and lookups to find supplemental files that could be in either place. R)R*u~RZR`(R R[R7R8R\tappendRRER]RkRbRcRdRRYtendswithR+R9R ( R R8Rdtsourcetis_roleRcRXt cur_basedirt candidate((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytpath_dwim_relativeÙs0 *!  + .((% c C`st|ddƒ}t|ddƒ}d}g}|dkrLtjdƒnw|r²|jdƒsv|jtjjƒr²t|dt ƒ} tjj t| ddƒƒrÃ| }qÃntj ddj |ƒƒx |D]} t| dt ƒ} t| ddƒ} tjj | ƒ} |s$|j| ƒr}| jdƒr}|jtjj tjj | ƒ||ƒƒ|jtjj | |ƒƒqÓ|jd ƒd |kr¸|jtjj | ||ƒƒn|jtjj | |ƒƒqÓW|jd ƒd |kr%|jtjj t|jƒddƒ||ƒƒn|jtjj t|jƒddƒ|ƒƒtj d tdj |ƒƒƒxM|D]E}tjd |t|ƒfƒtjj |ƒrzt|ƒ}PqzqzW|dkrtd |dg|D]}t|ƒ^q⃂n|S(su find one file in first path in stack taking roles into account and adding play basedir as fallback :arg paths: A list of text strings which are the paths to look for the filename in. :arg dirname: A text string representing a directory. The directory is prepended to the source to form the path to search for. :arg source: A text string which is the filename to search for :rtype: A text string :returns: An absolute path to the filename ``source`` if found :raises: An AnsibleFileNotFound Exception if the file is found to exist in the search paths R)R*s:Invalid request to find a file that matches a "null" valuet~RZuevaluation_path: %ss s/taskst/iusearch_path: %sulooking for "%s" at "%s"R&tpathsN(R RR,twarningR[R7R8R\RRER9R-R]RdRkRmRltsplitRWR tvvvvvRR (R RuRdRnRot b_dirnametb_sourcetresultRct test_pathR8tupathRft b_pb_base_dirt b_candidatetp((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytpath_dwim_relative_stacksB  *  $+" 4.    1cC`stjdtjƒ\}}tj|dƒ}t|ƒ}zDy|j|ƒWn,tk r{}tj |ƒt|ƒ‚nXWd|j ƒX|S(s. Create a tempfile containing defined content tdirtwbN( ttempfiletmkstemptCtDEFAULT_LOCAL_TMPR7tfdopenR twritet Exceptiontremovetclose(R tcontenttfdtcontent_tempfileRUterr((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt_create_content_tempfileKs   c C`sƒ| st|ttfƒ r6tdt|ƒƒ‚nt|ddƒ}|j|ƒ sh|j|ƒ rztd|ƒ‚n|j |ƒ}y²|r6t t|ƒdƒŠ}t |dt t ƒƒr-|jƒ}|jjsótdt|ƒƒ‚n|jj|d|ƒ}|j|ƒ}|jj|ƒnWd QXn|SWnAttfk r~}td t|ƒt|ƒfd |ƒ‚nXd S( sÑ If the file is vault encrypted return a path to a temporary decrypted file If the file is not encrypted then the path is returned Temporary files are cleanup in the destructor sInvalid filename: '%s'R)R*R&RNtcounts:A vault password or secret must be specified to decrypt %sRBNs8an error occurred while trying to read the file '%s': %sRO(RPRRRR R R:R=RR+RQRtlenRRRRR"RDR‘RtaddRSRT(R t file_pathRDt b_file_patht real_pathRUR%RV((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyt get_real_fileYs&   cC`s3||jkr/tj|ƒ|jj|ƒndS(s· Removes any temporary files created from a previous call to get_real_file. file_path must be the path returned from a previous call to get_real_file. N(RR7tunlinkR‹(R R•((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytcleanup_tmp_files cC`sVxO|jD]D}y|j|ƒWq tk rM}tjdt|ƒƒq Xq WdS(s£ Removes all temporary files that DataLoader has created NOTE: not thread safe, forks also need special handling see __init__ for details. s Unable to cleanup temp files: %sN(RRšRŠR,RvR (R RURV((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytcleanup_all_tmp_files‹s c C`sûttjj||ƒƒ}g}|dkr@dgtj}nx´|D]¬}d|krl|t|ƒ}n*|rdj|t|ƒgƒ}n|}|j|ƒrG|j|ƒrâ|rG|j |j t |ƒ|ƒƒqïqGn |j |ƒPqGqGW|S(s¶ Find vars files in a given path with specified name. This will find files in a dir named / or a file called ending in known extensions. RaRN( R R7R8R]RR†tYAML_FILENAME_EXTENSIONSR:R?textendt_get_dir_vars_filesR Rl( R R8tnamet extensionst allow_dirRetfoundtextt full_path((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pytfind_vars_files–s$   " cC`sâg}xÕt|j|ƒƒD]¾}|jdƒ r|jdƒ rtjj|ƒd}tjj||ƒ}|j|ƒrŸ| rŸ|j |j ||ƒƒqÚ|j |ƒrÚ| sÇt |ƒ|krÚ|j |ƒqÚqqW|S(Nu.u~iÿÿÿÿ(tsortedRAR[RmR7R8tsplitextR]R?RRžR=R Rl(R R8R R¢tspathR£t full_spath((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyRž¸s (N(t__name__t __module__t__doc__R!RRCRER(R6R:R=R?RARRRMR.RWRYR+RkRrRR‘R˜RšR›R¥Rž(((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyR"s0             7 ;  ( "((.t __future__RRRttypet __metaclass__R/R7tos.pathtreR„tansibleRR†tansible.errorsRRtansible.module_utils.basicRtansible.module_utils.sixRRtansible.module_utils._textR R R tansible.parsing.quotingR tansible.parsing.utils.yamlR tansible.parsing.vaultRRRRRtansible.utils.pathRtansible.utils.displayRR,tcompileR8R\RbR(((s>/usr/lib/python2.7/site-packages/ansible/parsing/dataloader.pyts&     ( %