
                         p   S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSK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.                  \R,                  R0                  \R,                  R2                  5       " S S\R4                  5      5       rg)z4Command for describing instance's OS inventory data.    )absolute_import)division)unicode_literalsN)base_classes)utils)base)
exceptions)flags)resource_projectorc                   D    \ rS rSrSrSr\S 5       rS rS r	S r
S rS	rg
)Describe#   a  Describe a Compute Engine virtual instance's OS inventory data.

*{command}* displays all OS inventory data associated with a Compute
Engine virtual machine instance.

## EXAMPLES

To see OS inventory of an instance named my-instance, run:

      $ {command} my-instance
)InstalledPackagesPackageUpdatesc                 v    [         R                  R                  U SS9  U R                  R	                  S5        g )Ndescribe)operation_typea  
          multi(
            InstalledPackages.cos:format=
              "table[box,title='Installed Packages (COS)']
                (Name:sort=1,Version)",
            InstalledPackages.deb:format=
              "table[box,title='Installed Packages (DEB)']
                (Name:sort=1,Arch,Version)",
            InstalledPackages.gem:format=
              "table[box,title='Installed Packages (Gem)']
                (Name:sort=1,Arch,Version)",
            InstalledPackages.googet:format=
              "table[box,title='Installed Packages (GooGet)']
                (Name:sort=1,Arch,Version)",
            InstalledPackages.pip:format=
              "table[box,title='Installed Packages (Pip)']
                (Name:sort=1,Arch,Version)",
            InstalledPackages.rpm:format=
              "table[box,title='Installed Packages (RPM)']
                (Name:sort=1,Arch,Version)",
            InstalledPackages.zypperPatches:format=
              "table[box,title='Installed Patches (Zypper Patch)'](
                Name:sort=1,
                Category,
                Severity,
                Summary:wrap=14)",
            InstalledPackages.wua:format=
              "table[all-box,title='Installed Packages (Windows Update Agent)'](
                Title:sort=1:wrap,
                Categories.list():wrap,
                KBArticleIDs.list():wrap=14,
                SupportURL:wrap=11,
                LastDeploymentChangeTime:wrap=15:label='LAST_DEPLOYMENT')",
            InstalledPackages.qfe:format=
              "table[box,title='Installed Packages (Quick Fix Engineering)']
                (Caption,Description:wrap=15,HotFixID:sort=1,InstalledOn)",
            PackageUpdates.apt:format=
              "table[box,title='Package Updates Available (Apt)']
                (Name:sort=1,Arch,Version)",
            PackageUpdates.gem:format=
              "table[box,title='Package Updates Available (Gem)']
                (Name:sort=1,Arch,Version)",
            PackageUpdates.googet:format=
              "table[box,title='Package Updates Available (GooGet)']
                (Name:sort=1,Arch,Version)",
            PackageUpdates.pip:format=
              "table[box,title='Package Updates Available (Pip)']
                (Name:sort=1,Arch,Version)",
            PackageUpdates.yum:format=
              "table[box,title='Package Updates Available (Yum)']
                (Name:sort=1,Arch,Version)",
            PackageUpdates.zypperPatches:format=
              "table[box,title='Patches Available (Zypper Patch)'](
                Name:sort=1,
                Category,
                Severity,
                Summary:wrap=14)",
            PackageUpdates.wua:format=
              "table[all-box,title='Package Updates Available (Windows Update Agent)'](
                Title:sort=1:wrap,
                Categories.list():wrap,
                KBArticleIDs.list():wrap=14,
                SupportURL:wrap=11,
                LastDeploymentChangeTime:wrap=15:label='LAST_DEPLOYMENT')",
            SystemInformation:format="default"
          )
        )r
   INSTANCE_ARGAddArgumentdisplay_info	AddFormat)parsers    6lib/surface/compute/instances/os_inventory/describe.pyArgsDescribe.Args4   s6    	""6*"E
!! B# B    c                     [         R                  R                  UUR                  [         R                  " UR
                  5      S9$ )N)scope_lister)r
   r   ResolveAsResource	resourcesGetInstanceZoneScopeListerclient)selfholderargss      r   _GetInstanceRefDescribe._GetInstanceRef|   s@    //55fmmD 0 F Fr   c                     UR                   nUR                  nUR                  UR                  5       UR                  SUR
                  S9nUR                   R                  UR                   R                  R                  SU4/5      S   nUR                  R                   Hj  nUR                  U R                  ;   d  M  [        R                  " [        R                   " UR"                  5      [        R$                  S-  5      Ul        Ml     UR                  R                  $ ! [&        R(                   aH  nS[*        R,                  " U5      ;   a'  S/n	[.        R0                  " U	[2        R4                  SS	9  UeS nAff = f)
NzguestInventory/)instanceproject	queryPathzoneGetGuestAttributesr       zGThe resource 'guestInventory/' of type 'Guest Attribute' was not found.)i  z[OS inventory data was not found. Make sure the OS Config agent is running on this instance.zCould not fetch resource:)error_message)r"   messages)ComputeInstancesGetGuestAttributesRequestNamer*   r,   MakeRequestsapitools_client	instances
queryValueitemskey$_GUEST_ATTRIBUTES_PACKAGE_FIELD_KEYSzlib
decompressbase64	b64decodevalue	MAX_WBITScalliope_exceptionsToolExceptionsix	text_typer   RaiseExceptionr	   OsInventoryNotFoundException)
r#   r$   instance_refr"   r0   requestresponseitemeproblemss
             r   !_GetGuestInventoryGuestAttributes*Describe._GetGuestInventoryGuestAttributes   s[   }}fhBB$$&&&%  	 C "g
 ++MM))335I h %%++$88t@@@tzz*DNNR,?A$* ,
   &&&,, a(
)-

 	335	7 gs    B=D( A$D( (F<AE??Fc                    [         R                  " U5      nS0 0nU H?  nUS   nXPR                  ;   a  [        R                  " US   5      X5'   M4  US   US   U'   MA     [        R                  " [        R
                  " U5      5      $ )NSystemInformationr8   r>   )r   MakeSerializabler9   jsonloadsdumps)r#   guest_attributesguest_attributes_jsonformatted_guest_attributesguest_attributeguest_attribute_keys         r   _GetFormattedGuestAttributes%Describe._GetFormattedGuestAttributes   s    .?? #6r!:0+E2 
 I I	I:>**G$;&"7 $37#; 	##67	! 1 ::djj!;<==r   c                     [         R                  " U R                  5       5      nU R                  X!5      nU R	                  X#5      nU R                  U5      $ )N)r   ComputeApiHolderReleaseTrackr&   rL   rY   )r#   r%   r$   rF   rU   s        r   RunDescribe.Run   sQ    **4+<+<+>?F''5L BB,,-BCCr    N)__name__
__module____qualname____firstlineno____doc__r9   staticmethodr   r&   rL   rY   r^   __static_attributes__r`   r   r   r   r   #   s<    
 *Q&E ENFB>&Dr   r   )re   
__future__r   r   r   r<   rQ   r:   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   r@   ,googlecloudsdk.command_lib.compute.instancesr
   9googlecloudsdk.command_lib.compute.instances.os_inventorygooglecloudsdk.core.resourcer   rB   ReleaseTracksr]   GABETAALPHADescribeCommandr   r`   r   r   <module>rs      s    ; &  '    7 0 ( E > P ; 
 D%%(($*;*;*@*@%%++-VDt## VD-VDr   