
                         F    d Z ddlmZ ddlmZ ddlmZ dZ G d de      Z	y)	z,Utilities for Package Rollouts Rollouts API.    )
list_pager)util)waiterz8configdelivery.projects.locations.fleetPackages.rolloutsc                   >    e Zd ZdZd	dZd
dZd ZddZddZddZ	y)RolloutsClientz<Client for Rollouts in Config Delivery Package Rollouts API.Nc                 n   |xs t         j                  | _        |xs t        j                  | j                        | _        |xs t        j
                  | j                        | _        | j                  j                  | _        t        j                  | j                  j                  d       | _        y )Nc                     | j                   S Nname)xs    ?lib/googlecloudsdk/api_lib/container/fleet/packages/rollouts.py<lambda>z)RolloutsClient.__init__.<locals>.<lambda>"   s        )operation_serviceget_name_func)r   DEFAULT_API_VERSION_api_versionGetClientInstanceclientGetMessagesModulemessages)projects_locations_fleetPackages_rollouts_servicer   CloudOperationPollerNoResourcesprojects_locations_operationsrollout_waiter)selfapi_versionr   r   s       r   __init__zRolloutsClient.__init__   s    #?t'?'?DED2243D3DEDKC 6 6t{{ CDMKKIIDM @@++CC&Dr   c                     | j                   j                  d| d| d| d      }t        j                  | j                  |d||d      S )	a  List Rollouts of a Fleet Package.

    Args:
      project: GCP project id.
      location: Valid GCP location (e.g. us-central1).
      fleet_package: Name of parent Fleet Package.
      limit: int or None, the total number of results to return.
      page_size: int, the number of entries in each batch (affects requests
        made, but not the yielded results).

    Returns:
      Generator of matching devices.
    	projects//locations//fleetPackages/zcreate_time desc)parentorderByrolloutspageSize)field
batch_sizelimitbatch_size_attribute)r   ?ConfigdeliveryProjectsLocationsFleetPackagesRolloutsListRequestr   YieldFromListr   )r   projectlocationfleet_packager+   	page_sizelist_requests          r   ListzRolloutsClient.List%   sb     ==``7);xjW" a L ##' r   c                     d| d| d| d| }| j                   j                  |      }| j                  j                  |      S )zDescribe a Rollout resource.

    Args:
      project: GCP project ID.
      location: GCP location of Fleet Package.
      fleet_package: Name of parent Fleet Package.
      rollout: Name of Rollout.

    Returns:
      Requested Rollout resource.
    r"   r#   r$   
/rollouts/r   )r   >ConfigdeliveryProjectsLocationsFleetPackagesRolloutsGetRequestr   Get)r   r/   r0   r1   rolloutfully_qualified_pathdescribe_reqs          r   DescribezRolloutsClient.Describe@   s\     'wi{8*OTaSbblmtluv==__! ` L ==\**r   c                    d| d| d| d| }| j                   j                  || j                   j                  |            }t        j                  | j
                  | j                  j                  |      d|        y)	al  Abort an in-progress Rollout.

    Args:
      project: GCP project ID.
      location: GCP location of Fleet Package.
      fleet_package: Name of parent Fleet Package.
      rollout: Name of Rollout.
      reason: Reason for aborting the Rollout.

    Returns:
      None.

    Raises:
      apitools.base.py.HttpError: If the request returns an HTTP error.
    r"   r#   r$   r6   reason)r   abortRolloutRequestzAborting Rollout N)r   @ConfigdeliveryProjectsLocationsFleetPackagesRolloutsAbortRequestAbortRolloutRequestr   WaitForr   r   Abort)r   r/   r0   r1   r9   r?   r:   	abort_reqs           r   rD   zRolloutsClient.AbortR   s      'wi{8*OTaSbblmtluv^^! MM==V=L _ I NNI&
G9%r   c                    d| d| d| d| }| j                   j                  || j                   j                  |            }t        j                  | j
                  | j                  j                  |      d|        y)	aj  Resume a suspended Rollout.

    Args:
      project: GCP project ID.
      location: GCP location of Fleet Package.
      fleet_package: Name of parent Fleet Package.
      rollout: Name of Rollout.
      reason: Reason for resuming the Rollout.

    Returns:
      None.

    Raises:
      apitools.base.py.HttpError: If the request returns an HTTP error.
    r"   r#   r$   r6   r>   )r   resumeRolloutRequestzResuming Rollout N)r   AConfigdeliveryProjectsLocationsFleetPackagesRolloutsResumeRequestResumeRolloutRequestr   rC   r   r   Resume)r   r/   r0   r1   r9   r?   r:   
resume_reqs           r   rJ   zRolloutsClient.Resumem   s      'wi{8*OTaSbblmtluv``!!]]??v?N a J NNZ(
G9%r   c                    d| d| d| d| }| j                   j                  || j                   j                  |            }t        j                  | j
                  | j                  j                  |      d|        y)	ap  Suspend an in-progress Rollout.

    Args:
      project: GCP project ID.
      location: GCP location of Fleet Package.
      fleet_package: Name of parent Fleet Package.
      rollout: Name of Rollout.
      reason: Reason for suspending the Rollout.

    Returns:
      None.

    Raises:
      apitools.base.py.HttpError: If the request returns an HTTP error.
    r"   r#   r$   r6   r>   )r   suspendRolloutRequestzSuspending Rollout N)r   BConfigdeliveryProjectsLocationsFleetPackagesRolloutsSuspendRequestSuspendRolloutRequestr   rC   r   r   Suspend)r   r/   r0   r1   r9   r?   r:   suspend_reqs           r   rP   zRolloutsClient.Suspend   s      'wi{8*OTaSbblmtluv--bb!"mmAA B 
 c K NNk*
gY'r   )NN)Nd   r
   )
__name__
__module____qualname____doc__r    r4   r<   rD   rJ   rP    r   r   r   r      s#    D6+$66r   r   N)
rV   apitools.base.pyr   /googlecloudsdk.api_lib.container.fleet.packagesr   googlecloudsdk.api_lib.utilr   ROLLOUT_COLLECTIONobjectr   rW   r   r   <module>r]      s'    3 ' @ .O KV Kr   