HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/states/__pycache__/heat.cpython-310.pyc
o

�N�g�&�@s�dZddlZddlZddlZddlZddlZddlZddlZdZ	z
ddl
mZdZ	Wn	ey3Ynwej
ejd�e�e�Zdd�Zd	d
�Z								dd
d�Zddd�ZdS)a4
Management of Heat
==================

.. versionadded:: 2017.7.0

:depends:   - heat Python module
:configuration: See :py:mod:`salt.modules.heat` for setup instructions.

The heat module is used to create, show, list and delete Heat staks.
Stack can be set as either absent or deploy.

.. code-block:: yaml

  heat.deployed:
    - name:
    - template: #Required
    - environment:
    - params: {}
    - poll: 5
    - rollback: False
    - timeout: 60

  heat.absent:
    - name:
    - poll: 5

mysql:
  heat.deployed:
    - template: salt://templates/mysql.heat.yaml
    - params:
      image: Debian 7
    - rollback: True

.. versionadded:: 2017.7.5,2018.3.1

    The spelling mistake in parameter `enviroment` was corrected to `environment`.
    The `enviroment` spelling mistake has been removed in Salt 3000.

�NF)�	jsonutilsT)�levelcCstrdSdS)z6
    Only load if the mysql module is in __salt__
    Zheat)Fz_The heat state module cannot be loaded: the oslo_serialization python library is not available.)�HAS_OSLO�rr�D/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/heat.py�__virtual__@src
Cs�|��}|�d�rtjj�|�}n%z	tjj�|�}Wntjjjy/}zt	t
|���d}~ww|dur6i}d|vsFd|vsFd|vsFt	d��|S)z
    Parsing template
    �{NZHeatTemplateFormatVersion�heat_template_versionZAWSTemplateFormatVersionz"Template format version not found.)�strip�
startswith�salt�utils�json�loads�yamlZ	safe_loadZ	YAMLError�
ValueError�str)Ztmpl_str�tpl�excrrr�_parse_templateMs 
��r��<c	Ks�t�d||||||||||	�ddidd�}
|s"d|
d<d|
d	<|
S|f|
d
<td||d�}|dr?|s?d
|�d�|
d	<|
S|d�r�|�r�|r�tjj��}td|d|dddddddddd�\}
}}td||
d||ddddddddddd�}|ds�tdr�|ddur�tjj�|d��W}tjj	�
|���}tjj�|�z!t
|�}d|vr�tjj�|�}ntj|ddd�}tjj�|�Wnty�}zd|
d<d|��|
d	<WYd}~nd}~wwWd�n1s�wYnd|
d<d�||�|
d	<nd|
d<d|
d	<|
ddu�r"td||d�}|d�s"d|
d<|d	|
d	<|
ddu�r+|
Sztd|�}td|d�}Wntjj�yY}zd|
d<|�|
d	<WYd}~nd}~ww|
ddu�r�||k�r�td�ryd|
d<d
|�d�|
d	<|
Sd|
d<d �||�|
d	<|
ddu�r�|
Std�r�dd
|�d!�d"�}nDtd#||||||||d$�}||
d%d&<d'|
d%d	<n)td�r�dd
|�d(�d"�}ntd)||||||||d$�}||
d%d&<d*|
d%d	<|d|
d<|d	|
d	<|
S)+a�
    Deploy stack with the specified properties

    name
        The name of the stack

    template
        File of template

    environment
        File of environment

    params
        Parameter dict used to create the stack

    poll
        Poll (in sec.) and report events until stack complete

    rollback
        Enable rollback on create failure

    timeout
        Stack creation timeout in minutes

    profile
        Profile to use

    .. versionadded:: 2017.7.5,2018.3.1

        The spelling mistake in parameter `enviroment` was corrected to `environment`.
        The `enviroment` spelling mistake has been removed in Salt 3000.

    z5Deployed with(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)N�T��name�comment�changes�resultFr�Name ist not validrr�heat.show_stack��profile�Stack z is deployedzfile.get_managed�base)r�template�source�source_hash�user�group�mode�saltenv�context�defaultsZskip_verify�kwargszfile.manage_file)rZsfn�retr%�
source_sumr'r(r)r*Zbackup�makedirsr$Zshow_changes�contentsZdir_mode�test�rr	�)�indent�ensure_asciizError parsing template zCan not open template: {} {}zCan not open templatezheat.template_stack)rr!zhashutil.digestr$z#Templates have same checksum: {} {}z is set to be updated)rrzheat.update_stack)rZ
template_file�environmentZ
parameters�poll�rollback�timeoutr!r�
stack_namezUpdate stackz is set to be createdzheat.create_stackzCreate stack)�log�debug�__salt__rr
�filesZmkstemp�__opts__ZfopenZstringutilsZ
to_unicode�readZsafe_rmrrZ	safe_dumpr�dumpsr�format�
exceptionsZCommandExecutionError)rr$r7�paramsr8r9r:�updater!Zconnection_argsr.�existing_stackZtemplate_tmp_fileZtsfnr/Zcomment_Ztemplate_manage_resultZtfp_rZtemplate_parseZtemplate_new�exZtemplate_stackZchecksum_templateZchecksum_stackZcmdexc�stackrrr�deployedes(-�

���������
�
��

�

��


��
rJcCs�t�d|||�ddidd�}|sd|d<d|d	<|S|f|d
<td||d�}|ds6d|d<d
|d	<|StdrHd|d<d|�d�|d	<|Std||||d�}|d|d<|d	|d	<||dd<d|dd	<|S)a
    Ensure that the named stack is absent

    name
        The name of the stack to remove

    poll
        Poll(in sec.) and report events until stack complete

    timeout
        Stack creation timeout in minutes

    profile
        Profile to use

    zAbsent with(%s, %s %s)NrTrFrrrrrr zStack not existr2r"z is set to be removedzheat.delete_stack)rr8r:r!rr;zDelete stack)r<r=r>r@)rr8r:r!r.rGrIrrr�absent2s0
�rK)NNNrFrFN)rrN)�__doc__�loggingZsalt.exceptionsrZsalt.utils.filesZsalt.utils.jsonZsalt.utils.stringutilsZsalt.utils.versionsZsalt.utils.yamlrZoslo_serializationr�ImportError�basicConfig�DEBUG�	getLogger�__name__r<rrrJrKrrrr�<module>s<)�


�N