HEX
Server: Apache/2.4.68 (Debian)
System: Linux as-cs-widget-demo-us-central1 6.1.0-44-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.164-1 (2026-03-09) x86_64
User: root (0)
PHP: 8.2.32
Disabled: NONE
Upload Files
File: //lib/google-cloud-sdk/lib/surface/terraform/__pycache__/vet.cpython-312.pyc
�

��{%���dZddlmZddlmZddlmZddlZddlmZddl	m
Z
ddlmZdd	lm
Z
dd
lmZddlmZddlmZdd
lmZddlmZdZGd�de
j.�ZGd�de
j2�Zej6ej8j:ej8j<�Gd�dej>��Z y)�6Validate that a terraform plan complies with policies.�)�absolute_import)�division)�unicode_literalsN)�base)�binary_operations)�log)�metrics)�
properties)�progress_tracker)�GetFreshAccessToken)�encoding)�filesz�Could not locate terraform-tools executable [{binary}]. Please ensure gcloud terraform-tools component is properly installed. See https://cloud.google.com/sdk/docs/components for more details.c�,��eZdZdZiZ�fd�Zd�Z�xZS)�"TerraformToolsTfplanToCaiOperationz>Streaming operation for Terraform Tools tfplan-to-cai command.c	�h��dtjd��i}tt|�dddd|dd�|��y)N�MISSING_EXEC�terraform-tools��binaryT)r�check_hidden�install_if_missing�
custom_errors�structured_output�)�MISSING_BINARY�format�superr�__init__��self�kwargsr�	__class__s   ��lib/surface/terraform/vet.pyrz+TerraformToolsTfplanToCaiOperation.__init__,sN�����-�-�5F�-�G��M�
�
,�d�<�� ���#����
�c	�t�||d|d|dtj�g}	|r|	d|gz
}	|r|	d|gz
}	|r|	d|gz
}	|	S)Nz
--output-path�--verbosityz--user-agentz	--project�--region�--zone)r
�GetUserAgent)
r!�command�terraform_plan_json�project�region�zone�	verbosity�output_pathr"�argss
          r$�_ParseArgsForCommandz7TerraformToolsTfplanToCaiOperation._ParseArgsForCommand8si��	�����������	�D��
�{�G�$�$�d�
�
�z�6�"�"�d��
�x����d��Kr%��__name__�
__module__�__qualname__�__doc__rrr3�
__classcell__�r#s@r$rr's���F��-�
�r%rc�,��eZdZdZiZ�fd�Zd�Z�xZS)�TerraformToolsValidateOperationz3operation for Terraform Tools validate-cai command.c�f��dtjd��i}tt|�dddd|d�|��y)NrrrTF)rrrrr)rrrr<rr s   �r$rz(TerraformToolsValidateOperation.__init__QsK�����-�-�5F�-�G��M�
�
)�4�9�� �� �#���
r%c�P�||d|dtjj|�g}|S)Nr'�--policy-library)�os�path�
expanduser)r!r+�
input_file�policy_libraryr0r"r2s       r$r3z4TerraformToolsValidateOperation._ParseArgsForCommand]s3��	�����
�����>�*�
�D��Kr%r4r:s@r$r<r<Ms���;��-�
�
r%r<c�.�eZdZdZddiZed��Zd�Zy)�Vetr�EXAMPLESz�
        To validate that a terraform plan complies with a policy library
        at `/my/policy/library`:

        $ {command} tfplan.json --policy-library=/my/policy/library
        c��|jdd��|jddd��|jdd	d
��|jdd	d��y)
Nr,ztFile which contains a JSON export of a terraform plan. This file will be validated against the given policy library.)�helpr?Tz)Directory which contains a policy library)�requiredrIr)Fz:Default zone to use for resources that do not have one setr(z<Default region to use for resources that do not have one set)�add_argument)�parsers r$�ArgszVet.Argsxsx��
����
B��������
8���
�����
I���
�����
K��r%c�F	�t�}t�}t�}ttjj
jj���dd�}gd�}gd�}gd�}gd�}	tjj�D]\}
}|
|vs�|||
<�tj�5}tjj|d�}
tjj
jj�}|r%t!j"d	j%|��nT|D]O}
t'j(tj|
�}|s�*t!j"d
j%||
��nd}|j*r1|j*}t!j"dj%|��nT|	D]O}
t'j(tj|
�}|s�*t!j"d
j%||
��nd}|j,r1|j,}t!j"dj%|��nT|D]O}
t'j(tj|
�}|s�*t!j"dj%||
��n|d||||j.|j0|
|��}|j2|_|j2dkDr
	ddd�yt5j6dd��5|d|j8|
|j0|��}|d|j8|j.|j0|��}ddd�ddd�j2dk(sj2dk(rd|_n%|j2dk(s|j2dk(rd|_g}d|fdffD]�\}}|j:r1	t=j>|j:d��}||j@z
}|jFs�Pt=jHd�}|jFjKd �D]
}||����|S#1swY��xYw#1swY��xYw#t<jB$r't!jDdj%|��Y��wxYw)!N)�account�true)�GOOGLE_OAUTH_ACCESS_TOKEN�USE_STRUCTURED_LOGGING)�
HTTP_PROXY�
http_proxy�HTTPS_PROXY�https_proxy�NO_PROXY�no_proxy)�GOOGLE_PROJECT�GOOGLE_CLOUD_PROJECT�GCLOUD_PROJECT)�GOOGLE_ZONE�GCLOUD_ZONE�CLOUDSDK_COMPUTE_ZONE)�
GOOGLE_REGION�
GCLOUD_REGION�CLOUDSDK_COMPUTE_REGIONzcai_assets.jsonz%Setting project to {} from propertiesz!Setting project to {} from env {}�zSetting region to {} from argsz Setting region to {} from env {}zSetting zone to {} from argszSetting zone to {} from env {}z
tfplan-to-cai)r+r-r.r/r,r0r1�envrzValidating resourceszAborted validation.)�message�aborted_messagezvalidate-cai)r+rDrCr0rczvalidate-tfplan���CAI�	TerraformT)�as_jsonz,Could not parse {} policy validation output.�
)&rr<r
r�VALUES�corerO�Getr@�environ�itemsr�TemporaryDirectoryrA�joinr-r	�debugrr�GetEncodedValuer.r/r,r0�	exit_coder�ProgressTrackerrD�stdoutr�ReadStructuredOutput�
resource_body�StructuredOutputError�warning�stderr�!DefaultStreamStructuredErrHandler�split)r!r2�tfplan_to_cai_operation�validate_cai_operation�validate_tfplan_operation�env_vars�proxy_env_names�project_env_names�zone_env_names�region_env_names�env_key�env_val�tempdir�
cai_assetsr-r.r/�response�cai_response�tfplan_response�
violations�policy_type�msg�handler�lines                         r$�RunzVet.Run�s!��@�B��<�>�� ?� A��
 �
�(9�(9�(>�(>�(F�(F�(J�(J�(L�M��	�H��O����N����J�J�,�,�.����	�O�	#�#����/�
�	!�	!�	#�w��7�7�<�<��):�;�j��!�!�&�&�.�.�2�2�4�g�	��	�	�9�@�@��I�J�(�G��,�,�R�Z�Z��A�'�
��I�I�9�@�@���"�
#��)��f�	
��������	�	�2�9�9�&�A�B�'�G��+�+�B�J�J��@�&�
��I�I�8�?�?���!�
"��(��d�	
����y�y���	�	�0�7�7��=�>�%�G��)�)�"�*�*�g�>�$�
��I�I�6�=�=�d�G�L�M��	&�)�!����"�6�6��N�N� ���h� �)�)�d�n�	
���!�	��g
$�	#�j�+�+�(�/�1�.�"��.�.�!��n�n����4�%��.�.��/�/��n�n����1�k
$�P����"�o�&?�&?�1�&D��d�n�	�	�	�1�	$��(A�(A�Q�(F��d�n�
�J�#(�,�"7�+�:I�:K�"L���X�	���	*�!�6�6��o�o�t�-�#���)�)�
)�*�	���#�E�E�d�K���O�O�)�)�$�/�D�
�$�-�0�"L� ��[1�1��k
$�	#��p!�6�6�	�

�+�+�D�K�K����	�sS�2B%Q�BQ�+BQ�>A-Q�4Q�A
Q�Q�!Q&�Q	�Q�Q#�&7R �R N)r5r6r7r8�
detailed_help�staticmethodrMr�rr%r$rFrFjs0��>����-�����.Kr%rF)!r8�
__future__rrr�os.pathr@�googlecloudsdk.callioper�&googlecloudsdk.command_lib.util.anthosr�googlecloudsdk.corer	r
r�googlecloudsdk.core.consoler�%googlecloudsdk.core.credentials.storer
�googlecloudsdk.core.utilrrr�StreamingBinaryBackedOperationr�BinaryBackedOperationr<�
ReleaseTracks�ReleaseTrack�ALPHA�BETA�CommandrFrr%r$�<module>r�s���=�&��'��(�D�#�'�*�8�E�-�*�"��#��4�4�#�L�&7�&M�&M��:����D�%�%�+�+�T�->�->�-C�-C�D�p�$�,�,�p�E�pr%