
                         &   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)flagsa6            {command} can be used to add or update or 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": { "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)InstancesAddPartnerMetadatazAdd or update partner metadata.c                 p    t         j                  j                  | d       t        j                  |        y )Nzset partner metadata on)operation_type)r
   INSTANCE_ARGAddArgumentr   AddPartnerMetadataArgs)parsers    5lib/surface/compute/instances/add_partner_metadata.pyArgsz InstancesAddPartnerMetadata.ArgsD   s1    	""8 #  11&9    c           	      P   t        j                  |      }t        j                  |       t        j                  ||j                        }|j
                  j                  d |j                  j                  dd|j                  j                  |      i|j                         fS )NPatchPartnerMetadatapartnerMetadata)r    )
r   CreatePartnerMetadataDictValidatePartnerMetadata#ConvertPartnerMetadataDictToMessagemessagesapitools_client	instances+ComputeInstancesPatchPartnerMetadataRequestPartnerMetadataAsDict)selfclientinstance_refargspartner_metadata_dictpartner_metadata_messages         r    _MakePatchPartnerMetadataRequestz<InstancesAddPartnerMetadata._MakePatchPartnerMetadataRequestK   s    2LL 223HI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InstancesAddPartnerMetadata.Runa   s      )H)H??!?
@> 
 **4+<+<+>?F]]F%%7755f= 8 L
 99dM //r   N)__name__
__module____qualname____doc__staticmethodr   r+   r:   r   r   r   r   r   @   s!    ': :,0r   r   N)r>   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   r0   ,googlecloudsdk.command_lib.compute.instancesr
   DETAILED_HELPReleaseTracksr3   ALPHABETAUpdateCommandr   detailed_helpr   r   r   <module>rJ      s     C &  ' 7 A ( E >$' F D%%++T->->-C-CD10$"4"4 10 E10h -:  )r   