
                         H   S r SSKJr  SSKJr  SSKJ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.    )absolute_import)division)unicode_literalsN)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(   K   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.)r3   r   
isinstancedictValidatePartnerMetadata)r)   r8   s     r   r?   r?   q   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.   r8   r9   )StructuredEntriesr.   EntriesValuer4   additionalPropertiesappendAdditionalPropertyr   DictToMessager   	JsonValue)structured_entriescompute_messagesstructured_entries_messager8   r9   s        r   ConvertStructuredEntriesrL   {   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

rA   )PartnerMetadataPartnerMetadataValuer4   rD   rE   rF   rL   )r7   rJ   partner_metadata_messager:   rI   s        r   #ConvertPartnerMetadataDictToMessagerQ      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.   rD   r   MessageToDictr9   r8   r1   dumps)rK   structured_entries_dictstructured_entrys      r   ConvertStructuredEntriesToJsonrW      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.   rW   )rK   s    r   EncodeStructuredEntriesH_AddEncodingForStructuredEntriesMessage.<locals>.EncodeStructuredEntries   s    !))1)*DEEr   c                 H   > [         R                  " U 5      n[        UT5      $ N)r1   r2   rL   )rI   rU   messagess     r   DecodeStructuredEntriesH_AddEncodingForStructuredEntriesMessage.<locals>.DecodeStructuredEntries   s!    "jj);<#$;XFFr   rB   )encoderdecoderN)hasattrr   RegisterCustomMessageCodecrB   )r_   r[   r`   s   `  r   '_AddEncodingForStructuredEntriesMessagerf      sC    F
G X*++'''  " ,r   r^   )r   
__future__r   r   r   r1   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?   rL   rQ   rW   rf   r   r   r   <module>rq      s     / &  '  % ( 5 9 /++Iw?**9f=9Z-=-= 9. 26#L5 *7$@ -:"4-"( ( 6 ' 5r   