
    g                         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lmZ  G d	 d
ej                  e
j                  ej                  ej                         Zy)z0The command to enable Policy Controller Feature.    )absolute_import)division)unicode_literals)messages)base)command)flagsc                       e Zd ZdZdZdZed        Zd Zd Z	de
j                  de
j                  fdZde
j                  de
j                  fd	Zd
 Zy)EnablezEnable Policy Controller Feature.

  Enables the Policy Controller Feature in a fleet.

  ## EXAMPLES

  To enable the Policy Controller Feature, run:

    $ {command}
  policycontrollerc                    |j                  d      }t        j                         j                  |       |j                  d      }|j                  d      }t        j                  |d      }|j                  d      }t        j                  |d      }|j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                          |j                          y )NT)mutexFenableconfig)add_argument_groupr	   fleet_default_cfg_groupAddToParser	PocoFlagsadd_membershipsadd_audit_intervaladd_constraint_violation_limitadd_exemptable_namespacesadd_log_denies_enabledadd_monitoringadd_mutationadd_no_contentadd_no_default_bundlesadd_referential_rulesadd_version)clsparser	top_groupmodal_groupmembership_groupscope_flagsconfig_groupmanual_flagss           6lib/surface/container/fleet/policycontroller/enable.pyArgszEnable.Args0   s   )))5I	!!#//	:..U.;K"55D5A//+x8K#66U6CL??<:L ! ##%//1**,'')!!'')&&(    c           	      @   t        j                  || j                        }|j                         r| j	                  |       y | j                  |d      }|j                         D ci c]  \  }}|| j                  ||       }}}| j                  |       y c c}}w )NT)	r	   PocoFlagParserr   is_feature_update_configure_feature
path_specsitemsr   update_specs)selfargsr!   specspsupdated_specss          r(   Runz
Enable.RunJ   s    !!$6F!
f%oodD)e=B[[]K]TQq$++a00]mK
& Ls   (Bc                 n    |j                         }|| j                  d        y | j                  |       y N)load_fleet_default_cfgupdate_fleet_default)r2   r!   default_cfgs      r(   r.   zEnable._configure_featureS   s2    //1K
%
,r*   specreturnc                 f    |j                   | j                  j                         S |j                   S r:   )policyControllerHubConfigr   PolicyControllerHubConfigr2   r>   s     r(   _get_hub_configzEnable._get_hub_config[   s-    %%-]]4466)))r*   c                 f    |j                   | j                  j                         S |j                   S r:   )r   r   PolicyControllerMembershipSpecrC   s     r(   _get_policycontrollerzEnable._get_policycontroller`   s-    $]]99;;   r*   c                 0   | j                  |      }| j                  |      }|j                  |      }|j                  |      }|j	                  |      }|j                  |      }|j                  |      }|j                  |      }|j                  |      }|j                  |      }| j                  j                  j                  j                  |_        |j                  |j!                  |      }||_        |j%                  |      }||_        |S r:   )rG   rD   update_audit_interval!update_constraint_violation_limitupdate_exemptable_namespacesupdate_log_deniesupdate_monitoringupdate_mutationupdate_no_contentupdate_referential_rulesr   rB   InstallSpecValueValuesEnumINSTALL_SPEC_ENABLEDinstallSpecr   update_default_bundlesrA   update_version)r2   r>   r!   pchub_cfgs        r(   r   zEnable.enablee   s   		#	#D	)B""2&G**73G66w?G11':G&&w/G&&w/G$$W-G&&w/G--g6G//JJ__  $--g6g#*B 			r	"BDKr*   N)__name__
__module____qualname____doc__feature_namemf_nameclassmethodr)   r8   r.   r   MessagerD   rG   r    r*   r(   r   r      sr    	 $,' 2'-*("2"2 *x7G7G *
!(8(8 !X=M=M !
r*   r   N)r[   
__future__r   r   r   apitools.base.protorpcliter   3googlecloudsdk.command_lib.container.fleet.featuresr   =googlecloudsdk.command_lib.container.fleet.membershipfeaturesmf_base;googlecloudsdk.command_lib.container.fleet.policycontrollerr   r	   UpdateCommandEnableCommandPocoCommandr   r`   r*   r(   <module>rj      sR    7 &  ' / D Y O M]	]r*   