
                             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	 Z G d
 de	j                        Zy)zUtilities for Recommendation.    )absolute_import)division)unicode_literals)encoding)
list_pager)base)
flag_utilsc                 B    t        j                  |       }t        |      S )zCreates Client.

  Args:
    release_track: release_track value, can be ALPHA, BETA, GA

  Returns:
    The versioned client.
  )r	   GetApiVersionRecommendation)release_trackapi_versions     8lib/googlecloudsdk/api_lib/recommender/recommendation.pyCreateClientr      s     ((7+		$$    c                   T     e Zd ZdZ fdZd Zd ZddZd Zd Z	d Z
d	 Zd
 Z xZS )r   z,Base Recommendation client for all versions.c                 b    t         t        |   |       | j                  j                  | _        y N)superr   __init___client/projects_locations_recommenders_recommendations_service)selfr   	__class__s     r   r   zRecommendation.__init__+   s#    	.$(5LLPPDMr   c                 `   dj                  |      } | j                  |      |      }|r8t        j                  || j                  |      j                  d      }||_        d|t        j                  | j                  |z         |i} | j                  dj                  |            di |S )z-Creates MarkRequest with the specified state.zMarkRecommendation{}Request)etagT)
sort_itemsnamezDRecommenderProjectsLocationsRecommendersRecommendationsMark{}Request )
format_GetVersionedMessager   DictToAdditionalPropertyMessageStateMetadataValuestateMetadatar	   ToCamelCase_message_prefix_GetMessage)	r   r   statestate_metadatar   request_namemark_requestmetadatakwargss	            r   _CreateMarkRequestz!Recommendation._CreateMarkRequest/   s     177>L:4,,\:EL99


#
#L
1
D
Dh $,l  	t33lBC	F4N	 " " "r   c                 p    | j                   j                  |      }| j                  j                  |      S )zGets a Recommendation.

    Args:
      name: str, the name of the recommendation being retrieved.

    Returns:
      The Recommendation message.
    )r   )	_messagesARecommenderProjectsLocationsRecommendersRecommendationsGetRequestr   Get)r   r   requests      r   r3   zRecommendation.GetI   s6     nn^^ _ G==W%%r   c                     | j                   j                  |      }t        j                  | j                  |d||d      S )a  List Recommendations.

    Args:
      parent_name: str, the name of the parent.
      page_size: int, The number of items to retrieve per request.
      limit: int, The maximum number of records to yield.

    Returns:
      The Recommendation messages.
    )parentpageSizerecommendations)batch_size_attribute
batch_sizelimitfield)r1   BRecommenderProjectsLocationsRecommendersRecommendationsListRequestr   YieldFromListr   )r   parent_name	page_sizer;   r4   s        r   ListzRecommendation.ListW   sJ     nn__ ` G##'! !r   c                 `    | j                  |dd|      }| j                  j                  |      S )a,  Mark a recommendation's state as ACTIVE.

    Args:
      name: str, the name of the recommendation being updated.
      etag: Fingerprint of the Recommendation. Provides optimistic locking when
        updating states.

    Returns:
      The result recommendations after being marked as active
    ActiveN)r/   r   
MarkActiver   r   r   r4   s       r   rD   zRecommendation.MarkActivem   s/     %%dHdDAG==##G,,r   c                 `    | j                  |dd|      }| j                  j                  |      S )a2  Mark a recommendation's state as DISMISSED.

    Args:
      name: str, the name of the recommendation being updated.
      etag: Fingerprint of the Recommendation. Provides optimistic locking when
        updating states.

    Returns:
      The result recommendations after being marked as dismissed
    	DismissedN)r/   r   MarkDismissedrE   s       r   rH   zRecommendation.MarkDismissed{   s/     %%dKtDG==&&w//r   c                 `    | j                  |d||      }| j                  j                  |      S )a  Mark a recommendation's state as CLAIMED.

    Args:
      name: str, the name of the recommendation being updated.
      state_metadata: A map of metadata for the state, provided by user or
        automations systems.
      etag: Fingerprint of the Recommendation. Provides optimistic locking when
        updating states.

    Returns:
      The result recommendations after being marked as accepted
    Claimed)r/   r   MarkClaimedr   r   r*   r   r4   s        r   rK   zRecommendation.MarkClaimed   s/     %%dI~tLG==$$W--r   c                 `    | j                  |d||      }| j                  j                  |      S )a  Mark a recommendation's state as SUCCEEDED.

    Args:
      name: str, the name of the recommendation being updated.
      state_metadata: A map of metadata for the state, provided by user or
        automations systems.
      etag: Fingerprint of the Recommendation. Provides optimistic locking when
        updating states.

    Returns:
      The result recommendations after being marked as accepted
    	Succeeded)r/   r   MarkSucceededrL   s        r   rO   zRecommendation.MarkSucceeded   s/     %%dKNG==&&w//r   c                 `    | j                  |d||      }| j                  j                  |      S )a  Mark a recommendation's state as FAILED.

    Args:
      name: str, the name of the recommendation being updated.
      state_metadata: A map of metadata for the state, provided by user or
        automations systems.
      etag: Fingerprint of the Recommendation. Provides optimistic locking when
        updating states.

    Returns:
      The result recommendations after being marked as accepted
    Failed)r/   r   
MarkFailedrL   s        r   rR   zRecommendation.MarkFailed   s/     %%dHndKG==##G,,r   r   )__name__
__module____qualname____doc__r   r/   r3   rA   rD   rH   rK   rO   rR   __classcell__)r   s   @r   r   r   (   s4    4Q"4&!,-0. 0 -r   r   N)rV   
__future__r   r   r   apitools.base.pyr   r   "googlecloudsdk.api_lib.recommenderr   r	   r   
ClientBaser   r    r   r   <module>r\      s6    $ &  ' % ' 3 9
%O-T__ O-r   