
    G                         S r SSKrSSK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  SSKJr  SSKJr  SSKJr  SS	KJr  SSKr\R&                  " S
5      rSrSrSr\/rS rS rS r " S S\5      rg)#Cloud Marketplace Solutions client.    N)
exceptions)
list_pager)apis)DetailedArgumentError)log)	resources)resource_printerz?PERMISSION_DENIED: Permission (.+) denied on 'projects/(.+?)/.*v1alpha1globalpforgc                 d    U [         ;   a  g[        S[        R                  " [         5      -  5      e)zDValidates product property. Returns custom error message if invalid.zAllowed products are %sN)_ALLOWED_PRODUCTSr   jsondumps)products    ,lib/googlecloudsdk/api_lib/mps/mps_client.py_ValidateProductr   +   s0    !!
 9 $

+< =!> ? ?    c                     [        U [        R                  5      (       a#  [        R                  " U SS9nUR
                  nU$ [        R                  " U 5      nU$ )zEReturns a best-effort error message created from an API client error.z	{message})error_format)
isinstanceapitools_exceptions	HttpErrorapilib_exceptionsHttpExceptionmessagesix	text_type)errorparsed_errorerror_messages      r   _ParseErrorr#   4   sU    *4455$225@KML ((M 
 MM%(M	r   c                 2   U (       a  U  Vs/ s H  n[         R                  U5      PM     nn[        S U 5       5      (       aN  [        [	        S U 5       5      5      S:X  a/  SUS   R                  S5      < SUS   R                  S5      < 3/n U $ s  snf )zHIf all errors are PERMISSION_DENIEDs, use a single global error instead.c              3   (   #    U  H  oS Lv   M
     g 7fN .0matchs     r   	<genexpr>-_CollapseRegionalIAMErrors.<locals>.<genexpr>C   s     37%7s   c              3   B   #    U  H  oR                  S 5      v   M     g7f)   N)groupr(   s     r   r+   r,   D   s     8uKKNNs   r.   zPERMISSION_DENIED: Permission r   z denied on projects/   )_REGIONAL_IAM_REGEXr*   alllensetr/   )errorsematchess      r   _CollapseRegionalIAMErrorsr8   ?   s    5;<V"((+VG<373338889Q>!!!$gaj&6&6q&9; <f	- =s   Bc                       \ rS rSrSr\4S jr\S 5       r\S 5       r	      SS jr
  SS jrSS	 jrS
 rS rS rS rS rS rSS jrS rS rSS jrS rS rSS jrS rS rSS jrS rS rSrg) 	MpsClientK   r   c                 F   [         R                  " SU5      U l        [         R                  " SU5      U l        U R                  R
                  U l        U R                  R                  U l        U R                  R                  U l
        U R                  R                  U l        U R                  R                  U l        U R                  R                  U l        U R                  R"                  U l        U R&                  R(                  R*                  R,                  U R&                  R(                  R*                  R.                  U R&                  R(                  R*                  R0                  U R&                  R(                  R*                  R2                  S.U l        g )Nmarketplacesolutions)UNSPECIFIED	DEDICATEDUNCAPPED_SHAREDCAPPED_SHARED)r   GetClientInstance_clientGetMessagesModule	_messages!projects_locations_powerInstancespower_instances_serviceprojects_locations_powerVolumespower_volumes_serviceprojects_locations_powerImagespower_images_service projects_locations_powerNetworkspower_networks_serviceprojects_locations_powerSshKeyspower_sshkeys_serviceprojects_locations_operationsoperation_serviceprojects_locationslocations_servicemessagesPowerInstanceVirtualCpuTypeValueValuesEnumVIRTUAL_CPU_TYPE_UNSPECIFIEDr?   r@   rA   )power_instance_vitual_cpu_type_to_message)selfapi_versions     r   __init__MpsClient.__init__N   s   ))*@+NDL++,BKPDN $(<<#Q#QD !%!M!MD $ K KD"&,,"O"OD!%!M!MD!\\GGD!\\<<D }}22445Q5Q]]002299==66884466}}	6D2r   c                     U R                   $ r&   )rC   rY   s    r   clientMpsClient.clientf   s    <<r   c                     U R                   $ r&   )rE   r^   s    r   rT   MpsClient.messagesj   s    >>r   Nc              #     #    Sn/ nU R                  U5       H  nUR                  R                  S5      S   nU	(       a  U[        :X  a  M4  U" UR                  S9n [	        X5      " XS9nUS-  n[	        UU5      nU(       a  [        [        UU5      5      nU H  nUv   Uc  M  US-  nU(       a  M    M     M     U(       a  [        R                  " 5       nSnU
(       aS  US:  aM  [        R                  " [        [        U5      5      UUS	9  [         R"                  " UR%                  5       5        g['        U5      n[        R                  " [        [        U5      5      UUS	9  [(        R*                  " UR%                  5       5      eg! [
         a&  nUR                  [        U5      5         SnAGM  SnAff = f7f)
a;  Make a series of List requests, across locations in a project.

Args:
  service: apitools_base.BaseApiService, A service with a .List() method.
  project_resource: str, The resource name of the project.
  request_class: class, The class type of the List RPC request.
  resource: string, The name (in plural) of the resource type.
  global_params: protorpc.messages.Message, The global query parameters to
    provide when calling the given method.
  limit: int, The maximum number of records to yield. None if all available
    records should be yielded.
  method: str, The name of the method used to fetch resources.
  predicate: lambda, A function that returns true for items to be yielded.
  skip_global_region: bool, True if global region must be filtered out while
  iterating over regions
  allow_partial_server_failure: bool, if True don't fail and only print a
    warning if some requests fail as long as at least one succeeds. If
    False, fail the complete command if at least one request fails.

Yields:
  protorpc.message.Message, The resources listed by the service.

r   /parent)global_paramsr.   NzAlist[title="Some requests did not succeed.",always-display-title])out)ListLocationsnamesplit_GLOBAL_REGIONgetattr	Exceptionappendr#   listfilterioStringIOr
   Printsortedr4   r   warninggetvaluer8   r   Error)rY   serviceproject_resourcerequest_classresourcerh   limitmethod	predicateskip_global_regionallow_partial_server_failureresponse_countr5   locationlocation_namerequestresponser6   itemsitembuffmtcollapsed_errorss                          r   AggregateYieldFromList MpsClient.AggregateYieldFromListn   s    D NF&&'78mm))#.r2m	 ?X]]3g7+2! h)e	VIu-.$
=

u
 ! 90  KKMc%c	%.1*<vc&k2CSACLLN# 6f=vc*:&;<csKs||~..   k!n%s8   AGF1A G5CG
F>F92G9F>>Gc           	          U R                   R                  SU-   S9n[        R                  " U R                  UUSUSS9$ )zMake a List Locations request.z	projects/rk   pageSize	locations)r~   batch_size_attribute
batch_sizefield)rT   0MarketplacesolutionsProjectsLocationsListRequestr   YieldFromListrS   )rY   r{   r~   	page_sizer   s        r   rj   MpsClient.ListLocations   sR    
 mmLL++ M -G##' r   c                     [        U5        U[        :X  a3  SnU R                  U R                  UU R                  R
                  UUS9$ g)z(Make a series of List Instance requests.powerInstancesr~   N)r   _PFORGr   rG   rT   >MarketplacesolutionsProjectsLocationsPowerInstancesListRequestrY   r{   r   r~   power_resources        r   AggregateListInstances MpsClient.AggregateListInstances   sS    W&'n((

&
&

--
V
V
 )   r   c                     [        U5        UR                  5       nU[        :X  a4  U R                  R	                  US9nU R
                  R                  U5      $ g)zBMake a Get Instance request. Return details of specified instance.r   N)r   RelativeNamer   rT   =MarketplacesolutionsProjectsLocationsPowerInstancesGetRequestrG   GetrY   r   r}   power_requests       r   GetInstanceMpsClient.GetInstance   s[    W$$&H&mmaa b m ))--m<<	 r   c                     [        U5        UR                  5       nU[        :X  a>  U R                  R	                  US9nU R
                  R                  U5      R                  $ g)z8Make a List Instances request. Return list of instances.rf   N)r   r   r   rT   r   rG   Listr   rY   r   location_resourcer   r   s        r   ListInstancesMpsClient.ListInstances   sa    W --/H&mmbb c m ))..}=LLL	 r   c                    / nU Hw  n[         R                  R                  UUR                  5       UR                  5       S.SS9R	                  5       nUR                  U R                  R                  US95        My     U$ )z9Parse network attachments in flag to create network list.
projectsIdlocationsIdz5marketplacesolutions.projects.locations.powerNetworksparams
collection)powerNetwork)r	   REGISTRYParseNamer   rp   rT   NetworkAttachment)rY   r   projectnetwork_attachmentnetworksnetpower_networks          r   ParseNetworkAttachments!MpsClient.ParseNetworkAttachments   s     H!((..
#LLN%]]_ M / N O[ln  oodmm55=5QR " Or   c	           
         [        U5        U[        :X  Ga*  UR                  5       n	U	R                  5       n
[        R                  R                  UU
R                  5       U	R                  5       S.SS9R                  5       nU R                  R                  UR                  5       UUU R                  XU5      UUU R                  U   S9nUR                  5       R                  S5      S   nU R                  R                  UUUR                  5       R                  5       S9nU R                  R                  U5      $ g)	zCreate an Instance resource.r   z3marketplacesolutions.projects.locations.powerImagesr   )rk   	bootImage	memoryGibnetworkAttachments
systemTypevirtualCpuCoresvirtualCpuTyperd   re   )powerInstancepowerInstanceIdrg   N)r   r   Parentr	   r   r   r   r   rT   rU   r   rX   rl   @MarketplacesolutionsProjectsLocationsPowerInstancesCreateRequestrG   Create)rY   r   instance_resourceboot_image_namesystem_type
memory_gibnetwork_attachment_namesvirtual_cpu_coresvirtual_cpu_typer   r   
boot_imageinstance_msginstance_idr   s                  r   CreateInstanceMpsClient.CreateInstance   s@    W&"))+h!g%%++
#LLN%]]_ K , L MYLN  ]]00 --/!99(Mef +GG  1 !l &224::3?Ckmmdd$%"))+88: e <m ))00??3 r   c                     U[         :X  aB  U R                  R                  UR                  5       S9nU R                  R                  U5      $ g)z+Delete an existing instance share resource.r   N)r   rT   @MarketplacesolutionsProjectsLocationsPowerInstancesDeleteRequestr   rG   Delete)rY   r   r   r   s       r   DeleteInstanceMpsClient.DeleteInstance$  sN     &^^ --/ _ 1g))0099 r   c                 d   / nUb  UR                  S5        Ub  UR                  S5        U[        :X  a|  U R                  R                  UR	                  5       UUS9nU R                  R                  UR	                  5       USR                  U5      S9nU R                  R                  U5      $ g)z+Update an existing instance share resource.Nr   r   )rk   r   r   ,)rk   r   
updateMask)	rp   r   rT   rU   r   ?MarketplacesolutionsProjectsLocationsPowerInstancesPatchRequestjoinrG   Patch)rY   r   r   r   r   updated_fieldsr   r   s           r   UpdateInstanceMpsClient.UpdateInstance-  s     NL)$/0&]]00 --/+ 1 -l
 mmcc --/|X[X`X`aoXp d rm))//>> r   c                     [        U5        U[        :X  a3  SnU R                  U R                  UU R                  R
                  UUS9$ g)z&Make a series of List Volume requests.powerVolumesr   N)r   r   r   rI   rT   <MarketplacesolutionsProjectsLocationsPowerVolumesListRequestr   s        r   AggregateListVolumesMpsClient.AggregateListVolumes@  S    W&%n((

$
$

--
T
T
 )   r   c                     [        U5        UR                  5       nU[        :X  a4  U R                  R	                  US9nU R
                  R                  U5      $ g)z>Make a Get Volume request. Return details of specified volume.r   N)r   r   r   rT   ;MarketplacesolutionsProjectsLocationsPowerVolumesGetRequestrI   r   r   s       r   	GetVolumeMpsClient.GetVolumeM  [    W$$&H&mm__ ` m ''++M::	 r   c                     [        U5        UR                  5       nU[        :X  a>  U R                  R	                  US9nU R
                  R                  U5      R                  $ g)z4Make a List Volumes request. Return list of volumes.rf   N)r   r   r   rT   r   rI   r   r   r   s        r   ListVolumesMpsClient.ListVolumesW  a    W --/H&mm`` a m '',,];HHH	 r   c                     [        U5        U[        :X  a3  SnU R                  U R                  UU R                  R
                  UUS9$ g)z%Make a series of List Image requests.powerImagesr   N)r   r   r   rK   rT   ;MarketplacesolutionsProjectsLocationsPowerImagesListRequestr   s        r   AggregateListImagesMpsClient.AggregateListImagesa  sS    W&$n((

#
#

--
S
S
 )   r   c                     [        U5        UR                  5       nU[        :X  a4  U R                  R	                  US9nU R
                  R                  U5      $ g)z<Make a Get Image request. Return details of specified image.r   N)r   r   r   rT   :MarketplacesolutionsProjectsLocationsPowerImagesGetRequestrK   r   r   s       r   GetImageMpsClient.GetImagen  s[    W$$&H&mm^^ _ m &&**=99	 r   c                     [        U5        UR                  5       nU[        :X  a>  U R                  R	                  US9nU R
                  R                  U5      R                  $ g)z2Make a List Images request. Return list of images.rf   N)r   r   r   rT   r   rK   r   r   r   s        r   
ListImagesMpsClient.ListImagesx  sa    W --/H&mm__ ` m &&++M:FFF	 r   c                     [        U5        U[        :X  a3  SnU R                  U R                  UU R                  R
                  UUS9$ g)z(Make a series of List Networks requests.powerNetworksr   N)r   r   r   rM   rT   =MarketplacesolutionsProjectsLocationsPowerNetworksListRequestr   s        r   AggregateListNetworksMpsClient.AggregateListNetworks  sS    W&&n((

%
%

--
U
U
 )   r   c                     [        U5        UR                  5       nU[        :X  a4  U R                  R	                  US9nU R
                  R                  U5      $ g)z@Make a Get Network request. Return details of specified network.r   N)r   r   r   rT   <MarketplacesolutionsProjectsLocationsPowerNetworksGetRequestrM   r   r   s       r   
GetNetworkMpsClient.GetNetwork  s[    W$$&H&mm`` a m ((,,];;	 r   c                    [        U5        UR                  5       n U[        :X  a>  U R                  R	                  US9nU R
                  R                  U5      R                  $ g! [        R                   a  nUs SnA$ SnAff = f)z6Make a List Networks request. Return list of networks.rf   N)
r   r   r   rT   r  rM   r   r  r   ry   )rY   r   r   r   r   r6   s         r   ListNetworksMpsClient.ListNetworks  s    W --/H	F	cc d 
 **//>LLL	 

  hs   AA& &B:B;BBc                     [        U5        U[        :X  a3  SnU R                  U R                  UU R                  R
                  UUS9$ g)z(Make a series of List SSH keys requests.powerSshKeysr   N)r   r   r   rO   rT   <MarketplacesolutionsProjectsLocationsPowerSshKeysListRequestr   s        r   AggregateListSSHKeysMpsClient.AggregateListSSHKeys  r   r   c                     [        U5        UR                  5       nU[        :X  a4  U R                  R	                  US9nU R
                  R                  U5      $ g)z@Make a Get SSH Key request. Return details of specified SSH key.r   N)r   r   r   rT   ;MarketplacesolutionsProjectsLocationsPowerSshKeysGetRequestrO   r   r   s       r   	GetSSHKeyMpsClient.GetSSHKey  r   r   c                     [        U5        UR                  5       nU[        :X  a>  U R                  R	                  US9nU R
                  R                  U5      R                  $ g)z6Make a List SSH Keys request. Return list of SSH keys.rf   N)r   r   r   rT   r  rO   r   r  r   s        r   ListSSHKeysMpsClient.ListSSHKeys  r   r   )
rC   rE   rS   rQ   rK   rX   rG   rM   rO   rI   )NNr   NTT)NNr&   ) __name__
__module____qualname____firstlineno____doc___DEFAULT_API_VERSIONr[   propertyr_   rT   r   rj   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  __static_attributes__r'   r   r   r:   r:   K   s    +!5 0     ,0#'$*'+04:>J/\ "=	M %@R:?&;I:G<;Ir   r:   )r!  rs   r   reapitools.base.pyr   r   r   googlecloudsdk.api_lib.utilr   r   %googlecloudsdk.calliope.parser_errorsr   googlecloudsdk.corer   r	   googlecloudsdk.core.resourcer
   r   compiler1   r"  rm   r   r   r   r#   r8   objectr:   r'   r   r   <module>r-     s    * 
  	 ? ' , G G * # ) 9 
jjEG ! 	H ?zI zIr   