1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

win_msg: Added integration tests, parameter fixes (#26126)

This commit is contained in:
Dag Wieers 2017-06-28 02:35:38 +02:00 committed by Jordan Borean
parent 3ba4fc2d54
commit bb7ebc6a55
4 changed files with 54 additions and 22 deletions

View file

@ -24,40 +24,39 @@ $stopwatch = [system.diagnostics.stopwatch]::startNew()
$params = Parse-Args $args -supports_check_mode $true $params = Parse-Args $args -supports_check_mode $true
$check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -type "bool" -default $false $check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -type "bool" -default $false
$display_seconds = Get-AnsibleParam -obj $params -name display_seconds -default "10" -failifempty $False -resultobj $result $display_seconds = Get-AnsibleParam -obj $params -name "display_seconds" -type "int" -default "10"
$msg = Get-AnsibleParam -obj $params -name msg -default "Hello world!" -resultobj $result $msg = Get-AnsibleParam -obj $params -name "msg" -type "str" -default "Hello world!"
$to = Get-AnsibleParam -obj $params -name to -default "*" -failifempty $False -resultobj $result $to = Get-AnsibleParam -obj $params -name "to" -type "str" -default "*"
$wait = Get-AnsibleParam -obj $params -name wait -default $False -failifempty $False -resultobj $result $wait = Get-AnsibleParam -obj $params -name "wait" -type "bool" -default $false
$result = @{ $result = @{
changed = $false changed = $false
display_seconds = $display_seconds
msg = $msg
wait = $wait
} }
$msg_args = @($to, "/TIME:$display_seconds") $msg_args = @($to, "/TIME:$display_seconds")
If ($wait) { if ($wait) {
$msg_args += "/W" $msg_args += "/W"
} }
$msg_args += $msg $msg_args += $msg
if (-not $check_mode) { if (-not $check_mode) {
$ret = & msg.exe $msg_args 2>&1 $output = & msg.exe $msg_args 2>&1
$result.rc = $LASTEXITCODE $result.rc = $LASTEXITCODE
} }
$endsend_at = Get-Date| Out-String $endsend_at = Get-Date| Out-String
$stopwatch.Stop() $stopwatch.Stop()
$result.changed = $True $result.changed = $true
$result.display_seconds = $display_seconds
$result.msg = $msg
$result.runtime_seconds = $stopwatch.Elapsed.TotalSeconds $result.runtime_seconds = $stopwatch.Elapsed.TotalSeconds
$result.sent_localtime = $endsend_at.Trim() $result.sent_localtime = $endsend_at.Trim()
$result.wait = $wait
If (-not $result.rc -eq 0 ) { if ($result.rc -ne 0 ) {
Fail-Json $result "$ret" Fail-Json $result "$output"
} }
Exit-Json $result Exit-Json $result

View file

@ -25,7 +25,6 @@ ANSIBLE_METADATA = {'metadata_version': '1.0',
'status': ['preview'], 'status': ['preview'],
'supported_by': 'community'} 'supported_by': 'community'}
DOCUMENTATION = r''' DOCUMENTATION = r'''
--- ---
module: win_msg module: win_msg
@ -47,13 +46,14 @@ options:
- Whether to wait for users to respond. Module will only wait for the number of seconds specified in display_seconds or 10 seconds if not specified. - Whether to wait for users to respond. Module will only wait for the number of seconds specified in display_seconds or 10 seconds if not specified.
However, if I(wait) is true, the message is sent to each logged on user in turn, waiting for the user to either press 'ok' or for However, if I(wait) is true, the message is sent to each logged on user in turn, waiting for the user to either press 'ok' or for
the timeout to elapse before moving on to the next user. the timeout to elapse before moving on to the next user.
required: false type: bool
default: false default: 'no'
msg: msg:
description: description:
- The text of the message to be displayed. - The text of the message to be displayed.
default: Hello world! default: Hello world!
author: "Jon Hawkesworth (@jhawkesworth)" author:
- Jon Hawkesworth (@jhawkesworth)
notes: notes:
- This module must run on a windows host, so ensure your play targets windows - This module must run on a windows host, so ensure your play targets windows
hosts, or delegates to a windows host. hosts, or delegates to a windows host.
@ -63,10 +63,10 @@ notes:
''' '''
EXAMPLES = r''' EXAMPLES = r'''
# Warn logged in users of impending upgrade - name: Warn logged in users of impending upgrade
win_msg: win_msg:
display_seconds: 60 display_seconds: 60
msg: "Automated upgrade about to start. Please save your work and log off before {{ deployment_start_time }}" msg: Automated upgrade about to start. Please save your work and log off before {{ deployment_start_time }}
''' '''
RETURN = r''' RETURN = r'''
@ -74,12 +74,17 @@ msg:
description: Test of the message that was sent. description: Test of the message that was sent.
returned: changed returned: changed
type: string type: string
sample: "Automated upgrade about to start. Please save your work and log off before 22 July 2016 18:00:00" sample: Automated upgrade about to start. Please save your work and log off before 22 July 2016 18:00:00
display_seconds: display_seconds:
description: Value of display_seconds module parameter. description: Value of display_seconds module parameter.
returned: success returned: success
type: string type: string
sample: 10 sample: 10
rc:
description: The return code of the API call
returned: always
type: int
sample: 0
runtime_seconds: runtime_seconds:
description: How long the module took to run on the remote windows host. description: How long the module took to run on the remote windows host.
returned: success returned: success

View file

@ -0,0 +1 @@
windows/ci/group2

View file

@ -0,0 +1,27 @@
- name: Warn user
win_msg:
display_seconds: 10
msg: Keep calm and carry on.
register: msg_result
- name: Test msg_result
assert:
that:
- not msg_result|failed
- msg_result|changed
- msg_result.runtime_seconds < 10
- name: Warn user and wait for it
win_msg:
display_seconds: 5
msg: Keep calm and carry on.
#to: '{{ ansible_user }}'
wait: yes
register: msg_wait_result
- name: Test msg_wait_result
assert:
that:
- not msg_wait_result|failed
- msg_wait_result|changed
- msg_wait_result.runtime_seconds > 5