
                             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  G d
 de	j                        Zy)z'Command to create a Membership Binding.    )absolute_import)division)unicode_literals)client)util)base)	resources)labels_utilc                   &    e Zd ZdZed        Zd Zy)Createa  Create a Membership Binding.

  This command can fail for the following reasons:
  * The Membership Binding already exists.
  * The caller does not have permission to access the given Membership.
  * The Scope or the Membership does not exist.
  * The caller did not specify the location (--location) if referring to
  location other than global.

  ## EXAMPLES

  To create a membership binding `BINDING_NAME` in global membership
  `MEMBERSHIP_NAME` for scope `SCOPE_NAME`, run:

    $ {command} BINDING_NAME --membership=MEMBERSHIP_NAME --scope=SCOPE_NAME

  To create a Binding `BINDING_NAME` associated with regional membership
  `MEMBERSHIP_NAME`, provide the location LOCATION_NAME for the Membership where
  the Binding belongs along with membership name and associated
  Scope `SCOPE_NAME`.

  $ {command} BINDING_NAME --membership=MEMBERSHIP_NAME --scope=SCOPE_NAME
    --location=LOCATION_NAME
  c                 2   t        j                  |t        j                  | j	                            d       |j                  d      }t        j                  |dt        j                  | j	                            d|       t        j                  |       y )NzrName of the membership Binding to be created.Must comply with RFC 1123 (up to 63 characters, alphanumeric and '-'))api_versionbinding_helpT)requiredz--scopez*The Fleet Scope to bind the membership to.)	flag_namer   
scope_helpgroup)	r	   AddMembershipBindingResourceArgr   VERSION_MAPReleaseTrackadd_mutually_exclusive_groupAddScopeResourceArgr
   AddCreateLabelsFlags)clsparserr   s      :lib/surface/container/fleet/memberships/bindings/create.pyArgszCreate.Args6   s    --$$S%5%5%78$	 ///>E!!$$S%5%5%78? $$V,    c                    t        j                  | j                               }d }|j                  j                  j                         2|j                  j                  j                         j                         }t        j                  |j                        }|j                  |j                  j                  j                  d       j                         }|j                  t!        j"                  |      ||      S )N)release_track)	additions)scopelabels)r   FleetClientr   CONCEPTSr"   ParseRelativeNamer
   Diffr#   ApplymessagesMembershipBindingLabelsValue	GetOrNoneCreateMembershipBindingr	   MembershipBindingResourceName)selfargsfleetclientr"   labels_diffr#   s         r   Runz
Create.RunK   s    $$43D3D3FGKE}}  ".mm!!'')668e""T[[9K..::Dik  ..//5 /  r   N)__name__
__module____qualname____doc__classmethodr   r4    r   r   r   r      s     2 - -(r   r   N)r8   
__future__r   r   r   &googlecloudsdk.api_lib.container.fleetr   r   googlecloudsdk.callioper   *googlecloudsdk.command_lib.container.fleetr	   $googlecloudsdk.command_lib.util.argsr
   CreateCommandr   r:   r   r   <module>rA      s4    . &  ' 9 7 ( @ <<T <r   