Ë
    ÇVhO  ã                   ó‚   — d dl mZmZmZ eZdZdZdZd dl	Z	d dl
mZ ddlmZmZ  G d	„ d
e«      Zd„ Zedk(  r e«        yy)é    )Úabsolute_importÚdivisionÚprint_functionuì  
---
module: startup_script
short_description: Manages startup scripts on Vultr
description:
  - Create, update and remove startup scripts.
version_added: "1.0.0"
author: "RenÃ© Moser (@resmo)"
options:
  name:
    description:
      - The script name.
    required: true
    type: str
  type:
    description:
      - The script type, can not be changed once created.
    default: boot
    choices: [ boot, pxe ]
    aliases: [ script_type ]
    type: str
  script:
    description:
      - The script source code.
      - Required if I(state=present).
    type: str
  state:
    description:
      - State of the script.
    default: present
    choices: [ present, absent ]
    type: str
extends_documentation_fragment:
  - vultr.cloud.vultr_v2
a¾  
- name: ensure a pxe script exists, source from a file
  vultr.cloud.startup_script:
    name: my_web_script
    script_type: pxe
    script: "{{ lookup('file', 'path/to/script') }}"

- name: ensure a boot script exists
  vultr.cloud.startup_script:
    name: vultr_startup_script
    script: "#!/bin/bash
echo Hello World > /root/hello"

- name: ensure a script is absent
  vultr.cloud.startup_script:
    name: my_web_script
    state: absent
aµ  
---
vultr_api:
  description: Response from Vultr API with a few additions/modification.
  returned: success
  type: dict
  contains:
    api_timeout:
      description: Timeout used for the API requests.
      returned: success
      type: int
      sample: 60
    api_retries:
      description: Amount of max retries for the API requests.
      returned: success
      type: int
      sample: 5
    api_retry_max_delay:
      description: Exponential backoff delay in seconds between retries up to this max delay value.
      returned: success
      type: int
      sample: 12
    api_endpoint:
      description: Endpoint used for the API requests.
      returned: success
      type: str
      sample: "https://api.vultr.com/v2"
vultr_startup_script:
  description: Response from Vultr API.
  returned: success
  type: dict
  contains:
    id:
      description: ID of the startup script.
      returned: success
      type: str
      sample: 7d726ffe-9be2-4f88-8cda-fa7eba1da2b5
    name:
      description: Name of the startup script.
      returned: success
      type: str
      sample: my startup script
    script:
      description: The source code of the startup script.
      returned: success
      type: str
      sample: "#!/bin/bash
echo Hello World > /root/hello"
    type:
      description: The type of the startup script.
      returned: success
      type: str
      sample: pxe
    date_created:
      description: Date the startup script was created.
      returned: success
      type: str
      sample: "2020-10-10T01:56:20+00:00"
    date_modified:
      description: Date the startup script was modified.
      returned: success
      type: str
      sample: "2020-10-10T01:56:20+00:00"
N)ÚAnsibleModuleé   )ÚAnsibleVultrÚvultr_argument_specc                   ó*   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zˆ xZS )ÚAnsibleVultrStartupScriptc                 óÚ   — | j                   j                  d   rRt        j                  | j                   j                  d   j	                  «       «      | j                   j                  d<   y y ©NÚscript)ÚmoduleÚparamsÚbase64Ú	b64encodeÚencode)Úselfs    ún/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/vultr/cloud/plugins/modules/startup_script.pyÚ	configurez#AnsibleVultrStartupScript.configureŠ   sP   € Ø;‰;×Ñ˜hÒ'Ü+1×+;Ñ+;¸D¿K¹K×<NÑ<NÈxÑ<X×<_Ñ<_Ó<aÓ+bˆDK‰K×Ñ˜xÒ(ð (ó    c                 óX   •— |d   j                  «       |d<   t        t        |   |¬«      S )Nr   )Úresource)r   Úsuperr   Úupdate)r   r   Ú	__class__s     €r   r   z AnsibleVultrStartupScript.updateŽ   s1   ø€ Ø% hÑ/×6Ñ6Ó8ˆÑÜÔ.°Ñ<ÀhÐ<ÓOÐOr   c                 ó\   — |r)t        j                  |d   «      j                  «       |d<   |S r   )r   Ú	b64decodeÚdecode)r   r   s     r   Útransform_resultz*AnsibleVultrStartupScript.transform_result’   s-   € ÙÜ!'×!1Ñ!1°(¸8Ñ2DÓ!E×!LÑ!LÓ!NˆHXÑØˆr   )Ú__name__Ú
__module__Ú__qualname__r   r   r    Ú__classcell__)r   s   @r   r   r   ‰   s   ø„ òcôPör   r   c                  óŒ  — t        «       } | j                  t        t        dd¬«      t        d¬«      t        ddddgdg¬«      t        dd	d
gd	¬«      ¬«      «       t        | dd	dgfgd¬«      }t	        |ddddg d¢ddgd¬«      }|j
                  j                  d«      d
k(  r|j                  «        y |j                  «        y )NÚstrT)ÚtypeÚrequired)r'   ÚbootÚpxeÚscript_type)r'   ÚdefaultÚchoicesÚaliasesÚpresentÚabsent)r'   r-   r,   )Únamer   r'   Ústater2   r   )Úargument_specÚrequired_ifÚsupports_check_modeÚvultr_startup_scriptz/startup-scriptsÚstartup_script)r1   r'   r   r1   )r   Ú	namespaceÚresource_pathÚressource_result_key_singularÚresource_get_detailsÚresource_create_param_keysÚresource_update_param_keysÚresource_key_name)	r	   r   Údictr   r   r   Úgetr0   r/   )r3   r   Úvultrs      r   ÚmainrB   ˜   sÝ   € Ü'Ó)€MØ×ÑÜÜ˜5¨4Ô0ÜØôô ØØØ ˜Ø&˜ô	ô ˜E¨I°xÐ+@È)ÔTô	
ôô  Ø#ài ( Ð,ð
ð !ô€Fô &ØØ(Ø(Ø&6Ø!Ú#=Ø$*¨HÐ#5Ø ô	€Eð ‡}}×Ñ˜Ó! XÒ-Ø‰à‰r   Ú__main__)Ú
__future__r   r   r   r'   Ú__metaclass__ÚDOCUMENTATIONÚEXAMPLESÚRETURNr   Úansible.module_utils.basicr   Úmodule_utils.vultr_v2r   r	   r   rB   r!   © r   r   ú<module>rL      s[   ð÷ AÑ @à€ð"€ðH€ð$>
€ó@ å 4ç Eô ô ò(ðV ˆzÒÙ…Fð r   