
    Vh                      N    d Z dZddlmZ  G d de      Zd Zedk(  r e        yy)	a  
---
module: server_action
short_description: Perform actions on OpenStack compute (Nova) instances
author: OpenStack Ansible SIG
description:
  - Perform actions on OpenStack compute (Nova) instances aka servers.
options:
  action:
    description:
      - Action to perform.
      - By default, only server owners and administrators are allowed to
        perform actions C(pause), C(unpause), C(suspend), C(resume), C(lock),
        C(unlock) and C(shelve_offload).
    choices: [lock, pause, reboot_hard, reboot_soft, rebuild, resume, shelve,
              shelve_offload, start, stop, suspend, unlock, unpause, unshelve]
    type: str
    required: true
  admin_password:
    description:
      - Admin password for server to rebuild.
    type: str
  all_projects:
    description:
      - Whether to search for server in all projects or the current project
        only.
    type: bool
    default: false
  image:
    description:
      - Image name or ID the server should be rebuilt with.
    type: str
  name:
    description:
      - Server name or ID.
    required: true
    type: str
    aliases: ['server']
extends_documentation_fragment:
  - openstack.cloud.openstack
z
- name: Pauses a compute instance
  openstack.cloud.server_action:
    cloud: devstack-admin
    action: pause
    server: vm1
    timeout: 200
    )OpenStackModulec                       e Zd Z e edg d       ed       edd       e        eddg	      
      Z edddgfgd      ZdgdgdgdgdgdgdgdgdgdgdgddgdgdgdZd Zy)ServerActionModuleT)stopstartpauseunpauselockunlocksuspendreboot_softreboot_hardresumerebuildshelveshelve_offloadunshelve)requiredchoices)no_logboolF)typedefaultserver)r   aliases)actionadmin_passwordall_projectsimagenamer   r   r   )required_ifsupports_check_modeSHUTOFFACTIVEPAUSED	SUSPENDEDSHELVED_OFFLOADEDSHELVEDc                    | j                   j                  | j                  d   d| j                  d         }|s.| j                  dj	                  | j                  d                | j                  d   }|dk(  xsb |d	k(  xr |d
    xsS |dk(  xr |d
   xsE |j
                  j                         | j                  |   D cg c]  }|j                          c}v}|s| j                  d       n(| j                  j                  r| j                  d       |dk(  r| j                   j                  j                  | j                  d   d      }t        ||d   |d         }| j                  d   }|||d<    | j                   j                  j                  d#i | n|dk(  rb| j                   j                  j!                  dj	                  |d         dd i      }| j"                  j$                  j'                  |       nQ|dz   }	|dv rd}	t)        | j                   j                  |	      }
|dk(  r
 |
|d       n|dk(  r
 |
|d       n |
|       | j                  d   r| j"                  j*                  j-                  | j                  d    d!j	                  |      "      D ]  }| j                   j                  j                  |d         }|d	k(  r|d
   s
|dk(  r|d
   s nJ| j                  |   D cg c]  }|j                          }}|j
                  j                         |v s n | j                  d       y c c}w c c}w )$Nr    Tr   )
name_or_iddetailedr   zNo Server found for {0})msgr   r   r
   	is_lockedr   F)changedr   )ignore_missingid)r   r    r   r   r   z/servers/{server_id}/action)	server_idshelveOffload)json_server)r   r   reboot_serverr   SOFTr   HARDwaittimeoutz/Timeout waiting for action {0} to be completed.)r9   message )conn
get_serverparams	fail_jsonformatstatuslower_action_map	exit_jsonansible
check_moder   
find_imagedictcomputerebuild_serverpostsdk
exceptionsraise_from_responsegetattrutilsiterate_timeout)selfr   r   awill_changer   kwargsr   responseaction_name	func_namecountsstatess                 q/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/openstack/cloud/plugins/modules/server_action.pyrunzServerActionModule.runy   s_   
 %%{{6*^4 & 6 NN8 &t{{6': ;  = X& y  J& <)<%<J(":vk':J }}""$040@0@0H-J12 ./WWY -J J	 	 NN5N)\\$$NN4N( YIIOO..t{{7/C>C / EE%f~ %d-F "[[)9:N)+9'(,DII,,6v6'' yy((---44vd|4L%t, . .H HH33H= 9,K 77-		 1 1;?I &&&)=(&&)&!;;v77I.I 8  
 **55fTlCf$)<)&2E-1-=-=f-EF!'')FF==&&(F2 	t$G-J~ Gs   MMN)__name__
__module____qualname__rH   argument_specmodule_kwargsrC   r]   r;       r\   r   r   =   s    T;<
 4(vu5f4(4
M 	G956 M@ &;%J%J'j$:&Z*m#+*#+*&Z'j19=&9%: (z+KW%rc   r   c                  &    t               }  |         y )N)r   )modules    r\   mainrf      s    !F
Hrc   __main__N)DOCUMENTATIONEXAMPLESBansible_collections.openstack.cloud.plugins.module_utils.openstackr   r   rf   r^   r;   rc   r\   <module>rk      sB   (T _S% S%l
 zF rc   