??????????????
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@s2ddlmZmZmZmZmZmZddlm Z m Z m Z yddl m Z mZWnek rwnXddlZddlmZdefdYZdefd YZd efd YZd efd YZdefdYZdefdYZdefdYZdS(i(tcamel_dict_to_snake_dictt%get_ec2_security_group_ids_from_namestansible_dict_to_boto3_tag_listtboto3_tag_list_to_ansible_dicttcompare_policiestAWSRetry(tget_elbtget_elb_listenertconvert_tg_name_to_arn(t BotoCoreErrort ClientErrorN(tdeepcopytElasticLoadBalancerV2cBskeZdZdZdZdZdZdZdZdZ dZ d Z d Z RS( cCsO||_||_t|_t|_|jjd|_|jjd|_|jjd|_ |jjd|_ |jjd|_ |jjd|_ |jjddk rt|jjd|_n d|_|jjd|_t|||j|_|jdk rB|j|_|j|jdNs( Rtjittered_backoffRt!describe_load_balancer_attributesRRR R RR&tdicttitems(R!t attr_listRR)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyR=s cCs|j|_dS(sF Update the elb_attributes parameter :return: N(RR(R!((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pytupdate_elb_attributesPscCsiy9tj|jjd|jdgdddSWn)ttfk rd}|jj|nXdS(s: Get load balancer tags :return: t ResourceArnsR+tTagDescriptionsitTagsN( RR3Rt describe_tagsRR R RR&(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyR Ws  !cCsly3tj|jjd|jdgd|Wn)ttfk r^}|jj|nXt |_ dS(s3 Delete elb tags :return: R9R+tTagKeysN( RR3Rt remove_tagsRR R RR&tTrueR(R!ttags_to_deleteR)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyt delete_tagses cCsoy6tj|jjd|jdgd|jWn)ttfk ra}|jj |nXt |_ dS(s3 Modify elb tags :return: R9R+R;N( RR3Rtadd_tagsRRR R RR&R?R(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyt modify_tagsus cCscy*tj|jjd|jdWn)ttfk rU}|jj|nXt |_ dS(s- Delete elb :return: R+N( RR3Rtdelete_load_balancerRR R RR&R?R(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pytdeletes cCsg}g}|jdk rFx(|jD]}|ji|d6q%Wn|jdk ra|j}nxn|jdD]_}i|dd6}x8|jdgD]$}d|kr|d|dsN(RRtappendRRRtset(R!tsubnet_mapping_id_listRtsubnett this_mappingtaddress((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pytcompare_subnetss  cCsly3tj|jjd|jdd|jWn)ttfk r^}|jj |nXt |_ dS(sP Modify elb subnets to match module parameters :return: R+tSubnetsN( RR3Rt set_subnetsRRR R RR&R?R(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pytmodify_subnetss cCsAt|j|j|jjjd|_|j|jds (RWRXR"RsR}R~R(((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRYs  " tNetworkLoadBalancercBs,eZdZdZdZdZRS(cCs|tt|j||||_d|_|jjd|_|jdk rx|jddkrx|j j ddndS(s\ :param connection: boto3 connection :param module: Ansible module tnetworktcross_zone_load_balancingRdR]sfThe load balancer type you are trying to manage is not network. Try elb_application_lb module instead.N( ReRR"RfRgRRRRRRRi(R!RRfR((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyR"Ps   "cCst}|j|d<|j|d<|jd k rB|j|deZdZdZdZdZdZdZRS(cs||_||_||_|jjd}|dk rkg|D]"tfdD^q@}n|j||_|j |_ |jjd|_ t |_ dS(Nt listenersc3s/|]%}|dk r||fVqdS(N(R(R0tx(t listener_dict(sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pys stpurge_listeners(RRR'RRRR5t(_ensure_listeners_default_action_has_arnRt_get_elb_listenerstcurrent_listenersRRR(R!RRR'R((RsB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyR"s    2cCs|j|_dS(sD Update the listeners for the ELB :return: N(RR(R!((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRVscCsoy?|jjd}tj|jd|jjdSWn)ttfk rj}|j j |nXdS(s5 Get ELB listeners :return: tdescribe_listenersR+t ListenersN( Rt get_paginatorRR3tpaginateR'tbuild_full_resultR R RR&(R!tlistener_paginatorR)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRs -cCs|sg}ng}x|D]{}g}xU|dD]I}d|krot|j|j|d|d<|d=n|j|q3W||d<|j|qW|S(sg If a listener DefaultAction has been passed with a Target Group Name instead of ARN, lookup the ARN and replace the name. :param listeners: a list of listener dicts :return: the same list of dicts ensuring that each listener DefaultActions dict has TargetGroupArn key. If a TargetGroupName key exists, it is removed. tDefaultActionstTargetGroupNametTargetGroupArn(RRRRL(R!Rtfixed_listenerstlistenert fixed_actionstaction((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRs       cCsg}g}t|j}x|jD]}t}x|jD]}t|d|d<|d|dkr<t}|j||j||}|r|d|d<|d|d<|j|nPq<q<W| r%|j r%|j|dq%q%W|||fS(s :return: tPortt ListenerArn( R RRRtintR?tremovet_compare_listenerRLR(R!tlisteners_to_modifytlisteners_to_deletetlisteners_to_addtcurrent_listenert!current_listener_passed_to_modulet new_listenertmodified_listener((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pytcompare_listenerss& cCsi}|d|dkr+|d|d;scSs|dS(NR((R((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyR<sRdsauthenticate-oidctAuthenticateOidcConfigt ClientSecretN(RLtlenRRitsortedtpopR(R!RRRRtcurrent_actions_sortedtnew_actions_sortedtnew_actions_sorted_no_secret((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRsN  $ $  !  ,  (RWRXR"RVRRRR(((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRs     t ELBListenercBs,eZdZdZdZdZRS(cCs(||_||_||_||_dS(sm :param connection: :param module: :param listener: :param elb_arn: N(RRRR'(R!RRRR'((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyR"Xs   cCsyNd|jkr%|jjdntj|jjd|j|jWnQttfk r}dt |kr|j j ddq|j j |nXdS(NtRulesR+s-"Order", must be one of: Type, TargetGroupArnR]suinstalled version of botocore does not support multiple actions, please upgrade botocore to version 1.10.30 or higher( RRRR3Rtcreate_listenerR'R R RjRRiR&(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pytaddfs,cCsyEd|jkr%|jjdntj|jj|jWnQttfk r}dt|kr|j j ddq|j j |nXdS(NRs-"Order", must be one of: Type, TargetGroupArnR]suinstalled version of botocore does not support multiple actions, please upgrade botocore to version 1.10.30 or higher( RRRR3Rtmodify_listenerR R RjRRiR&(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pytmodifyus#cCsVy&tj|jjd|jWn)ttfk rQ}|jj|nXdS(NR( RR3Rtdelete_listenerRR R RR&(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyREs&(RWRXR"RRRE(((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRVs   tELBListenerRulescBs>eZdZdZdZdZdZdZRS(cCs||_||_||_|j||_t|_t|||||_|jd|_ t |j|_ g|_ g|_ d|jkr|j|_n g|_dS(NR(RRR't_ensure_rules_action_has_arntrulesRRRRt listener_arnR t rules_to_addtrules_to_modifytrules_to_deletet_get_elb_listener_rulest current_rules(R!RRR'tlistener_rulest listener_port((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyR"s      cCsg}x|D]{}g}xU|dD]I}d|kr`t|j|j|d|d<|d=n|j|q$W||d<|j|q W|S(sI If a rule Action has been passed with a Target Group Name instead of ARN, lookup the ARN and replace the name. :param rules: a list of rule dicts :return: the same list of dicts ensuring that each rule Actions dict has TargetGroupArn key. If a TargetGroupName key exists, it is removed. tActionsRR(RRRRL(R!Rt fixed_rulestruleRR((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRs      cCs^y.tj|jjd|jddSWn)ttfk rY}|jj|nXdS(NRR( RR3Rtdescribe_rulesRR R RR&(R!R)((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyRs.cCst}x|D]}|jdrg|d|dkr|ddd|dddkrt}Pqq |d|dkr t|dt|dkr t}Pq q W|S(sX :param current_conditions: :param condition: :return: tSourceIpConfigtFieldtValuesi(RRR?R(R!tcurrent_conditionst conditiontcondition_foundtcurrent_condition((sB/usr/lib/python2.7/site-packages/ansible/module_utils/aws/elbv2.pyt_compare_conditions $4c Csi}t|dt|dkr7|d|ds.  V6