
                             d Z ddlmZ ddlmZ ddlmZ ddl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Z G d dej$                        Zddie_        y)z?Command for creating organization firewall policy associations.    )absolute_import)division)unicode_literalsN)base_classes)client)base)firewall_policies_utils)flags)logc                   &    e Zd ZdZed        Zd Zy)Createa
  Create a new association between a firewall policy and an organization or folder resource.

  *{command}* is used to create organization firewall policy associations. An
  organization firewall policy is a set of rules that controls access to various
  resources.
  c                     t        j                  |       |j                  j                  t         j                         y )N)r
   AddArgsCreateAssociationdisplay_infoAddCacheUpdaterFirewallPoliciesCompleter)clsparsers     <lib/surface/compute/firewall_policies/associations/create.pyArgszCreate.Args(   s*    	""6*
''(G(GH    c                 V   t        j                  | j                               }t        j                  |j                  |j
                  t        j                  | j                               j                               }d }d }d}|j                  d      r|j                  }d }|j                  d      r d|j                  z   }|d|j                  z   }|j                  d      r"| d|j                  z   }|d	|j                  z   }|)t        j                  d
       t        j                           d}|j"                  rd}|j                  j$                  j'                  ||      }t)        j*                  ||j,                  |j                        }|j/                  |||d      S )N)compute_client	resourcesversionFnamefolderzfolders/zfolder-organizationzorganizations/zorganization-zRMust specify attachment target with --organization=ORGANIZATION or --folder=FOLDERT)attachmentTargetr   )r   )associationfirewall_policy_idreplace_existing_associationonly_generate_request)r   ComputeApiHolderReleaseTrackr   OrgFirewallPolicyr   six	text_typelowerIsSpecifiedr   r   r   r   errorsysexitreplace_association_on_targetmessagesFirewallPolicyAssociationr	   GetFirewallPolicyIdfirewall_policyAddAssociation)	selfargsholderorg_firewall_policyr   attachment_targetr"   r    r!   s	            r   Runz
Create.Run-   s   **4+<+<+>?F 22}}""d//1288:<
 D#( YYd!$t{{2	4;;&',=,E*T->->>	!2!22 	ii 
hhj#( ))%)"--((BB* C 7K 1DD&&( ---%A#	 . % %r   N)__name__
__module____qualname____doc__classmethodr   r9    r   r   r   r       s"     I I.%r   r   EXAMPLESz    To associate an organization firewall policy under folder with ID
    ``123456789" to folder ``987654321", run:

      $ {command} --firewall-policy=123456789 --folder=987654321
    )r=   
__future__r   r   r   r,   googlecloudsdk.api_lib.computer   0googlecloudsdk.api_lib.compute.firewall_policiesr   googlecloudsdk.callioper   4googlecloudsdk.command_lib.compute.firewall_policiesr	   r
   googlecloudsdk.corer   r'   CreateCommandr   detailed_helpr?   r   r   <module>rI      sS    F &  ' 
 7 C ( X F # 
;%T ;%~ 	 r   