
    VhK&                         d dl mZmZmZ eZdZdZd dl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dk(  r e        yy)    )absolute_importdivisionprint_functiona  
---
module: podman_secret
author:
  - "Aliaksandr Mianzhynski (@amenzhinsky)"
version_added: '1.7.0'
short_description: Manage podman secrets
notes: []
description:
  - Manage podman secrets
requirements:
  - podman
options:
  data:
    description:
      - The value of the secret. Required when C(state) is C(present).
        Mutually exclusive with C(env) and C(path).
    type: str
  driver:
    description:
      - Override default secrets driver, currently podman uses C(file)
        which is unencrypted.
    type: str
  driver_opts:
    description:
      - Driver-specific key-value options.
    type: dict
  env:
    description:
      - The name of the environment variable that contains the secret.
        Mutually exclusive with C(data) and C(path).
    type: str
  executable:
    description:
      - Path to C(podman) executable if it is not in the C($PATH) on the
        machine running C(podman)
    type: str
    default: 'podman'
  force:
    description:
      - Use it when C(state) is C(present) to remove and recreate an existing secret.
    type: bool
    default: false
  skip_existing:
    description:
      - Use it when C(state) is C(present) and secret with the same name already exists.
        If set to C(true), the secret will NOT be recreated and remains as is.
    type: bool
    default: false
  name:
    description:
      - The name of the secret.
    required: True
    type: str
  path:
    description:
      - Path to the file that contains the secret.
        Mutually exclusive with C(data) and C(env).
    type: path
  state:
    description:
      - Whether to create or remove the named secret.
    type: str
    default: present
    choices:
      - absent
      - present
  labels:
    description:
      - Labels to set on the secret.
    type: dict
  debug:
    description:
      - Enable debug mode for module. It prints secrets diff.
    type: bool
    default: False
a(  
- name: Create secret
  containers.podman.podman_secret:
    state: present
    name: mysecret
    data: "my super secret content"

- name: Create container that uses the secret
  containers.podman.podman_container:
    name: showmysecret
    image: docker.io/alpine:3.14
    secrets:
      - mysecret
    detach: false
    command: cat /run/secrets/mysecret
  register: container

- name: Output secret data
  debug:
    msg: '{{ container.stdout }}'

- name: Remove secret
  containers.podman.podman_secret:
    state: absent
    name: mysecret
    N)AnsibleModule)LooseVersion)get_podman_version beforeafterc                 
   |t        |      t        d      k  rH| j                  |ddddg      \  }}}||j                         D cg c]  }|j                          c}v S | j                  |dd|g      \  }}}|dk(  S c c}w )Nz4.5.0secretlsz--formatz	{{.Name}}existsr   )r   run_command
splitlinesstrip)module
executablenameversionrcouterris           s/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/containers/podman/plugins/modules/podman_secret.pypodman_secret_existsr   z   s    ,w/,w2GG))4[ACC3>>+;<a	<<<%%	Xx.0LBS7N =s   B c                     |ddd|g}| j                  |      \  }}}|dk7  r|	r| j                  d|z         y|ry	 | j                  |      d   }|r3|d   |k7  r+|	r|t        d	<   |d   t        d
<   ydt        d	<   dt        d
<   y|rgt	        |d      5 }|j                         j                  d      }d d d        |d   k7  r+|	r|t        d	<   |d   t        d
<   ydt        d	<   dt        d
<   y|rRt        j                  j                  |      }|d   |k7  r+|	r|t        d	<   |d   t        d
<   ydt        d	<   dt        d
<   y|r*|d   d   d   |k7  r|t        d	<   |d   d   d   t        d
<   y|r|j                         D ]p  \  }}|d   d   d   j                  |      |k7  s$dj                  ||g      t        d	<   dj                  ||d   d   d   j                  |      g      t        d
<    y |
r}|
j                         D ]j  \  }}|d   d   j                  |      |k7  s!dj                  ||g      t        d	<   dj                  ||d   d   j                  |      g      t        d
<    y y# 1 sw Y   xY w# t        $ r Y yw xY w)Nr   inspectz--showsecretr   z2PODMAN-SECRET-DEBUG: Unable to get secret info: %sTF
SecretDatar   r   z<different-secret>z<secret>rbzutf-8SpecDriverNameOptions=Labels)r   log	from_jsondiffopenreaddecodeosenvirongetitemsjoin	Exception)r   r   r   datapathenvskipdriverdriver_optsdebuglabelscmdr   r   r   r   ftextenv_datakvs                        r   need_updaterB      s   xND
AC%%c*LBS	QwJJKcQR4!!#&q)l#t+$(DM%+L%9DN  %9DM%/DNdD! 0Qvvxw/0l#t+$(DM%+L%9DN  %9DM%/DNzz~~c*Hl#x/$,DM%+L%9DN  %9DM%/DNf~h'/69 &W!'!9&!AX#))+  1&>(+I6::1=B$'HHaV$4DM%(XXF6N84Y?CCAFG&IDN    1&>(+//2a7$'HHaV$4DM%(XXF6N8488;<&>DN  S0 0N  sn   5J 3J J  I44'J J /A J 0J +J /5J %AJ 33J 'A
J 2J 4I>9J 	JJc                 L   t        | d      }|>t        |      t        d      k\  r't        | ||||||||	|
|      rt        | ||       n'ddiS |rt        | ||       |rt	        | |||      rddiS |ddg}|r"|j                  d       |j                  |       |	rF|j                  d       |j                  d	j                  d
 |	j                         D                     |rK|j                         D ]8  \  }}|j                  d       |j                  dj                  ||g             : |j                  |       |r|j                  d       nl|r|j                  |       nX|rVt        j                  j                  |      | j                  d|z         |j                  d       |j                  |       |r| j                  ||d      \  }}}n| j                  |      \  }}}|dk7  r| j                  d|z         dt        d   dz   t        d   dz   ddS )NF)failz4.7.0changedr   createz--driverz--driver-opts,c              3   >   K   | ]  }d j                  |        yw)r&   N)r2   ).0r   s     r   	<genexpr>z'podman_secret_create.<locals>.<genexpr>   s     EACHHQKEs   z--labelr&   -z"Environment variable %s is not setmsgz--envT)r4   binary_datar   zUnable to create secret: %sr   
r   r
   )rE   r*   )r   r   rB   podman_secret_remover   appendr2   r1   r.   r/   r0   	fail_jsonr   r*   )r   r   r   r4   r5   r6   forcer7   r8   r9   r:   r;   podman_versionr<   r@   rA   r   r   r   s                      r   podman_secret_createrU      s   'U;N!l>&BlSZF[&[vz4tS$P[]bdjk T:u%% T:(T>Ru%%x
*C

:

6

?#

388E1B1B1DEEFLLN 	)DAqJJy!JJsxxA'(	) JJt

3	

4	::>>#&!E!KL

7

3))#Dd)KC))#.C	Qw:S@A 8nt+']T)
     c                     d}| j                  |dd|g      \  }}}|dk(  rd}d	|iS d|v r	 d	|iS | j                  d|z         d	|iS )
NFr   rmr   Tzno such secretzUnable to remove secret: %srL   rE   )r   rR   )r   r   r   rE   r   r   r   s          r   rP   rP      s    G%%z8T4&HILBS	Qw 	7  
S	 
 	7  	:S@A 	7 rV   c                  b   t        t        t        dd      t        ddddg      t        dd      t        dd	      t        d
      t        d
      t        dd      t        dd      t        d
      t        d
      t        d
      t        dd            ddg ddfgg dg      } | j                  d   }| j                  d   }| j                  | j                  d   d      }|dk(  r| j                  d   }| j                  d   }| j                  d   }| j                  d   }| j                  d   }| j                  d   }	| j                  d   }
| j                  d   }| j                  d   }t	        | ||||||||||	|
      }nt        | ||      } | j                  di | y )Nstrpodman)typedefaultpresentabsent)r\   r]   choicesT)r\   required)r\   no_log)r\   r5   boolFdict)r   stater   r4   r6   r5   rS   skip_existingr8   r9   r;   r:   re   )r5   r6   r4   )argument_specrequired_ifmutually_exclusiver   r   )ra   r4   rS   rf   r8   r9   r:   r;   r6    )r   rd   paramsget_bin_pathrU   rP   	exit_json)r   re   r   r   r4   rS   r7   r8   r9   r:   r;   r5   r6   resultss                 r   mainro     s   9E9x>ST5405.% 6"FE2FE:U#&)V$FE2
 y*A4HI34!F& MM'"E== D$$V]]<%@4$PJ	}}V$g&}}_-x(mmM2g&x(}}V$mmE"&vz'+T4eT'-{E6K 'vz4@FwrV   __main__)
__future__r   r   r   r\   __metaclass__DOCUMENTATIONEXAMPLESr.   ansible.module_utils.basicr   Hansible_collections.containers.podman.plugins.module_utils.podman.commonr   r   r*   r   rB   rU   rP   ro   __name__rj   rV   r   <module>rx      sk    A @L\6 
 4 a gr">B1h( V zF rV   