
                            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 ddlmZ ddlmZ dddZej(                   ej*                  ej,                  j.                         G d dej0                                      Zej(                   ej*                  ej,                  j4                         G d de                    Zy)zCommand to enroll a new scope.    )absolute_import)division)unicode_literals)
exceptions)	constants)enrollments)base)exception_utils)flags)
propertiesEnroll a new scope.z         To enroll a project with ID `123` with `gs://test-bucket-1` and `gs://my-bucket-2` as eligible storage buckets, run:

        $ {command} --project=123 --eligible-gcs-buckets="gs://test-bucket-1,gs://my-bucket-2"
        )DESCRIPTIONEXAMPLESc                   V    e Zd ZdZeZej                  j                  Z	e
d        Zd Zy)Addr   c                 Z    t        j                  | d       t        j                  |        y )Nz	to enroll)r   %AddProjectOrFolderOrOrganizationFlagsAddEligibleDestinationsFlags)parsers    ,lib/surface/audit_manager/enrollments/add.pyArgszAdd.Args1   s     	//D	&&v.    c                 H   |j                   du}|j                  du}|rdj                  |j                         }n;|rdj                  |j                        }ndj                  |j                        }|dz  }t	        j
                  | j                  	      }	 |j                  ||j                  ||
      S # t        j                  $ r}t        j                  |      }|j                  t        j                        rd}t        j                   j"                  j$                  j'                         }	d|_        |rd}
n|rd}
nd}
|
 d|r|j                   n|r|j                  n|j                   d|	 d| |_        t-        j.                  |       Y d}~yd}~ww xY w)zRun the add command.Nzfolders/{folder})folderzorganizations/{organization})organizationzprojects/{project})projectz/locations/global)api_version)eligible_gcs_bucketsis_parent_folderis_parent_organizationzroles/auditmanager.adminzgrant permissionz6gcloud resource-manager folders add-iam-policy-bindingz<gcloud resource-manager organizations add-iam-policy-bindingz&gcloud projects add-iam-policy-binding z --member=user:z --role )r   r   formatr   r   EnrollmentsClientr   r   r   apitools_exceptions	HttpErrorr
   AuditManagerErrorhas_error_infoERROR_REASON_PERMISSION_DENIEDr   VALUEScoreaccountGetsuggested_command_purposesuggested_commandcore_exceptionsreraise)selfargsr   r    scopeclienterrorexcroleusercommand_prefixs              r   RunzAdd.Run6   s   {{$.!..d: ''t{{';e	,33(( 4 e #))$,,)?e	  E**t7G7GHF#ZZ
#88+!7	    (( #--e4c			OJJ	K)  %%--113(:%F  $L  D./J`T5F5FfjfrfrsdV8D63 	 c""/#s   B< <F!CFF!N)__name__
__module____qualname____doc___DETAILED_HELPdetailed_helpr   
ApiVersionV1r   staticmethodr   r:    r   r   r   r   )   s4      -$$''+/ /1#r   r   c                   <    e Zd ZdZej
                  j                  Zy)AddAlphar   N)r;   r<   r=   r>   r   rA   V1_ALPHAr   rD   r   r   rF   rF   j   s     $$--+r   rF   N)r>   
__future__r   r   r   apitools.base.pyr   r$   $googlecloudsdk.api_lib.audit_managerr   r   googlecloudsdk.callioper	   (googlecloudsdk.command_lib.audit_managerr
   r   googlecloudsdk.corer/   r   r?   DefaultUniverseOnlyReleaseTracksReleaseTrackGACreateCommandr   ALPHArF   rD   r   r   <module>rT      s    % &  ' > : < ( D : = * ) D%%(()<#$

 <# * <#~ D%%++,.s . - .r   