
                             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
lmZ ddlmZ ddlZdZdZdZdZdZedz   Zd Zd Zd Zd Zd Zd Zd Zd Z G d de      Z d Z!d Z"d Z#y) z0Create hooks for Cloud Media Asset's asset type.    )absolute_import)division)unicode_literals)encoding)apis)waiter)base)
exceptions)
properties)	resourcesN
mediaassetz(mediaasset.projects.locations.operationszprojects/{}/locations/{}z&projects/{}/locations/{}/assetTypes/{}z0projects/{}/locations/{}/assetTypes/{}/assets/{}z/annotationSets/{}c                 6    t        j                  t        |       S N)r   GetMessagesModuleMEDIA_ASSET_APIapi_versions    3lib/googlecloudsdk/command_lib/media/asset/utils.pyGetApiMessager   &       				==    c                 6    t        j                  t        |       S r   )r   GetClientInstancer   r   s    r   	GetClientr   *   r   r   c                  j    t         j                  j                  j                  j	                  d      S NT)required)r   VALUEScoreprojectGet r   r   
GetProjectr#   .   s(    						'	'	+	+T	+	::r   c                     | j                   xs4 t        j                  j                  j                   j	                  d      S r   )locationr   r   media_assetr!   )argss    r   GetLocationr(   2   s;    	 
*++77@@DD E  r   c                 .    t         j                  | |      S r   )PARENT_TEMPLATEformat)r    r%   s     r   GetParentTemplater,   7   s    				22r   c                 0    t         j                  | ||      S r   )ASSET_TYPE_PARENT_TEMPLATEr+   )r    r%   
asset_types      r   GetAssetTypeParentTemplater0   ;   s    	#	*	*7Hj	IIr   c                 2    t         j                  | |||      S r   )ASSET_PARENT_TEMPLATEr+   )r    r%   r/   assets       r   GetAssetParentTemplater4   ?   s    		%	%gxU	KKr   c                 4    t         j                  | ||||      S r   )ANNOTATION_PARENT_TEMPLATEr+   )r    r%   r/   r3   annotation_sets        r   GetAnnotationParentTemplater8   C   s     	#	*	*7Hj%+9
; ;r   c                       e Zd ZdZy)UnsupportedReleaseTrackErrorz<Raised when calling an api with a unsupported release track.N)__name__
__module____qualname____doc__r"   r   r   r:   r:   I   s    Dr   r:   c                     | j                   j                         }|t        j                  j                  k(  ry|t        j                  j                  k(  ry|t        j                  j
                  k(  ryt        |      )a  Return API version based on args.

  Update this whenever there is a new version.

  Args:
    args: The argparse namespace.

  Returns:
    API version (e.g. v1alpha or v1beta).

  Raises:
    UnsupportedReleaseTrackError: If invalid release track from args.
  v1alphav1betav1)calliope_commandReleaseTrackr	   ALPHABETAGAr:   )r'   release_tracks     r   GetApiVersionFromArgsrI   M   sh     ''446-d''---d'',,,d''***$]33r   c                    t        j                  |       }g }|D ]E  \  }}dj                  d |D              }|D ]#  }|j                  dj	                  ||             % G |r*dg|z   }t        j                  dj                  |            y)z0Validate all parsed message from file are valid..c              3   F   K   | ]  }t        j                  |        y wr   )six	text_type).0es     r   	<genexpr>z,ValidateMediaAssetMessage.<locals>.<genexpr>k   s     !M<Lq#--"2<Ls   !z{}.{}z6Invalid schema, the following fields are unrecognized:
N)r   UnrecognizedFieldIterjoinappendr+   r
   Error)messageerrorsunrecognized_field_pathsedges_to_messagefield_namesmessage_field_path
field_nameerror_msg_liness           r   ValidateMediaAssetMessager_   f   s    ))'2&'-#!M<L!MM!
%%gnn5G5?'A B " (.
 @ !O 

499_5
66	 r   c                    t         j                  j                  | j                  t              }t        j                  t        j                  t        |      j                        |dj                  |j                                     S )z Wait for an operation to finish.)
collectionzWaiting for [{0}] to finish)r   REGISTRYParseRelativeNamenameOPERATIONS_COLLECTIONr   WaitForCloudOperationPollerNoResourcesr   projects_locations_operationsr+   Name)responser   operation_refs      r   WaitForOperationrl   v   sq    $$66mm 5 7 7-	,,
K
 
>
>@AN#**=+=+=+?@
B Br   )$r>   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.callioper	   googlecloudsdk.corer
   r   r   rM   r   re   r*   r.   r2   r6   r   r   r#   r(   r,   r0   r4   r8   	Exceptionr:   rI   r_   rl   r"   r   r   <module>rs      s    7 &  ' % , . ( * * ) 
B ,E J 25II >>;
3JL;E9 E427 Br   