File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/states/__pycache__/vault.cpython-310.pyc
o
�N�g� � @ s: d Z ddlZddlZe�e�Zdd� Zdd� Zdd� ZdS ) z�
States for managing Hashicorp Vault.
Currently handles policies. Configuration instructions are documented in the execution module docs.
:maintainer: SaltStack
:maturity: new
:platform: all
.. versionadded:: 2017.7.0
� Nc
C s� d| � �}t d d|�}z"|jdkrt| ||�� d �W S |jdkr(t| |�W S |�� W d
S tyJ } z| i dd|� �d �W Y d
}~S d
}~ww )a�
Ensure a Vault policy with the given name and rules is present.
name
The name of the policy
rules
Rules formatted as in-line HCL
.. code-block:: yaml
demo-policy:
vault.policy_present:
- name: foo/bar
- rules: |
path "secret/top-secret/*" {
policy = "deny"
}
path "secret/not-very-secret/*" {
policy = "write"
}
�v1/sys/policy/�vault.make_requestZGET�� �rulesi� FzFailed to get policy: ��name�changes�result�commentN)� __utils__�status_code�_handle_existing_policy�json�_create_new_policyZraise_for_status� Exception)r r �url�response�e� r �E/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/vault.py�policy_present s
���r c C s| t d r| | d|d�id dd�S d|i}d| � �}td d ||d
�}|jdvr2| i dd
|j� �d�S | d| d |d�idd�S )N�test� )�old�newzPolicy would be createdr r r r �PUT�r �r �� FzFailed to create policy: TzPolicy was created)r r r r
)�__opts__r r �reason)r r �payloadr r r r r r >