
                             S 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	 r " S
 S\	R                  5      rg)zUtilities for Recommendation.    )absolute_import)division)unicode_literals)encoding)
list_pager)base)
flag_utilsc                 D    [         R                  " U 5      n[        U5      $ )zvCreates 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                   `   ^  \ rS rSrSrU 4S jrS rS rSS jrS r	S r
S	 rS
 rS rSrU =r$ )r   (   z,Base Recommendation client for all versions.c                 b   > [         [        U ]  U5        U R                  R                  U l        g N)superr   __init___client/projects_locations_recommenders_recommendations_service)selfr   	__class__s     r   r   Recommendation.__init__+   s#    	.$(5LLPPDMr   c                 `   SR                  U5      nU R                  U5      " US9nU(       a5  [        R                  " UU R                  U5      R                  SS9nXvl        SU[        R                  " U R                  U-   5      U0nU R                  SR                  U5      5      " S0 UD6$ )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   _CreateMarkRequest!Recommendation._CreateMarkRequest/   s     177>L,,\:EL99


#
#L
1
D
Dh $,  	t33lBC	F N	 " " "r   c                 j    U R                   R                  US9nU R                  R                  U5      $ )zGets a Recommendation.

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

Returns:
  The Recommendation message.
)r!   )	_messagesARecommenderProjectsLocationsRecommendersRecommendationsGetRequestr   Get)r   r!   requests      r   r6   Recommendation.GetI   s6     nn^^ _ G==W%%r   c           	      z    U R                   R                  US9n[        R                  " U R                  USUUSS9$ )zList 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)r4   BRecommenderProjectsLocationsRecommendersRecommendationsListRequestr   YieldFromListr   )r   parent_name	page_sizer?   r7   s        r   ListRecommendation.ListW   sJ     nn__ ` G##'! !r   c                 `    U R                  USSU5      nU R                  R                  U5      $ )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)r1   r   
MarkActiver   r!   r   r7   s       r   rI   Recommendation.MarkActivem   s/     %%dHdDAG==##G,,r   c                 `    U R                  USSU5      nU R                  R                  U5      $ )a  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)r1   r   MarkDismissedrJ   s       r   rN   Recommendation.MarkDismissed{   s/     %%dKtDG==&&w//r   c                 ^    U R                  USX#5      nU R                  R                  U5      $ )as  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)r1   r   MarkClaimedr   r!   r,   r   r7   s        r   rR   Recommendation.MarkClaimed   s-     %%dI~LG==$$W--r   c                 ^    U R                  USX#5      nU R                  R                  U5      $ )au  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)r1   r   MarkSucceededrS   s        r   rW   Recommendation.MarkSucceeded   s-     %%dKNG==&&w//r   c                 ^    U R                  USX#5      nU R                  R                  U5      $ )ar  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)r1   r   
MarkFailedrS   s        r   r[   Recommendation.MarkFailed   s-     %%dHnKG==##G,,r   )r   r   )__name__
__module____qualname____firstlineno____doc__r   r1   r6   rE   rI   rN   rR   rW   r[   __static_attributes____classcell__)r   s   @r   r   r   (   s9    4Q"4&!,-0. 0 - -r   r   N)ra   
__future__r   r   r   apitools.base.pyr   r   "googlecloudsdk.api_lib.recommenderr   r	   r   
ClientBaser   r"   r   r   <module>rh      s6    $ &  ' % ' 3 9
%O-T__ O-r   