
                             d Z ddlmZ ddlmZ ddlmZ ddl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mZ ddlmZ ddlmZ dZdZdZdZej6                   G d dej8                               Zy)z0Generates YAML for anthos support RBAC policies.    )absolute_import)division)unicode_literalsN)projects_api)client)base)	resources)util)errors)log)
propertieszTservice-{project_number}@gcp-sa-{instance_name}anthossupport.iam.gserviceaccount.comANTHOS_SUPPORTzgke-fleet-support-accessz7{membership_name}/rbacrolebindings/{rbacrolebinding_id}c                   ,    e Zd ZdZd Zed        Zd Zy)GetYamlzGenerates YAML for anthos support RBAC policies.

  ## EXAMPLES

    To generate the YAML for support access RBAC policies with membership
    `my-membership`, run:

      $ {command} my-membership

  c                    t        j                  t        j                  |            j                  }t        j                         }|t
        j                  k(  rt        j                  |d      S |t
        j                  k(  rt        j                  |d      S |t
        j                  k(  rt        j                  |d      S t        j                  d      )zGets P4SA account name for Anthos Support when user not specified.

    Args:
      project_id: the project ID of the resource.

    Returns:
      The P4SA account name for Anthos Support.
     )project_numberinstance_namezstaging-z	autopush-gkehub)r   Getprojects_utilParseProjectprojectNumberr
   APIEndpointPROD_APIANTHOS_SUPPORT_USERformatSTAGING_APIAUTOPUSH_APIr   UnknownApiEndpointOverrideError)self
project_idr   hub_endpoint_overrides       Blib/surface/container/fleet/memberships/support_access/get_yaml.pyGetAnthosSupportUserzGetYaml.GetAnthosSupportUser5   s     "%%"":.m  !,,.- '''r (   
$"2"2	2 '''z (   
$"3"3	3 '''{ (   228<<    c                     t        j                  |t        j                  d      t        j                  d      dd       |j	                  dt
        t        j                  d             y )Nzp            The membership name that you want to generate support access RBAC
            policies for.
        z            The location of the membership resource, e.g. `us-central1`.
            If not specified, defaults to `global`.
        T)membership_helplocation_helpmembership_required
positionalz--rbac-output-filezv            If specified, the generated RBAC policy will be written to the
            designated local file.
        )typehelp)r	   AddMembershipResourceArgtextwrapdedentadd_argumentstr)clsparsers     r$   ArgszGetYaml.ArgsQ   sk    &&  )  oo '  ! __    r&   c                    t         j                  j                  j                  j	                         }| j                  |      }t        j                  t        j                  |      t              }t        j                  | j                               }|j                  |t        |d       }|j                   r9t"        j$                  j'                  dj                  |j                                n>t"        j$                  j'                  d       t"        j$                  j'                  d       t)        j*                  |j                   r|j                   nd|j,                  ddd	       y )
N)membership_namerbacrolebinding_id)release_trackz.Generated RBAC policy is written to file: {} 
zGenerated RBAC policy is: 
z---------------------------------------------
-TF)	overwritebinaryprivate)r   VALUEScoreproject	GetOrFailr%   RESOURCE_NAME_FORMATr   r	   ParseMembershipArgROLE_BINDING_IDr   FleetClientReleaseTrack%GenerateMembershipRbacRoleBindingYaml	ROLE_TYPErbac_output_filesysstdoutwriter   WriteToFileOrStdoutroleBindingsYaml)r!   argsr"   usernamefleet_clientresponses          r$   RunzGetYaml.Rung   s   ""''//99;J$$Z0D&&!44T:* ' ,D %%D4E4E4GHLAAit%H 	jjHOO


! " 
jj56	jjGH !%!6!6C!!r&   N)__name__
__module____qualname____doc__r%   classmethodr5   rT    r&   r$   r   r   (   s%    	=8  *r&   r   )rX   
__future__r   r   r   rJ   r/   +googlecloudsdk.api_lib.cloudresourcemanagerr   &googlecloudsdk.api_lib.container.fleetr   googlecloudsdk.callioper   *googlecloudsdk.command_lib.container.fleetr	   r
   6googlecloudsdk.command_lib.container.fleet.membershipsr   #googlecloudsdk.command_lib.projectsr   googlecloudsdk.corer   r   r   rH   rD   rB   DefaultUniverseOnlyCommandr   rZ   r&   r$   <module>re      sr    7 &  ' 
  D 9 ( @ ; I E # *l 	,P  Wdll W Wr&   