
    `                         d Z ddlmZ ddlmZ ddlmZ ddlZddl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 ej(                  d      Z ej,                  dg d      Zd Zd Z G d de      Zy)!Cloud Bare Metal Solution client.    )absolute_import)division)unicode_literalsN)
exceptions)
list_pager)apis)utilv2v1globalz?PERMISSION_DENIED: Permission (.+) denied on 'projects/(.+?)/.*IpRangeReservation)start_addressend_addressnotec                     t        | t        j                        r%t        j                  | d      }|j
                  }|S t        j                  |       }|S )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      ,lib/googlecloudsdk/api_lib/bms/bms_client.py_ParseErrorr    +   sS    *445$22KL !((M 
 MM%(M	    c                    | r| D cg c]  }t         j                  |       }}t        d |D              rKt        t	        d |D                    dk(  r-d|d   j                  d      d|d   j                  d      g} | S c c}w )zHIf all errors are PERMISSION_DENIEDs, use a single global error instead.c              3   $   K   | ]  }|d u 
 y wN .0matchs     r   	<genexpr>z-_CollapseRegionalIAMErrors.<locals>.<genexpr>=   s     37%E7s   c              3   >   K   | ]  }|j                  d         yw)   N)groupr&   s     r   r)   z-_CollapseRegionalIAMErrors.<locals>.<genexpr>>   s     8uEKKNs   r+   zPERMISSION_DENIED: Permission r   z denied on projects/   )_REGIONAL_IAM_REGEXr(   alllensetr,   )errorsematchess      r   _CollapseRegionalIAMErrorsr5   7   s     5;<V"((+VG<37338889Q> QZa '!*"2"21"57f 
- =s   Bc                   \   e Zd ZdZefdZed        Zed        Zd Z	d3dZ
d Zd	 Zd
 Zd Zd Zd Z	 d3dZd Zd Zd Zd Zd Zd3dZd Zd Zd Zd3dZd3dZd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d3d"Z%d# Z&d3d$Z'd% Z(d& Z)d' Z*d( Z+d) Z,d3d*Z-d+ Z.d, Z/d- Z0d. Z1d3d/Z2d0 Z3d1 Z4d2 Z5y)4	BmsClientr   c                 h   t        j                  d|      | _        t        j                  dt              | _        t        j
                  d|      | _        | j                  j                  | _        | j                  j                  | _
        | j                  j                  | _        | j                  j                  | _        | j                  j                  | _        | j                  j"                  | _        | j                  j&                  | _        | j                  j*                  | _        | j                  j.                  | _        | j                  j2                  | _        | j                  j6                  | _        | j:                  j<                  j>                  j@                  | j:                  j<                  j>                  jB                  d| _"        | j:                  jF                  jH                  jJ                  | j:                  jF                  jH                  jL                  d| _'        y )Nbaremetalsolution)	READ_ONLY
READ_WRITE)SSDHDD)(r	   GetClientInstance_client_V1_API_VERSION
_v1_clientGetMessagesModule	_messagesprojects_locations_instancesinstances_serviceprojects_locations_volumesvolumes_service+projects_locations_snapshotSchedulePolicies"snapshot_schedule_policies_service$projects_locations_volumes_snapshotssnapshots_serviceprojects_locations_networksnetworks_serviceprojects_locationslocations_serviceprojects_locations_volumes_lunsluns_serviceprojects_locations_nfsSharesnfs_shares_serviceprojects_locations_sshKeysssh_keys_serviceprojects_locations_operationsoperation_serviceprojects_locations_osImagesos_images_servicemessagesAllowedClientMountPermissionsValueValuesEnumREADr;   $nfs_mount_permissions_str_to_messageNfsShareStorageTypeValueValuesEnumr<   r=   nfs_storage_type_str_to_message)selfapi_versions     r   __init__zBmsClient.__init__J   s   ))*={KDL,,_DO ++,?MDN!\\FFD<<BBD@@ 	+ "\\NND LLDDD!\\<<DDDD"llGGD LLCCD!\\GGD!\\EED MM''GGLL MM''GGRR1D- }}%%@@DD}}%%@@DD,D(r!   c                     | j                   S r$   )r?   rb   s    r   clientzBmsClient.clientj   s    <<r!   c                     | j                   S r$   )rC   rf   s    r   rZ   zBmsClient.messagesn   s    >>r!   c                     | j                   j                  |j                               }| j                  j	                  |      S Nname)rZ   5BaremetalsolutionProjectsLocationsInstancesGetRequestRelativeNamerE   Getrb   resourcerequests      r   GetInstancezBmsClient.GetInstancer   sD    KK&&( 	L 	
 
 !!%%g..r!   Nc                     | j                   j                  |      }t        j                  | j                  ||d|d      S )NparentpageSize	instanceslimitbatch_size_attribute
batch_sizefield)rZ   6BaremetalsolutionProjectsLocationsInstancesListRequestr   YieldFromListrE   rb   rv   rz   	page_sizerr   s        r   ListInstanceszBmsClient.ListInstancesz   sO    LL 	M 	
 
 ##' r!   c                    g }||j                  d       ||j                  d       ||j                  d       |s|r|j                  d       ||j                  d       |D 	cg c]  }	|	j                          }
}	| j                  j                  |j                         ||||
|      }| j                  j	                  |j                         |dj                  |            }| j                  j                  |      S c c}	w )	z%Update an existing instance resource.labelsos_imagehyperthreading_enabledssh_keyskms_key_version)rl   r   osImagehyperthreadingEnabledsshKeyskmsKeyVersion,)rl   instance
updateMask)appendrn   rZ   Instance7BaremetalsolutionProjectsLocationsInstancesPatchRequestjoinrE   Patch)rb   instance_resourcer   r   enable_hyperthreadingr   r   clear_ssh_keysupdated_fieldsssh_keyssh_keys_relativeinstance_msgrr   s                r   UpdateInstancezBmsClient.UpdateInstance   s    NH%J'(45>J'"-.?GHxG--/xH==))++-3!% * L 	MM"//1!xx/ 	N 	
  !!''00% Is   (Dc                     |D cg c]  }|j                          }}| j                  j                  |j                         |||d      }| j                  j	                  |      S c c}w )zReimage an existing instance.)r   r   r   )rl   reimageInstanceRequest)rn   rZ   9BaremetalsolutionProjectsLocationsInstancesReimageRequestrE   Reimage)rb   r   r   r   kms_crypto_key_versionr   r   rr   s           r   ReimageInstancezBmsClient.ReimageInstance   sz     @HHxG--/xHOO"//1#,!7$ 	P 	
  !!))'22 Is   A(c                     | j                   j                  |j                               }| j                  j	                  |      S )z%Enable hyperthreading on an instance.rk   )rZ   FBaremetalsolutionProjectsLocationsInstancesEnableHyperthreadingRequestrn   rE   EnableHyperthreadingrb   r   rr   s      r   r   zBmsClient.EnableHyperthreading   sA    mmbb++- c G !!66w??r!   c                     | j                   j                  |j                               }| j                  j	                  |      S )z&Disable hyperthreading on an instance.rk   )rZ   GBaremetalsolutionProjectsLocationsInstancesDisableHyperthreadingRequestrn   rE   DisableHyperthreadingr   s      r   r   zBmsClient.DisableHyperthreading   sA    mmcc++- d G !!77@@r!   c                     | j                   j                  |      }| j                   j                  |j                         |      }| j                  j                  |      S )z%Rename an existing instance resource.)newInstanceId)rl   renameInstanceRequest)rZ   RenameInstanceRequest8BaremetalsolutionProjectsLocationsInstancesRenameRequestrn   rE   Rename)rb   r   new_namerename_instance_requestrr   s        r   RenameInstancezBmsClient.RenameInstance   sg    "mmAA B  	NN"//1"9 	O 	
  !!((11r!   c                     | j                   j                  |j                               }| j                  j	                  |      S )zLoad instance auth info.rk   )rZ   >BaremetalsolutionProjectsLocationsInstancesLoadAuthInfoRequestrn   rE   LoadAuthInfor   s      r   LoadInstanceAuthInfozBmsClient.LoadInstanceAuthInfo   sA    mmZZ++- [ G !!..w77r!   c                     d|z  }| j                   j                  |      }t        j                  | j                  ||d|d      S )Nprojects/%s/locations/globalru   rw   snapshotSchedulePoliciesry   )rZ   EBaremetalsolutionProjectsLocationsSnapshotSchedulePoliciesListRequestr   r   rI   rb   project_resourcerz   r   rv   rr   s         r   ListSnapshotSchedulePoliciesz&BmsClient.ListSnapshotSchedulePolicies   sY     ,.>>Fmmaa b G ##//'( r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   DBaremetalsolutionProjectsLocationsSnapshotSchedulePoliciesGetRequestrn   rI   ro   rp   s      r   GetSnapshotSchedulePolicyz#BmsClient.GetSnapshotSchedulePolicy   sA    mm``""$ a G 2266w??r!   c                 .   |j                         }|j                         j                         }| j                  |      }| j                  j                  |||      }| j                  j                  |||      }	| j                  j                  |	      S )z7Sends request to create a new Snapshot Schedule Policy.description	schedulesr   )rv   snapshotSchedulePolicyIdsnapshotSchedulePolicy)	NameParentrn   _ParseSnapshotSchedulesrZ   SnapshotSchedulePolicyGBaremetalsolutionProjectsLocationsSnapshotSchedulePoliciesCreateRequestrI   Create)
rb   policy_resourcer   r   r   	policy_idrv   schedule_msgs
policy_msgrr   s
             r   CreateSnapshotSchedulePolicyz&BmsClient.CreateSnapshotSchedulePolicy   s      $$&I##%224F00;M55= 6 J mmcc!*) d G
 2299'BBr!   c                    g }|r|j                  d       ||j                  d       | j                  |      }|r|j                  d       dj                  |      }| j                  j	                  |||      }| j                  j                  |j                         ||      }	| j                  j                  |	      S )z;Sends request to update an existing SnapshotSchedulePolicy.r   r   r   r   r   )rl   r   r   )	r   r   r   rZ   r   FBaremetalsolutionProjectsLocationsSnapshotSchedulePoliciesPatchRequestrn   rI   r   )
rb   r   r   r   r   r   r   update_maskr   rr   s
             r   UpdateSnapshotSchedulePolicyz&BmsClient.UpdateSnapshotSchedulePolicy  s     NM*H%00;MK(((>*K55= 6 J mmbb))+) c G
 2288AAr!   c           	          g }|r=|D ]8  }|j                  | j                  j                  |d   |d   |d                : |S )z?Parses schedule ArgDict dicts into a list of Schedule messages.crontab_specretention_countprefix)crontabSpecretentionCountr   )r   rZ   Schedule)rb   r   r   schedule_args       r   r   z!BmsClient._ParseSnapshotSchedules&  sZ    M#,MM""(8+,=>#H- # 	
 $ r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   GBaremetalsolutionProjectsLocationsSnapshotSchedulePoliciesDeleteRequestrn   rI   Deleterp   s      r   DeleteSnapshotSchedulePolicyz&BmsClient.DeleteSnapshotSchedulePolicy4  sA    mmcc""$ d G 2299'BBr!   c                     | j                   j                  |      }t        j                  | j                  ||d|d      S )Nru   rw   volumesry   )rZ   4BaremetalsolutionProjectsLocationsVolumesListRequestr   r   rG   r   s        r   ListVolumeszBmsClient.ListVolumes:  sO    JJ 	K 	
 
 ##' r!   c                    g }d}|r"|j                  d       |j                         }n|r|j                  d       ||j                  d       |r|j                  d       | j                  j                  |j                         |||      }| j                  j	                  |j                         |dj                  |            }	| j                  j                  |	      S )z#Update an existing volume resource.Nr   r   snapshotAutoDeleteBehavior)rl   r   r   r   r   )rl   volumer   )r   rn   rZ   Volume5BaremetalsolutionProjectsLocationsVolumesPatchRequestr   rG   r   )
rb   volume_resourcer   !snapshot_schedule_policy_resourceremove_snapshot_schedule_policysnapshot_auto_deleter   policy_name
volume_msgrr   s
             r   UpdateVolumezBmsClient.UpdateVolumeI  s     NK(455BBDk	(45H%89%%))+#7*	 & J 	KK --/xx/ 	L 	
  %%g..r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   3BaremetalsolutionProjectsLocationsVolumesGetRequestrn   rG   ro   rp   s      r   	GetVolumezBmsClient.GetVolumeo  sA    mmOO""$ P G ##G,,r!   c                     | j                   j                  |      }| j                   j                  |j                         |      }| j                  j                  |      S )z#Rename an existing volume resource.)newVolumeId)rl   renameVolumeRequest)rZ   RenameVolumeRequest6BaremetalsolutionProjectsLocationsVolumesRenameRequestrn   rG   r   )rb   r   r   rename_volume_requestrr   s        r   RenameVolumezBmsClient.RenameVolumeu  sf     MM== >  	LL --/ 5 	M 	
  &&w//r!   c                     | j                   j                  |      }t        j                  | j                  ||d|d      S )Nru   rw   networksry   )rZ   5BaremetalsolutionProjectsLocationsNetworksListRequestr   r   rM   r   s        r   ListNetworkszBmsClient.ListNetworks  sO    KK 	L 	
 
 ##' r!   c                     d|z  }| j                   j                  |      }t        j                  | j                  ||d|d      S )Nr   ru   rw   osImagesry   )rZ   5BaremetalsolutionProjectsLocationsOsImagesListRequestr   r   rY   r   s         r   ListOSImageszBmsClient.ListOSImages  sZ    +.>>FKK 	L 	
 
 ##' r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   4BaremetalsolutionProjectsLocationsOsImagesGetRequestrn   rY   ro   rp   s      r   
GetOSImagezBmsClient.GetOSImage  sD    JJ&&( 	K 	
 
 !!%%g..r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   4BaremetalsolutionProjectsLocationsNetworksGetRequestrn   rM   ro   rp   s      r   
GetNetworkzBmsClient.GetNetwork  sD    JJ&&( 	K 	
 
   $$W--r!   c                    g }g }||j                  d       |c|j                  d       |D ]M  }|j                  | j                  j                  |j                  |j                  |j
                               O | j                  j                  |j                         ||      }| j                  j                  |j                         |dj                  |            }| j                  j                  |      S )z$Update an existing network resource.r   reservations)startAddress
endAddressr   )rl   r   r  r   )rl   networkr   )r   rZ   NetworkAddressReservationr   r   r   Networkrn   6BaremetalsolutionProjectsLocationsNetworksPatchRequestr   rM   r   )	rb   network_resourcer   ip_reservationsr   ip_reservations_messagesip_reservationnetwork_msgrr   s	            r   UpdateNetworkzBmsClient.UpdateNetwork  s    N!H%"N++. ''MM33+99)55#(( 4 	
 , --''**,- ( K 	LL!..0xx/ 	M 	
    &&w//r!   c                     | j                   j                  |      }| j                   j                  |j                         |      }| j                  j                  |      S )z$Rename an existing network resource.)newNetworkId)rl   renameNetworkRequest)rZ   RenameNetworkRequest7BaremetalsolutionProjectsLocationsNetworksRenameRequestrn   rM   r   )rb   r  r   rename_network_requestrr   s        r   RenameNetworkzBmsClient.RenameNetwork  sg    !]]?? @  	MM!..0!7 	N 	
    ''00r!   c                 p    |j                   | j                  j                  j                  j                  k(  S r$   )typerZ   r  TypeValueValuesEnumCLIENTrb   r  s     r   IsClientNetworkzBmsClient.IsClientNetwork  s'    <<4==00DDKKKKr!   c                 p    |j                   | j                  j                  j                  j                  k(  S r$   )r   rZ   r  r!  PRIVATEr#  s     r   IsPrivateNetworkzBmsClient.IsPrivateNetwork  s'    <<4==00DDLLLLr!   c                 p    |j                   | j                  j                  j                  j                  k(  S r$   )networkTyperZ   LogicalNetworkInterfaceNetworkTypeValueValuesEnumr"  rb   logical_network_interfaces     r   IsClientLogicalNetworkInterfacez)BmsClient.IsClientLogicalNetworkInterface  s/    !--==00KKRR	Sr!   c                 p    |j                   | j                  j                  j                  j                  k(  S r$   )r)  rZ   r*  r+  r&  r,  s     r    IsPrivateLogicalNetworkInterfacez*BmsClient.IsPrivateLogicalNetworkInterface  s/    !--==00KKSS	Tr!   c                     |j                         }| j                  j                  |      }t        j                  | j
                  ||d|d      S )Nru   rw   lunsry   )rn   rZ   8BaremetalsolutionProjectsLocationsVolumesLunsListRequestr   r   rQ   rb   r   rz   r   rv   rr   s         r   ListLUNsForVolumezBmsClient.ListLUNsForVolume  s]    ))+FNN 	O 	
 
 ##' r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   7BaremetalsolutionProjectsLocationsVolumesLunsGetRequestrn   rQ   ro   rp   s      r   GetLUNzBmsClient.GetLUN  sD    MM&&( 	N 	
 
   ))r!   c                     |j                         }| j                  j                  |      }t        j                  | j
                  ||d|d      S )Nru   rw   volumeSnapshotsry   )rn   rZ   =BaremetalsolutionProjectsLocationsVolumesSnapshotsListRequestr   r   rK   r4  s         r   ListSnapshotsForVolumez BmsClient.ListSnapshotsForVolume	  sZ    ))+FmmYY Z G ##' r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   <BaremetalsolutionProjectsLocationsVolumesSnapshotsGetRequestrn   rK   ro   rp   s      r   GetVolumeSnapshotzBmsClient.GetVolumeSnapshot  sA    mmXX""$ Y G !!%%g..r!   c                     | j                   j                  |j                         | j                   j                  ||            }| j                  j                  |      S )N)rl   r   )rv   volumeSnapshot)rZ   ?BaremetalsolutionProjectsLocationsVolumesSnapshotsCreateRequestrn   VolumeSnapshotrK   r   )rb   rq   rl   r   rr   s        r   CreateVolumeSnapshotzBmsClient.CreateVolumeSnapshot  s]    mm[[$$&}}33; 4 
 \ G !!((11r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   ?BaremetalsolutionProjectsLocationsVolumesSnapshotsDeleteRequestrn   rK   r   rp   s      r   DeleteVolumeSnapshotzBmsClient.DeleteVolumeSnapshot&  sA    mm[[""$ \ G !!((11r!   c                 p    | j                   j                  |      }| j                  j                  |      S )N)rA  )rZ   NBaremetalsolutionProjectsLocationsVolumesSnapshotsRestoreVolumeSnapshotRequestrK   RestoreVolumeSnapshot)rb   snapshot_namerr   s      r   rJ  zBmsClient.RestoreVolumeSnapshot,  s8    mmjj$ k G !!77@@r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   5BaremetalsolutionProjectsLocationsNfsSharesGetRequestrn   rS   ro   rp   s      r   GetNfsSharezBmsClient.GetNfsShare2  sD    KK&&( 	L 	
 
 ""&&w//r!   c                     | j                   j                  |      }t        j                  | j                  ||d|d      S )Nru   rw   	nfsSharesry   )rZ   6BaremetalsolutionProjectsLocationsNfsSharesListRequestr   r   rS   r   s        r   ListNfsShareszBmsClient.ListNfsShares:  sO    LL 	M 	
 
 ##' r!   c                 ^   g }g }||j                  d       ||j                  d       |}| j                  j                  |j                         ||      }| j                  j	                  |j                         |dj                  |            }| j                  j                  |      S )z&Update an existing nfs share resource.r   allowedClients)rl   r   rT  r   )rl   nfsSharer   )r   rZ   r_   rn   7BaremetalsolutionProjectsLocationsNfsSharesPatchRequestr   rS   r   )rb   nfs_share_resourcer   allowed_clientsr   updated_allowed_clientsnfs_share_msgrr   s           r   UpdateNfsSharezBmsClient.UpdateNfsShareI  s    N H%",- /MM**,,.. + M 	MM#002"xx/ 	N 	
  ""((11r!   c                     | j                   j                  |j                               }| j                  j	                  |      S )z&Delete an existing nfs share resource.rk   )rZ   8BaremetalsolutionProjectsLocationsNfsSharesDeleteRequestrn   rS   r   )rb   rW  rr   s      r   DeleteNfsSharezBmsClient.DeleteNfsSharec  sF     	NN#002 	O 	
 
 ""))'22r!   c                 F   | j                  ||      }| j                  j                  |j                         || j                  |   ||      }| j                  j                  ||j                         j                               }| j                  j                  |      S )zCreate an NFS share resource.)rW  allowed_clients_dicts)rl   requestedSizeGibstorageTyperT  r   )rU  rv   )	ParseAllowedClientsDictsrZ   r_   rn   ra   8BaremetalsolutionProjectsLocationsNfsSharesCreateRequestr   rS   r   )	rb   rW  size_gibstorage_typer`  r   rX  rZ  rr   s	            r   CreateNfsSharezBmsClient.CreateNfsSharel  s     33-3 4 O MM**,,.!88F& + M 	NN"%,,.;;= 	O 	
  ""))'22r!   c                     | j                   j                  |      }| j                   j                  |j                         |      }| j                  j                  |      S )z&Rename an existing nfs share resource.)newNfsshareId)rl   renameNfsShareRequest)rZ   RenameNfsShareRequest8BaremetalsolutionProjectsLocationsNfsSharesRenameRequestrn   rS   r   )rb   rW  r   rename_nfs_share_requestrr   s        r   RenameNfsSharezBmsClient.RenameNfsShare  sg    #}}BB  C   	NN#002": 	O 	
  ""))'22r!   c                     d|z  }| j                   j                  |      }t        j                  | j                  ||d|d      S )Nr   ru   rw   r   ry   )rZ   4BaremetalsolutionProjectsLocationsSshKeysListRequestr   r   rU   r   s         r   ListSshKeyszBmsClient.ListSshKeys  sZ    +.>>FJJ 	K 	
 
 ##' r!   c                     | j                   j                  |j                         j                         |j	                         | j                   j                  |            }| j                  j                  |      S )z#Sends request to create an SSH key.)	publicKey)rv   sshKeyIdsSHKey)rZ   6BaremetalsolutionProjectsLocationsSshKeysCreateRequestr   rn   r   SSHKeyrU   r   )rb   rq   
public_keyrr   s       r   CreateSshKeyzBmsClient.CreateSshKey  sk     	LL??$113]]_==''*'= 	M 	
    ''00r!   c                     | j                   j                  |j                               }| j                  j	                  |      S rj   )rZ   6BaremetalsolutionProjectsLocationsSshKeysDeleteRequestrn   rU   r   rp   s      r   DeleteSshKeyzBmsClient.DeleteSshKey  sD    LL&&( 	M 	
 
   ''00r!   c                     g }|D ]h  }| j                   |d      }t        j                  ||      }|j                  | j                  j                  ||d   ||d   |d   |d                 j |S )z.Parses NFS share allowed client list of dicts.zmount-permissions)rW  allowed_client_dictcidrz	allow-devz
allow-suidzenable-root-squash)r  allowedClientsCidrmountPermissionsallowDev	allowSuidnoRootSquash)r^   r
   NFSNetworkFullNamer   rZ   r[   )rb   rW  r`  rX  allowed_clientmount_permissionsnetwork_full_names          r   rc  z"BmsClient.ParseAllowedClientsDicts  s    O/CC
,
- 11/, 
--
%
%'!/!70%k2&|4-.BCC & 	 0$ r!   )NN)6__name__
__module____qualname____doc___DEFAULT_API_VERSIONrd   propertyrg   rZ   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r$  r'  r.  r0  r5  r8  r<  r?  rD  rG  rJ  rN  rR  r[  r^  rg  rn  rq  ry  r|  rc  r%   r!   r   r7   r7   G   s(   )!5 @    /)1V3"@A28 59 @C"B0C$/L-0 /.0B1LM */22A0243383 	11r!   r7   )r  
__future__r   r   r   collectionsreapitools.base.pyr   r   r   googlecloudsdk.api_lib.utilr	   r   googlecloudsdk.command_lib.bmsr
   r   r  r@   _GLOBAL_REGIONcompiler.   
namedtupler   r    r5   objectr7   r%   r!   r   <module>r     s    ( &  '  	 > ' , G / 
  bjjE  ,[++B 
	 F
 F
r!   