
                             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S	KJr  SS
KJr  SSKr\R&                  " \R(                  R*                  5       " S S\R,                  5      5       rg)zJImplements command to look up all effective guest policies of an instance.    )absolute_import)division)unicode_literals)base_classes)utils)base)flags)log)resource_projectorNc                   b    \ rS rSrSrSrSrSr\\\4rS r	S r
S rS	 rS
 r\S 5       rS rSrg)Lookup   zDisplay the guest policies that are applied to an instance.

## EXAMPLES

  To view all guest policies that are applied to an instance named
  `my-instance`, run:

        $ {command} my-instance

Architecture	ShortNameVersionc                     [         R                  R                  UUR                  [         R                  " UR
                  5      S9$ )N)scope_lister)r	   INSTANCE_ARGResolveAsResource	resourcesGetInstanceZoneScopeListerclient)selfholderargss      6lib/surface/compute/os_config/guest_policies/lookup.py_GetInstanceRefLookup._GetInstanceRef1   s>    //55fmmD 0      c                     [         R                  " [        R                  R                  5      nUR
                  nUR                  nUR                  UR                  5       UR                  SUR                  S9nUR                  R                  R                  U5      nUR                  R                  $ ! [          a(  nS["        R$                  " U5      ;   a  / s S nA$ UeS nAff = f)NzguestInventory/)instanceproject	queryPathzonezGThe resource 'guestInventory/' of type 'Guest Attribute' was not found.)r   ComputeApiHolderr   ReleaseTrackGAr   messages)ComputeInstancesGetGuestAttributesRequestNamer"   r$   apitools_client	instancesGetGuestAttributes
queryValueitems	Exceptionsix	text_type)r   instance_refr   r   r(   requestresponsees           r   !_GetGuestInventoryGuestAttributes(Lookup._GetGuestInventoryGuestAttributes8   s    ,,T->->-A-ABf}}fhBB$$&&&%  	 C "g
 ''11DDWMh  &&& a(
)	g	s$   B4B7 7
C)C$C)"C$$C)c                     [         R                  " U5      n0 nU H   nUS   nXPR                  ;   d  M  US   X5'   M"     U$ )Nkeyvalue)r   MakeSerializable_OS_INFO_FIELD_KEYS)r   guest_attributesguest_attributes_jsonos_infoguest_attributeguest_attribute_keys         r   
_GetOsInfoLookup._GetOsInfoJ   sR    .?? G0+E2	 8 8	8'6w'?$ 1
 Nr   c           	      @    UR                  UUR                  UUUS9S9$ )N)osArchitectureosShortName	osVersion)r!   !lookupEffectiveGuestPolicyRequest)?OsconfigProjectsZonesInstancesLookupEffectiveGuestPolicyRequest!LookupEffectiveGuestPolicyRequest)r   r(   instance_nameos_architectureos_shortname
os_versions         r   _CreateRequestLookup._CreateRequestV   s:    SS*2	*	**$  
+ 

 T  r   c                 $    UR                  U5      $ )N)LookupEffectiveGuestPolicy)r   servicer4   s      r   _GetResponseLookup._GetResponseb   s    --g66r   c                 v    [         R                  R                  U SS9  U R                  R	                  S5        g)See base class.zlook up guest policies for)operation_typea  
      table(
        packages:format="table[box,title="PACKAGES"](
          source,
          package.name,
          package.desiredState,
          package.manager,
          package.version)",
        packageRepositories:format="table[box,title='PACKAGE REPOSITORIES'](
          source,
          packageRepository.apt:format='table[box,title="APT"](
            uri,
            distribution,
            components.list())',
          packageRepository.goo:format='table[box,title="GOO"](
            name,
            url)',
          packageRepository.yum:format='table[box,title="YUM"](
            id,
            baseUrl)',
          packageRepository.zypper:format='table[box,title="ZYPPER"](
            id,
            baseUrl)')",
        softwareRecipes:format="table[box,title='SOFTWARE RECIPES'](
          source,
          softwareRecipe.name,
          softwareRecipe.version,
          softwareRecipe.desiredState
        )"
      )
    N)r	   r   AddArgumentdisplay_info	AddFormat)parsers    r   ArgsLookup.Argse   s<     
""; # =
!! # 	r   c                    U R                  5       n[        R                  " U5      nU R                  X15      nU R	                  U5      nU R                  U5      nUR                  U R                  5      nUR                  U R                  5      nUR                  U R                  5      n	[        R                  " U5      n
[        R                  " U5      nU R                  XR                  5       XxU	5      nU R                  U
R                   U5      n[#        UR$                  UR&                  UR(                  /5      (       d<  [*        R,                  R/                  SR1                  UR                  5       5      5        U$ )rX   z)No effective guest policy found for [{}].)r&   r   r%   r   r7   rC   get_OS_ARCHITECTURE_KEY_OS_SHORTNAME_KEY_OS_VERSION_KEYosconfig_api_utilsGetClientInstanceGetClientMessagesrP   RelativeNamerU   projects_zones_instancesanypackagespackageRepositoriessoftwareRecipesr
   statusPrintformat)r   r   release_trackr   r3   r>   r@   rM   rN   rO   r   r(   r4   r5   s                 r   Run
Lookup.Run   sF   %%'M**=9F''5L==lKoo./Gkk$";";<O;;t556LT112J11-@F!33MBH!!(,E,E,G"1MG  !@!@'JH877     
jjBII

#
#
%' ( Or    N)__name__
__module____qualname____firstlineno____doc__rb   rc   rd   r=   r   r7   rC   rP   rU   staticmethodr^   rr   __static_attributes__rt   r   r   r   r      s^    	 (!/-/@(*$

7 "	 "	Hr   r   )ry   
__future__r   r   r   googlecloudsdk.api_lib.computer   (googlecloudsdk.api_lib.compute.os_configr   re   googlecloudsdk.callioper   ,googlecloudsdk.command_lib.compute.instancesr	   googlecloudsdk.corer
   googlecloudsdk.core.resourcer   r1   ReleaseTracksr&   BETACommandr   rt   r   r   <module>r      sb    Q &  ' 7 P ( > # ; 
 D%%**+FT\\ F ,Fr   