
                            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	d
dZd Zd Zd Zd Zd Z e	j&                  e	j(                  j*                         G d de	j,                               Zee_        y)z$List command for the Org Policy CLI.    )absolute_import)division)unicode_literals)service)base)	arguments)utilsz2      Lists the policies set on a resource.
      zq      To list the policies set on the Project 'foo-project', run:

      $ {command} --project=foo-project
      )DESCRIPTIONEXAMPLESc                 x    | sy| j                   D ](  }|j                  |j                  |j                  ( y yNFTrulesvaluesallowAlldenyAllspecrules      lib/surface/org_policies/list.pyHasListPolicyr   (   s;    	jjd4==#<   
    c                 x    | sy| j                   D ](  }|j                  |j                  |j                  ( y yr   r   dry_run_specr   s     r   HasDryRunListPolicyr   2   s=    	  d4==#<  ! 
r   c                 p    | r/t        | j                  D cg c]  }|j                  d u c}      S yc c}w NFanyr   enforcer   s     r   HasBooleanPolicyr"   <   s5    	TZZ@ZTD(Z@AA	 A   3c                 p    | r/t        | j                  D cg c]  }|j                  d u c}      S yc c}w r   r   r   s     r   HasDryRunBooleanPolicyr%   B   s9    \5G5GH5GTD(5GHII	 Ir#   c                     | r|ry| ry|ryy)NLIVE_AND_DRY_RUN_SETSETDRY_RUN_SET- )is_policy_setis_dry_run_policy_sets     r   PolicyOutputr.   H   s    ,!	r   c                   &    e Zd ZdZed        Zd Zy)Listz$List the policies set on a resource.c                     t        j                  |        | j                  ddd       | j                  j	                  d       y )Nz--show-unset
store_truez0Show all available constraints for the resource.)actionhelpz2table(constraint, listPolicy, booleanPolicy, etag))r   AddResourceFlagsToParseradd_argumentdisplay_info	AddFormat)parsers    r   Argsz	List.ArgsV   sF    &&v.
?  A
 !!<>r   c                    t        j                  | j                               }t        j                  |      }g }|j                  |      j                  }|D ]  }|j                  }|j                  }t        |      }	t        |      }
t        |      }t        |      }t        |
|      }t        |	|      }|j                  |j                  j!                  d      d   |||j"                  d        |j$                  rl|j'                  |      j(                  }|D ch c]  }|d   	 }}|D ]:  }|j                  j!                  d      d   }||vs&|j                  |ddd       < |S c c}w )N/)
constraint
listPolicybooleanPolicyetagr>   r*   )r>   r?   r@   )org_policy_serviceOrgPolicyApiReleaseTrackr	   GetResourceFromArgsListPoliciespoliciesr   
dryRunSpecr   r"   r%   r   r.   appendnamesplitrA   
show_unsetListConstraintsconstraints)selfargsorg_policy_apiparentoutputrG   policyr   r   list_policy_setboolean_policy_setdry_run_boolean_policy_setdry_run_list_policy_setboolean_policy_outputlist_policy_outputrN   rowexisting_policy_namesr>   constraint_names                       r   RunzList.Runa   ss   '44T5F5F5HIN&&t,FF**62;;H[[d&&l%d+o+D1#9,#G  3L A*+=+EG'(?Amm))#.r2*0++	 	 " "226:FFk<BCFSs<0FC#*$////4R8"77
--+"  $ M Ds    E/N)__name__
__module____qualname____doc__staticmethodr:   r^   r+   r   r   r0   r0   R   s    ,> >$r   r0   N)rb   
__future__r   r   r    googlecloudsdk.api_lib.orgpolicyr   rB   googlecloudsdk.callioper   'googlecloudsdk.command_lib.org_policiesr   r	   DETAILED_HELPr   r   r"   r%   r.   ReleaseTracksrD   GAListCommandr0   detailed_helpr+   r   r   <module>rm      s    + &  ' J ( = 9	
	
 D%%(()24 2 *2j # r   