
    G                        S r SSKJr  SSKJr  SSKJ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.    )absolute_import)division)unicode_literalsN)
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&   7   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>F   s     37%7s   c              3   B   #    U  H  oR                  S 5      v   M     g7f)   N)groupr+   s     r   r.   r/   G   s     8uKKNNs   r1   zPERMISSION_DENIED: Permission r   z denied on projects/   )_REGIONAL_IAM_REGEXr-   alllensetr2   )errorsematchess      r   _CollapseRegionalIAMErrorsr;   B   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) 	MpsClientN   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_UNSPECIFIEDrB   rC   rD   )power_instance_vitual_cpu_type_to_message)selfapi_versions     r   __init__MpsClient.__init__Q   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)   )rF   r\   s    r   clientMpsClient.clienti   s    <<r   c                     U R                   $ r)   )rH   ra   s    r   rW   MpsClient.messagesm   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_paramsr1   NzAlist[title="Some requests did not succeed.",always-display-title])out)ListLocationsnamesplit_GLOBAL_REGIONgetattr	Exceptionappendr&   listfilterioStringIOr   Printsortedr7   r   warninggetvaluer;   r   Error)r\   serviceproject_resourcerequest_classresourcerk   limitmethod	predicateskip_global_regionallow_partial_server_failureresponse_countr8   locationlocation_namerequestresponser9   itemsitembuffmtcollapsed_errorss                          r   AggregateYieldFromList MpsClient.AggregateYieldFromListq   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/rn   pageSize	locations)r   batch_size_attribute
batch_sizefield)rW   0MarketplacesolutionsProjectsLocationsListRequestr   YieldFromListrV   )r\   r~   r   	page_sizer   s        r   rm   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   rJ   rW   >MarketplacesolutionsProjectsLocationsPowerInstancesListRequestr\   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   rW   =MarketplacesolutionsProjectsLocationsPowerInstancesGetRequestrJ   Getr\   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.ri   N)r   r   r   rW   r   rJ   Listr   r\   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   rs   rW   NetworkAttachment)r\   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   )rn   	bootImage	memoryGibnetworkAttachments
systemTypevirtualCpuCoresvirtualCpuTyperg   rh   )powerInstancepowerInstanceIdrj   N)r   r   Parentr   r   r   r   r   rW   rX   r   r[   ro   @MarketplacesolutionsProjectsLocationsPowerInstancesCreateRequestrJ   Create)r\   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   rW   @MarketplacesolutionsProjectsLocationsPowerInstancesDeleteRequestr   rJ   Delete)r\   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   )rn   r   r   ,)rn   r   
updateMask)	rs   r   rW   rX   r   ?MarketplacesolutionsProjectsLocationsPowerInstancesPatchRequestjoinrJ   Patch)r\   r   r   r   r   updated_fieldsr   r   s           r   UpdateInstanceMpsClient.UpdateInstance0  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   rL   rW   <MarketplacesolutionsProjectsLocationsPowerVolumesListRequestr   s        r   AggregateListVolumesMpsClient.AggregateListVolumesC  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   rW   ;MarketplacesolutionsProjectsLocationsPowerVolumesGetRequestrL   r   r   s       r   	GetVolumeMpsClient.GetVolumeP  [    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.ri   N)r   r   r   rW   r   rL   r   r   r   s        r   ListVolumesMpsClient.ListVolumesZ  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   rN   rW   ;MarketplacesolutionsProjectsLocationsPowerImagesListRequestr   s        r   AggregateListImagesMpsClient.AggregateListImagesd  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   rW   :MarketplacesolutionsProjectsLocationsPowerImagesGetRequestrN   r   r   s       r   GetImageMpsClient.GetImageq  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.ri   N)r   r   r   rW   r   rN   r   r   r   s        r   
ListImagesMpsClient.ListImages{  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   rP   rW   =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   rW   <MarketplacesolutionsProjectsLocationsPowerNetworksGetRequestrP   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.ri   N)
r   r   r   rW   r
  rP   r   r	  r   r|   )r\   r   r   r   r   r9   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   rR   rW   <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   rW   ;MarketplacesolutionsProjectsLocationsPowerSshKeysGetRequestrR   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.ri   N)r   r   r   rW   r  rR   r   r  r   s        r   ListSSHKeysMpsClient.ListSSHKeys  r   r   )
rF   rH   rV   rT   rN   r[   rJ   rP   rR   rL   )NNr   NTT)NNr)   ) __name__
__module____qualname____firstlineno____doc___DEFAULT_API_VERSIONr^   propertyrb   rW   r   rm   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=   N   s    +!5 0     ,0#'$*'+04:>J/\ "=	M %@R:?&;I:G<;Ir   r=   )"r$  
__future__r   r   r   rv   r   reapitools.base.pyr   r   r   googlecloudsdk.api_lib.utilr	   r   %googlecloudsdk.calliope.parser_errorsr
   googlecloudsdk.corer   r   googlecloudsdk.core.resourcer   r!   compiler4   r%  rp   r   r   r   r&   r;   objectr=   r*   r   r   <module>r1     s    * &  ' 
  	 ? ' , G G * # ) 9 
jjEG ! 	H ?zI zIr   