
    o                     $   S r SSKrSSKJr  SSKJr  SSKJr  SSKJr	  SSK
Jr  \	R                  " SS	5      r\	R                  " SS
5      r " S S\R                  5      rS rS r SS jrS r\4S jr\4S jrS rS r\" \5        \" \5        g)z(utilities function for partner metadata.    N)encoding)extra_types)
exceptions)apis)arg_parserscomputealphabetac                       \ rS rSrSrSrg)&NullValueInAddPartnerMetadataException   z0Null values not allowed in add-partner-metadata. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       <lib/googlecloudsdk/api_lib/compute/partner_metadata_utils.pyr   r      s    8r   r   c           	          U R                  S[        R                  " 5       S0 S[        R                  S9  U R                  S[        R                  " 5       SSS9  g	)
z/Adds --metadata and --metadata-from-file flags.z--partner-metadatazlPartner metadata specifying namespace and its entries. The entries can be key-value pairs or in json format.zNAMESPACE/KEY=VALUE)typehelpdefaultmetavaractionz--partner-metadata-from-filez6Path to a local json file containing partner metadata.LOCAL_FILE_PATH)r   r   r   N)add_argumentr   ArgDictUpdateActionFileContents)parsers    r   AddPartnerMetadataArgsr#   #   sd     7 #%%  
 	$##%
B  r   c                 B    [        U R                  U R                  5      $ )zcreate partner metadata from the given args.

Args:
  args: args containing partner-metadata or partner-metadata-from-file flags

Returns:
  python dict contains partner metadata from given args.
)_CreatePartnerMetadataDictpartner_metadatapartner_metadata_from_file)argss    r   CreatePartnerMetadataDictr)   :   s"     
$
T<<
 r   c                    0 nU(       a  [         R                  " U5      n0 nUR                  5        H  nSX$   ;   a  X$   X4'   M  SX$   0X4'   M     U R                  5        H  u  pEUR	                  S5      tpgXc;  a  S0 0X6'   X6   n U(       a:  USS  H  nX;   a  X   O0 X'   X   n M     [         R                  " U5      XS   '   Mg  [         R                  " U5      X6'   M     U$ )zcreate partner metadata from the given args.

Args:
  partner_metadata: partner metadata dictionary.
  partner_metadata_from_file: partner metadata file content.

Returns:
  python dict contains partner metadata from given args.
entries/N)jsonloadskeysitemssplit)	r&   r'   partner_metadata_filepartner_metadata_dictkeyvalue	namespacer+   entrys	            r   r%   r%   H   s	     JJ'AB"'')c)..#8#= $-/D/I#J 	 *
 %**,jc))C.I-*3R&,73B<%','@#b 	 ,2	  
 '+jj&7r{#)-E):& - 
r   c                     U R                  5        H9  nX   c  [        S5      e[        X   [        5      (       d  M,  [	        X   5        M;     g )Nz0Null values are not allowed in partner metadata.)r0   r   
isinstancedictValidatePartnerMetadata)r&   r5   s     r   r<   r<   n   sM    ""$c$2
<  "'...34 %r   c           
         UR                  5       nU b  SU ;  a  U$ U S   c	  SUl        U$ UR                   R                  5       Ul        U S   R                  5        Ho  u  p4UR                  R                  R                  UR                   R                  R                  U[        R                  " U[        R                  5      S95        Mq     U$ )zConvert structured entries dictionary to message.

Args:
  structured_entries: dictionary represents partner metadata structuredEntries
  compute_messages: compute messages object

Returns:
  StructuredEntries message

Nr+   r5   r6   )StructuredEntriesr+   EntriesValuer1   additionalPropertiesappendAdditionalPropertyr   DictToMessager   	JsonValue)structured_entriescompute_messagesstructured_entries_messager5   r6   s        r   ConvertStructuredEntriesrI   x   s      0AAC94F#F%%	"*)-&%%((557 $ 'y1779jc&&;;BB**77JJ811%9N9NO 	K 	
 : 
$#r   c           
          UR                   R                  5       nU R                  5        HK  u  p4UR                  R	                  UR                   R                  R                  U[        XA5      S95        MM     U$ )zConvert partner metadata dictionary to message.

Args:
  partner_metadata_dict: dictionary represents partner metadata
  compute_messages: compute messages object

Returns:
  partnerMetadata message

r>   )PartnerMetadataPartnerMetadataValuer1   rA   rB   rC   rI   )r4   rG   partner_metadata_messager7   rF   s        r   #ConvertPartnerMetadataDictToMessagerN      s|     &&;;=  (='B'B'D#i1188((==PP*+=P 	Q 	
 (E 
"!r   c                     S0 0nU R                   R                   H3  n[        R                  " UR                  5      US   UR
                  '   M5     [        R                  " U5      $ )Nr+   )r+   rA   r   MessageToDictr6   r5   r.   dumps)rH   structured_entries_dictstructured_entrys      r   ConvertStructuredEntriesToJsonrT      sf    &O "))>>  	/556 I&'7';';< ? 
+	,,r   c                    ^  S nU 4S jn[        T S5      (       a%  [        R                  " XS9" T R                  5        gg)zAdd encoding for StructuredEntries message to convert it to json string.

Args:
  messages: message represntantion of compute api.
c                 4    U R                   c  g[        U 5      $ )Nnull)r+   rT   )rH   s    r   EncodeStructuredEntriesH_AddEncodingForStructuredEntriesMessage.<locals>.EncodeStructuredEntries   s    !))1)*DEEr   c                 H   > [         R                  " U 5      n[        UT5      $ N)r.   r/   rI   )rF   rR   messagess     r   DecodeStructuredEntriesH_AddEncodingForStructuredEntriesMessage.<locals>.DecodeStructuredEntries   s!    "jj);<#$;XFFr   r?   )encoderdecoderN)hasattrr   RegisterCustomMessageCodecr?   )r\   rX   r]   s   `  r   '_AddEncodingForStructuredEntriesMessagerc      sC    F
G X*++'''  " ,r   r[   )r   r.   apitools.base.pyr   r   googlecloudsdk.api_lib.computer   googlecloudsdk.api_lib.utilr   	core_apisgooglecloudsdk.callioper   GetMessagesModulealpha_messagebeta_messageErrorr   r#   r)   r%   r<   rI   rN   rT   rc   r   r   r   <module>rm      s     /  % ( 5 9 /++Iw?**9f=9Z-=-= 9. 26#L5 *7$@ -:"4-"( ( 6 ' 5r   