??????????????
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@s6ddlZddlZddlZddlZddlmZyddlZeZWne k roe ZnXy&ddl Z ddl mZeZWne k r¯e ZnXyVddlZddlmZddlmZddlmZddlmZeZWne k re ZnXddljjjjjZ dgZ!d „Z"d „Z#d „Z$ee d „Z%ee d „Z&d„Z'e(d„Z)e(ddd„Z*e(dd„Z+d„Z,d„Z-dd„Z.d„Z/de0fd„ƒYZ1de2fd„ƒYZ3de3fd„ƒYZ4d e3fd!„ƒYZ5dS("iÿÿÿÿN(t LooseVersion(tservice_account(tHttp(tset_user_agent(t HttpError(tbuilds.https://www.googleapis.com/auth/cloud-platformcCsa|jjddƒ}|jjddƒp<|jjddƒ}|jjddƒ}|||fS(s0Helper to fetch creds from AnsibleModule object.tservice_account_emailtpem_filetcredentials_filet project_idN(tparamstgettNone(tmoduleRRR ((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyt_get_gcp_ansible_credentialsDs  cCstjj||ƒS(s#Wrapper around os.environ.get call.(tostenvironR (tvar_namet default_value((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyt_get_gcp_environ_varOs cCs‚|stddƒ}n|sNtddƒpHtddƒpHtddƒ}n|sutddƒpotddƒ}n|||fS(s8Helper to look in environment variables for credentials.t GCE_EMAILtGCE_CREDENTIALS_FILE_PATHtGOOGLE_APPLICATION_CREDENTIALStGCE_PEM_FILE_PATHt GCE_PROJECTtGOOGLE_CLOUD_PROJECTN(RR (RRR ((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyt _get_gcp_environment_credentialsUsc Cst|ƒ\}}}t|||ƒ\}}}|d ksT|d ksT|d krØ|tkr‚|d kr«|jddƒq«n)|d kr«|jdd||fƒn|d krÀd}n|d krØd}qØn|rút||d|d|ƒni|d6|d6|d 6S( sé Obtain GCP credentials by trying various methods. There are 3 ways to specify GCP credentials: 1. Specify via Ansible module parameters (recommended). 2. Specify via environment variables. Two sets of env vars are available: a) GOOGLE_CLOUD_PROJECT, GOOGLE_CREDENTIALS_APPLICATION (preferred) b) GCE_PROJECT, GCE_CREDENTIAL_FILE_PATH, GCE_EMAIL (legacy, not recommended; req'd if using p12 key) 3. Specify via libcloud secrets.py file (deprecated). There are 3 helper functions to assist in the above. Regardless of method, the user also has the option of specifying a JSON file or a p12 file as the credentials file. JSON is strongly recommended and p12 will be removed in the future. Additionally, flags may be set to require valid json and check the libcloud version. AnsibleModule.fail_json is called only if the project_id cannot be found. :param module: initialized Ansible module object :type module: `class AnsibleModule` :param require_valid_json: If true, require credentials to be valid JSON. Default is True. :type require_valid_json: ``bool`` :params check_libcloud: If true, check the libcloud version available to see if JSON creds are supported. :type check_libcloud: ``bool`` :return: {'service_account_email': service_account_email, 'credentials_file': credentials_file, 'project_id': project_id} :rtype: ``dict`` tmsgs;Missing GCE connection parameters in libcloud secrets file.sOGCP connection error: unable to determine project (%s) or credentials file (%s)ttrequire_valid_jsontcheck_libcloudRRR N(RRR tTruet fail_jsont_validate_credentials_file(R RRRRR ((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyt_get_gcp_credentialsfs*($           cCs»y^t|ƒL}tj|jƒƒ|rSttjƒdkrS|jddƒntSWdQXWnVt k rŽ}|jdd|dt ƒt St k r¶}|jdddt ƒnXdS(s Check for valid credentials file. Optionally check for JSON format and if libcloud supports JSON. :param module: initialized Ansible module object :type module: `class AnsibleModule` :param credentials_file: path to file on disk :type credentials_file: ``str``. Complete path to file on disk. :param require_valid_json: This argument is ignored as of Ansible 2.7. :type require_valid_json: ``bool`` :params check_libcloud: If true, check the libcloud version available to see if JSON creds are supported. :type check_libcloud: ``bool`` :returns: True :rtype: ``bool`` s0.17.0RsYUsing JSON credentials but libcloud minimum version not met. Upgrade to libcloud>=0.17.0.Ns"GCP Credentials File %s not found.tchangeds`Non-JSON credentials file provided. Please generate a new JSON key from the Google Cloud console( topentjsontloadstreadRtlibcloudt __version__R RtIOErrortFalset ValueError(R RRRt credentialste((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyR!µs  cCsõts|jddƒnt|dtdtƒ}yZ||ƒ|d|dd|jjdd ƒd |d ƒ}|jj d ||fƒWnct t fk rÂ}|jdt |ƒd tƒn/t k rð}|jdt|ƒd tƒnX|S(s+Return a Google libcloud driver connection.Rs-libcloud must be installed to use this moduleRRRRt datacentertzonetprojectR s%s/%sR#N(tHAS_LIBCLOUD_BASER R"R+RR R R t connectiontuser_agent_appendt RuntimeErrorR,tstrt Exceptiontunexpected_error_msg(R tprovidert get_drivertuser_agent_producttuser_agent_versiontcredstgcpR.((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyt gcp_connectàs      cCsý|d krgn|}ts1|jddƒnt|dtdtƒ}y}|dr‡tjj|dƒ}|r»|j |ƒ}q»n4t j j d|ƒ\}}|d k r»||d= installed version.iÿÿÿÿ(tget_distributionN(t pkg_resourcesRWtversionRR7R+(tpkg_nametminimum_versionRWtinstalled_versionR.((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pytcheck_min_pkg_versionzs cCsdt|ƒtjƒfS(s0Create an error string based on passed in error.s%Unexpected response: (%s). Detail: %s(R6t tracebackt format_exc(terror((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyR8„sR0cCsl|dkr|j|ƒ}n|j|ƒ}|dkrhd}|jdd||||fdtƒn|S(NR0sKhttps://cloud.google.com/compute/docs/regions-zones/regions-zones#availableRs;%s %s is invalid. Please see the list of available %s at %sR#(t ex_get_zonet ex_get_regionR R R+(R tdrivertlocationt location_typetltlink((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pytget_valid_location‰s    c CsÄx½|D]µ}|d|krcd|kr¼|dtkr¼td|dt|dƒfƒ‚q¼qt||d|dƒsÁtd|dt|dƒ||dt||dƒfƒ‚nd|kr||d|dkrtd|ddj|dƒfƒ‚qnt||dtƒrd |krq||d|d krqtd |d|d fƒ‚qqnd |kr¼||d|d kr¹td |d|d fƒ‚q¹q¼qqWtS( sÖ Helper to validate params. Use this in function definitions if they require specific fields to be present. :param params: structure that contains the fields :type params: ``dict`` :param field_list: list of dict representing the fields [{'name': str, 'required': True/False', 'type': cls}] :type field_list: ``list`` of ``dict`` :return True or raises ValueError :rtype: ``bool`` or `class:ValueError` tnametrequireds&%s is required and must be of type: %sttypes)%s must be of type: %s. %s (%s) provided.tvaluess%s must be one of: %st,tmins'%s must be greater than or equal to: %stmaxs$%s must be less than or equal to: %s(RR,R6t isinstanceRktjointint(R t field_listtd((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pyt check_params—s. $ '  %tGCPUtilscBsãeZdZed„ƒZed„ƒZedd„ƒZededded„ƒZ eddd„ƒZ ed„ƒZ ed „ƒZ ed „ƒZ ed „ƒZed d d„ƒZedd„ƒZed„ƒZRS(s# Helper utilities for GCP. cCs5|jdƒddjd„|jdƒdDƒƒS(Nt_iRcss!|]}|jƒpdVqdS(RwN(t capitalize(t.0tx((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pys Ési(tsplitRq(ttxt((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pytunderscore_to_camelÇscCs4dg}x$|D]}||kr||=qqW|S(s) Remove params if found. tstate((R tparams_to_removetp((s</usr/lib/python2.7/site-packages/ansible/module_utils/gcp.pytremove_non_gcp_paramsËs    cCsät|tƒs|Si}tj|ƒ}xµ|jƒD]§\}}tj|ƒ}t|tƒr{tj|ƒ}|||sX                   O+  77   +ÿe