??????????????
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@`s·ddlmZmZmZeZddlZddlZddlZddl m Z m Z ddl m ZddlmZddlmZddlmZddlmZmZdd lmZdd lmZdd lmZdd lm Z dd l!m"Z"ddl#m$Z$e"ƒZ%d„Z dd„Z'dd„Z(d„Z)defd„ƒYZ*de*fd„ƒYZ+de,fd„ƒYZ-de,fd„ƒYZ.de,fd„ƒYZ/dS(i(tabsolute_importtdivisiontprint_functionN(t AnsibleErrortAnsibleParserError(tto_safe_group_name(t parse_address(t AnsiblePlugin(tCachePluginAdjudicator(tto_bytest to_native(tMapping(tboolean(t string_types(tTemplar(tDisplay(t combine_varscC`st|dtdtƒS(Ntforcetsilent(t original_safetTrue(tname((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyR+scC`s d|kS(sÉ A helper function that checks a given host line to see if it contains a range pattern described in the docstring above. Returns True if the given line contains a pattern, else False. t[((tline((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt detect_range0sc`sSg}|rO|jdddƒjdddƒjdƒ\}}}|jdƒ}t|ƒdkr„t|ƒdkr„tdƒ‚n|d }|d}t|ƒdkr³d}n |d}|sÌd }n|sátd ƒ‚n|d d krBt|ƒdkrBt|ƒ‰ˆt|ƒkr0td ƒ‚n‡fd †} nt} yitjj|ƒ} tjj|ƒ} | | krŠtdƒ‚nttj| | dt |ƒ…ƒ} Wn9t k rìt t |ƒt |ƒdt |ƒƒ} nXx[| D]S} dj || | ƒ|fƒ}t |ƒr:|jt|ƒƒqô|j|ƒqôW|SdS(s´ A helper function that expands a given line that contains a pattern specified in top docstring, and returns a list that consists of the expanded version. The '[' and ']' characters are used to maintain the pseudo-code appearance. They are replaced in this function with '|' to ease string splitting. References: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#hosts-and-groups Rt|it]t:iis.host range must be begin:end or begin:end:stepit0s!host range must specify end values:host range must specify equal-length begin and end formatsc`st|ƒjˆƒS(N(tstrtzfill(tx(trlen(sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pytfillhss!host range must have begin <= endtN(treplacetsplittlenRRtstringt ascii_letterstindextlisttintt ValueErrortrangetjoinRtextendtexpand_hostname_rangetappend(Rt all_hoststheadtnrangettailtboundstbegtendtstepR!ti_begti_endtseqtrseqthname((R sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyR/:sF 6$     "  * ,  cK`s˜yt||}Wn>tk rS}dt|ƒkrJtd|ƒ‚qT|‚nX|dkr”|r”t|jddƒ r”tdj|ƒƒ‚n|S(Ntfact_caching_connectionserror, '%s' inventory cache plugin requires the one of the following to be set to a writeable directory path: ansible.cfg: [default]: fact_caching_connection, [inventory]: cache_connection; Environment: ANSIBLE_INVENTORY_CACHE_CONNECTION, ANSIBLE_CACHE_PLUGIN_CONNECTION.tmemoryt_optionssÜUnable to use cache plugin {0} for inventory. Cache options were provided but may not reconcile correctly unless set via set_options. Refer to the porting guide if the plugin derives user settings from ansible.constants.(t CacheObjectRR tgetattrt_plugintNonetformat(t plugin_nametkwargstcachete((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pytget_cache_plugin‚s  ( tBaseInventoryPlugincB`sheZdZdZeeƒZd„Zed„Z d„Z d d d„Z d„Z d„Zd„ZRS( s Parses an Inventory Sourcet generatorcC`s2tt|ƒjƒi|_d|_t|_dS(N(tsuperRKt__init__R@RDt inventorytdisplay(tself((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyRN›s  cC`s(||_||_td|ƒ|_dS(sz Populates inventory from the given data. Raises an error on any parse failure :arg inventory: a copy of the previously accumulated inventory data, to be updated with any new data this plugin provides. The inventory can be empty if no other source/plugin ran successfully. :arg loader: a reference to the DataLoader, which can read in YAML and JSON files, it also has Vault support to automatically decrypt files. :arg path: the string that represents the 'inventory source', normally a path to a configuration file for this inventory, but it can also be a raw string for this plugin to consume :arg cache: a boolean that indicates if the plugin should use the cache or not you can ignore if this plugin does not implement caching. tloaderN(RRRORttemplar(RQRORRtpathRH((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pytparse£s  cC`s\t}t|ddƒ}tjj|ƒrHtj|tjƒrHt}n|jj dƒ|S(s• Verify if file is usable by this plugin, base does minimal accessibility check :arg path: a string that was passed as an inventory source, it normally is a path to a config file, but this is not a requirement, it can also be parsed itself as the inventory data to process. So only call this base class if you expect it to be a file. terrorstsurrogate_or_strictsWSkipping due to inventory source not existing or not being readable by the current user( tFalseR tosRTtexiststaccesstR_OKRRPtvvv(RQRTtvalidtb_path((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt verify_fileµs ' cC`s„t|tƒs(tdt|ƒƒ‚nxU|D]M}|jj|d|d|ƒx(|D] }|jj||||ƒqXWq/WdS(Ns8Invalid data from file, expected dictionary and got: %stgrouptport(t isinstanceR RR ROtadd_hostt set_variable(RQthostst variablesRaRbthosttk((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt_populate_host_varsÅs   c`sCi}yˆjj|dtƒ}Wn%tk rI}tt|ƒƒ‚nX|sitdt|ƒƒ‚n_|jdƒˆjkr td|jddƒƒ‚n(t|t ƒsÈtdt |ƒƒ‚nˆj d|ƒdˆj kr?ˆj dƒr?dddg}t‡fd†|Dƒƒ}tˆj dƒ|ˆ_n|S(s† validate config and set options as appropriate :arg path: path to common yaml format config file for this plugin RHs %s is emptytplugins!Incorrect plugin name in file: %ss none foundsJinventory source has invalid structure, it should be a dictionary, got: %stdirectt_uritcache_connectiont_timeoutt cache_timeoutt_prefixt cache_prefixc3`s?|]5}ˆj|dƒr|dˆj|dƒfVqdS(iiN(t get_option(t.0topt(RQ(sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pys èst cache_plugin(RmRn(RoRp(RqRr(RRtload_from_fileRXt ExceptionRR tgettNAMERcR ttypet set_optionsR@RstdictRJt_cache(RQRTtconfigRItcache_option_keyst cache_options((RQsF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt_read_config_dataÎs"cC`s=x6|jD]+}||kr |j|ƒ|j|>s(s_uriscache_connection(s_timeouts cache_timeout(s_prefixs cache_prefix(RsR}RJR~(RQRFR€R((RQsF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pytload_cache_plugin;scC`sdj|j|j|ƒƒS(Ns{0}_{1}(RERzt_get_cache_prefix(RQRT((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt get_cache_keyAscC`s€tjƒ}|jt|jddƒƒ|jƒ}tjƒ}|jt|ddƒƒ|jƒ}dj|d |d gƒS(s7 create predictable unique prefix for plugin/inventory RVRWts_i(thashlibtsha1tupdateR Rzt hexdigestR-(RQRTtmtd1tntd2((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyRŸDs    cC`s|jjƒdS(N(R~tflush(RQ((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt clear_cacheQscC`s|jjƒdS(N(R~tupdate_cache_if_changed(RQ((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyR¬TscC`s|jjƒdS(N(R~t set_cache(RQ((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyR˜Ws( R‹RŒRAR~tpropertyRHRžR RŸR«R¬R˜(((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyR3s     t ConstructablecB`s5eZd„Zed„Zed„Zed„ZRS(cC`s>|j}||_|jd|jj||jjfdtƒS(si helper method for plugins to compose variables for Ansible based on jinja2 expression and inventory varss%s%s%stdisable_lookups(RStavailable_variablesttemplatet environmenttvariable_start_stringtvariable_end_stringR(RQR²Rgtt((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt_compose]s  cC`sž|ršt|tƒršx‚|D]w}y|j|||ƒ}Wn>tk r|}|rtd||t|ƒfƒ‚qqnX|jj|||ƒqWndS(s5 loops over compose entries to create vars for hosts s Could not set %s for host %s: %sN(RcR}R·RxRR RORe(RQtcomposeRgRhtstricttvarnamet compositeRI((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt_set_composite_varscs "c C`s|rt|tƒrt||jj|ƒjƒƒ}||j_x¼|D]±}d||}t|dt ƒ}yt |jj |ƒƒ}Wn>t k rË}|rIt d||t|ƒfƒ‚qIqInX|rI|jj|ƒ}|jj||ƒqIqIWndS(s} helper to create complex groups for plugins based on jinja2 conditionals, hosts that meet the conditional are added to groups3{%% if %s %%} True {%% else %%} False {%% endif %%}Rs%Could not add host %s to group %s: %sN(RcR}RROtget_hosttget_varsRSR±RRR R²RxRR t add_groupt add_child( RQtgroupsRgRhR¹t group_namet conditionaltresultRI((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt_add_host_to_composed_groupsos!  "c C`sÿ|rût|tƒrûxã|D]Ø}|rät|tƒrät||jj|ƒjƒƒ}y|j|jdƒ|ƒ}WnGt k rÀ}|rt d||jdƒt |ƒfƒ‚qqnX|r§|jddƒ}|jddƒ} |jdd ƒ} | r]y|j j| ƒ} Wq]tk rY}|rt d| |t |ƒfƒ‚qqq]Xng} t|tƒr‚| j|ƒn•t|tƒr²xƒ|D]} | j| ƒq˜Wnet|tƒrxS|jƒD],\} }d | | |f} | j| ƒqÎWnt d t|ƒƒ‚xÇ| D]‚}|jd || |fƒ} |jj| ƒ}|jj||ƒ| r|j| ƒ}|jj|ƒ|jj||ƒqqWqô|rô|gifkrôt d |jdƒ|fƒ‚qôqt d |ƒ‚qWnd S(sc helper to create groups for plugins based on variable values and add the corresponding hosts to itR—s6Could not generate group for host %s from %s entry: %stprefixR"t separatort_t parent_groups3Could not generate parent group %s for group %s: %ss%s%s%ssUInvalid group name format, expected a string or a list of them or dictionary, got: %ss=No key or key resulted empty for %s in host %s, invalid entrys7Invalid keyed group entry, it must be a dictionary: %s N(RcR)R}RROR½R¾R·RyRxRR RDRSR²RR R0R titemsR{RR¿RdRÀ(RQtkeysRgRhR¹tkeyedR—RIRÆtseptraw_parent_nametnew_raw_group_namesRtgnametgvalt bare_namet result_gnamet parent_name((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyt_add_host_to_keyed_groups…sV !+"   %(R‹RŒR·RXR¼RÅRÕ(((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyR¯[s  (0t __future__RRRR{t __metaclass__R¢RYR&tansible.errorsRRtansible.inventory.groupRRtansible.parsing.utils.addressesRtansible.pluginsRtansible.plugins.cacheRRAtansible.module_utils._textR R t/ansible.module_utils.common._collections_compatR t)ansible.module_utils.parsing.convert_boolR tansible.module_utils.sixR tansible.templateRtansible.utils.displayRtansible.utils.varsRRPRDRR/RJRKR‘tobjectR“RR¯(((sF/usr/lib/python2.7/site-packages/ansible/plugins/inventory/__init__.pyts4      H | (