
                         &   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dZ e	j                  e	j                   j"                  e	j                   j$                         G d de	j&                               Zee_        y)z<Command for adding or updating or patching partner metadata.    )absolute_import)division)unicode_literals)base_classes)partner_metadata_utils)base)
exceptions)flagsa%            {command} can be used to patch partner metadata of a
        virtual machine instance. Every instance has access to a
        metadata server that can be used to query partner metadata that has
        been set through this tool. For information on metadata, see link:https://cloud.google.com/compute/docs/metadata/overview[About VM metadata].

        Only namespaces keys that are provided are mutated. Existing
        Namespaces entries will remain unaffected.

        In order to retrieve partner metadata, run:

            $ gcloud compute instances describe example-instance --zone
            us-central1-a --view=FULL --format="value(partnerMetadata)"

        where example-instance is the name of the virtual machine instance
        you're querying partner metadata from.

        a          To add partner metadata under namespace ``test.compute.googleapis.com''
        to instance ``TEST_INSTANCE'' run:

          $ {command} TEST_INSTANCE \
          --partner-metadata=test.compute.googleapis.com/entries/engine="{ "engine": { "type": V8 } }"

        To add partner metadata from a file:

          $ {command} TEST_INSTANCE \
          --partner-metadata-from-file=examples/engine.json

        )DESCRIPTIONEXAMPLESc                   ,    e Zd ZdZed        Zd Zd Zy)InstancesPatchPartnerMetadatazPatch partner metadata.c                 p    t         j                  j                  | d       t        j                  |        y )Nzset partner metadata on)operation_type)r
   INSTANCE_ARGAddArgumentr   AddPartnerMetadataArgs)parsers    7lib/surface/compute/instances/patch_partner_metadata.pyArgsz"InstancesPatchPartnerMetadata.ArgsD   s1    	""8 #  11&9    c           	      &   t        j                  |      }t        j                  ||j                        }|j                  j
                  d |j                  j                  dd|j                  j                  |      i|j                         fS )NPatchPartnerMetadatapartnerMetadata)r    )	r   CreatePartnerMetadataDict#ConvertPartnerMetadataDictToMessagemessagesapitools_client	instances+ComputeInstancesPatchPartnerMetadataRequestPartnerMetadataAsDict)selfclientinstance_refargspartner_metadata_dictpartner_metadata_messages         r   $_make_patch_partner_metadata_requestzBInstancesPatchPartnerMetadata._make_patch_partner_metadata_requestK   s    2LL 	BB!OO	
  	((CCC 	
"OO;; 8 < 	
 !!#		
	 	r   c                    |j                   s$|j                  st        j                  ddgd      t	        j
                  | j                               }|j                  }t        j                  j                  ||j                  t        j                  |            }| j                  |||      }|j                  |g      S )Nz--partner-metadataz--partner-metadata-from-filezXAt least one of [--partner-metadata] or [--partner-metadata-from-file] must be provided.)scope_lister)partner_metadatapartner_metadata_from_filecalliope_exceptionsOneOfArgumentsRequiredExceptionr   ComputeApiHolderReleaseTrackr%   r
   r   ResolveAsResource	resourcesGetInstanceZoneScopeListerr*   MakeRequests)r$   r'   holderr%   r&   patch_requests         r   Runz!InstancesPatchPartnerMetadata.Run`   s      )H)H??!?
@> 
 **4+<+<+>?F]]F%%7755f= 8 L
 ==dM //r   N)__name__
__module____qualname____doc__staticmethodr   r*   r9   r   r   r   r   r   @   s!    : :*0r   r   N)r=   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   r/   ,googlecloudsdk.command_lib.compute.instancesr
   DETAILED_HELPReleaseTracksr2   ALPHABETAUpdateCommandr   detailed_helpr   r   r   <module>rI      s     C &  ' 7 A ( E >$' F D%%++T->->-C-CD00D$6$6 00 E00f /<  +r   