
    "                     v   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ dd	l
mZ dd
l
mZ  ej                  ej                  j                   ej                  j"                  ej                  j$                        ej&                   G d dej(                                      Zddde_        y)z0Command for creating packet mirroring resources.    )absolute_import)division)unicode_literals)base_classes)base)
exceptions)client)flags)utilsc                   6    e Zd ZdZdZed        Zd Zd Zd Z	y)Update0Update a Compute Engine packet mirroring policy.Nc                     t         j                  j                  |       t        j                         | _        | j
                  j                  |d       t        j                  |       y )Nupdate)operation_type)r   
ASYNC_FLAGAddToParserr
   PacketMirroringArgumentPACKET_MIRRORING_ARGAddArgumentAddUpdateArgs)clsparsers     /lib/surface/compute/packet_mirrorings/update.pyArgszUpdate.Args%   sL    OO'$<<>C(((I	    c                      y)Nzcompute.packetMirrorings )selfs    r   
CollectionzUpdate.Collection.   s    %r   c                    t        j                  | j                               }|j                  j                  }| j
                  j                  ||j                        }t        j                  ||j                  |j                        }|j                         d   }g }| j                  ||||||       |j                  ||j                  xs d|       y )N)compute_clientregistryr   F)is_asynccleared_fields)r   ComputeApiHolderReleaseTrackr	   messagesr   ResolveAsResource	resourcesPacketMirroringDescribe_UpdateResourcer   async_)r   argsholderr(   pm_refpacket_mirroringresourcer%   s           r   Runz
Update.Run1   s    **4+<+<+>?F}}%%H&&88v?O?OPF--v}}v7G7GI  ((*1-HN>64!# 4;;/%  Pr   c           	         |j                   Q|j                   r j                  j                  j                  nj                  j                  j                  |_         |j
                  Uj                  t        j                  j                  j                  |j
                  j                              |_        |j                  |j                  |_        |j                  r,g |j                  j                   d d  |j#                  d       n|j$                  r0|j                  j                   j'                  |j$                         n|j(                  r$|j(                  |j                  j                   d d  n|j*                  r|j*                  D ]2  }||j                  j                   vst-        j.                  d|z         |j                  j                   D cg c]  }||j*                  vr| c}|j                  j                   d d  fd}	|j0                  r,g |j                  j2                  d d  |j#                  d       ny|j4                  rE|j                  j2                  j'                  |j4                  D 
cg c]
  }
 |	|
       c}
       n(|j6                  r8|j6                  D 
cg c]
  }
 |	|
       c}
|j                  j2                  d d  n|j8                  r|j8                  D 
cg c]8  }
t        j:                  j                  j                  |
j                        : }}
|D ]D  t=        fd|j                  j2                  D        d       	 .t-        j.                  dz         |j                  j2                  D cg c]  }|j>                  |vs| c}|j                  _        fd}|j@                  r,g |j                  jB                  d d  |j#                  d	       nn|jD                  rE|j                  jB                  j'                  |jD                  D cg c]
  } ||       c}       n|jF                  r8|jF                  D cg c]
  } ||       c}|j                  jB                  d d  n|jH                  r|jH                  D cg c]-  }t        jJ                  j                  |j                        / }}|D ]D  t=        fd
|j                  jB                  D        d       	 .t-        j.                  dz         |j                  jB                  D cg c]  }|j>                  |vs| c}|j                  _!        |jL                  r,g |jN                  jP                  d d  |j#                  d       n|jR                  r0|jN                  jP                  j'                  |jR                         n|jT                  r$|jT                  |jN                  jP                  d d  n|jV                  r|jV                  D ]2  }||jN                  jP                  vst-        j.                  d|z         |jN                  jP                  D cg c]  }||jV                  vr| c}|jN                  jP                  d d  |jX                  r,g |jN                  jZ                  d d  |j#                  d       n|j\                  r0|jN                  jZ                  j'                  |j\                         n|j^                  r$|j^                  |jN                  jZ                  d d  n|j`                  r|j`                  D ]2  }||jN                  jZ                  vst-        j.                  d|z         |jN                  jZ                  D cg c]  }||j`                  vr| c}|jN                  jZ                  d d  |jb                  rCjd                  jg                  |jb                  ji                               |jN                  _5        y y c c}w c c}
w c c}
w c c}
w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )NurlzmirroredResources.tagsz*Tag %s not found in this packet mirroring.c                     j                  t        j                  j                  j                  | j
                              S Nr6   )-PacketMirroringMirroredResourceInfoSubnetInfor   ResolveSubnetURIprojectregionr*   )subnetr0   r(   r1   s    r   _MakeSubnetInfoz/Update._UpdateResource.<locals>._MakeSubnetInfob   sA    CC$$V^^V]]F%+%5%57 D 8 8r   zmirroredResources.subnetworksc              3   B   K   | ]  }|j                   k(  s|  y wNr6   .0xr7   s     r   	<genexpr>z)Update._UpdateResource.<locals>.<genexpr>y   s     O>1!%%3,Q>   z-Subnet %s not found in this packet mirroring.c                 z    j                  t        j                  j                  | j                              S r9   )/PacketMirroringMirroredResourceInfoInstanceInfor   ResolveInstanceURIr<   r*   )instancer0   r(   r1   s    r   _MakeInstanceInfoz1Update._UpdateResource.<locals>._MakeInstanceInfo   s;    EE&&v~~x'-'7'79 F : :r   zmirroredResources.instancesc              3   B   K   | ]  }|j                   k(  s|  y wrA   r6   rB   s     r   rE   z)Update._UpdateResource.<locals>.<genexpr>   s     M<1Q<rF   z/Instance %s not found in this packet mirroring.zfilter.IPProtocolsz/Protocol %s not found in this packet mirroring.zfilter.cidrRangesz1CIDR Range %s not found in this packet mirroring.)6enabler+   EnableValueValuesEnumTRUEFALSEcollector_ilb!PacketMirroringForwardingRuleInfor   ResolveForwardingRuleURIr<   r=   r*   collectorIlbdescriptionclear_mirrored_tagsmirroredResourcestagsappendadd_mirrored_tagsextendset_mirrored_tagsremove_mirrored_tagsr   InvalidArgumentExceptionclear_mirrored_subnetssubnetworksadd_mirrored_subnetsset_mirrored_subnetsremove_mirrored_subnetsr;   nextr7   clear_mirrored_instances	instancesadd_mirrored_instancesset_mirrored_instancesremove_mirrored_instancesrI   clear_filter_protocolsfilterIPProtocolsadd_filter_protocolsset_filter_protocolsremove_filter_protocolsclear_filter_cidr_ranges
cidrRangesadd_filter_cidr_rangesset_filter_cidr_rangesremove_filter_cidr_rangesfilter_directionPacketMirroringFilterDirectionValueValuesEnumupper	direction)r   r1   r3   r%   r0   r/   r(   tagrD   r?   r>   urlsrK   rJ   protocolcidrr7   s    `  ` `         @r   r-   zUpdate._UpdateResourceB   s   {{AE(
"
"
8
8
=
=''==CC o %&HH,,V^^V]]D.;mV=M=MO I Ph #!--h+-h  %%a(45			  %%,,T-C-CD			+/+A+Ah  %%a(		"	"**#h0055533:S@B B +
 //44,4d/// 4,h  %%a(
8
 ""24h  ,,Q/;<		"	"  ,,33151J1J
K1Jv?6"1J
KM		"	"040I0I30If/&
!0I3h  ,,Q/ 
	%	% 44 5f 
 
 !'!1!134  
 #O22>>O 33=CE E	  //;;0;quuD?P!;0h  ,:
 $$02h  **1-9:		$	$  **115535h H
%53 	 
	$	$ 5515h H
%51h  **1- 
	'	' 888h 
"
"6>>8V=M=M
N8   #M22<<M 33?#EG G	  //99.9QUU$=N!9.h  * ""')hoo!!!$01		"	"oo!!(()B)BC		"	"'+'@'@hoo!!!$		%	%22(8??66633?(JL L 3
 __00(0d222 0(hoo!!!$
 $$&(hoo  #/0		$	$oo  ''(C(CD		$	$&*&A&Ahoo  #		'	'00$x11133ADHJ J 1
 __//'/d444 /'hoo  #
 "*"@"@"Y"Y



%
%
'#)hoo O, L303
1
. ("'sN   )aaa=a(a<a
a<a! 2a&a+)a+a0a5)
__name__
__module____qualname____doc__r   classmethodr   r    r4   r-   r   r   r   r   r      s0     9   &P"D)r   r   r   a2      Stop mirroring by tags, add subnet-1 as a mirrored subnet.

      $ {command} my-pm
          --region us-central1 --clear-mirrored-tags
          --add-mirrored-subnets subnet-1

    Change the load-balancer to send mirrored traffic to.

      $ {command} my-pm
          --region us-central1 --collector-ilb new-forwarding-rule

    Disable a Packet Mirroring policy.

      $ {command} my-pm
          --region us-central1 --no-enable

    Re-enable a disabled Packet Mirroring policy.

      $ {command} my-pm
          --region us-central1 --enable
    )DESCRIPTIONEXAMPLESN)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r   4googlecloudsdk.command_lib.compute.packet_mirroringsr	   r
   r   ReleaseTracksr'   ALPHABETAGAUniverseCompatibleUpdateCommandr   detailed_helpr   r   r   <module>r      s    7 &  ' 7 ( . G F F D%%++T->->-C-C%%((*f)T f) *f)V 	;		 r   