win_service: quoted path fix (#32469)
* win_service: fix for path in quotes
* Added tests to verify behaviour doesn't regress
(cherry picked from commit 5b1db00b65
)
This commit is contained in:
parent
82c2da31be
commit
e771b64f1b
3 changed files with 41 additions and 1 deletions
|
@ -32,7 +32,7 @@ $display_name = Get-AnsibleParam -obj $params -name 'display_name' -type 'str'
|
||||||
$force_dependent_services = Get-AnsibleParam -obj $params -name 'force_dependent_services' -type 'bool' -default $false
|
$force_dependent_services = Get-AnsibleParam -obj $params -name 'force_dependent_services' -type 'bool' -default $false
|
||||||
$name = Get-AnsibleParam -obj $params -name 'name' -type 'str' -failifempty $true
|
$name = Get-AnsibleParam -obj $params -name 'name' -type 'str' -failifempty $true
|
||||||
$password = Get-AnsibleParam -obj $params -name 'password' -type 'str'
|
$password = Get-AnsibleParam -obj $params -name 'password' -type 'str'
|
||||||
$path = Get-AnsibleParam -obj $params -name 'path' -type 'path'
|
$path = Get-AnsibleParam -obj $params -name 'path'
|
||||||
$start_mode = Get-AnsibleParam -obj $params -name 'start_mode' -type 'str' -validateset 'auto','manual','disabled','delayed'
|
$start_mode = Get-AnsibleParam -obj $params -name 'start_mode' -type 'str' -validateset 'auto','manual','disabled','delayed'
|
||||||
$state = Get-AnsibleParam -obj $params -name 'state' -type 'str' -validateset 'started','stopped','restarted','absent','paused'
|
$state = Get-AnsibleParam -obj $params -name 'state' -type 'str' -validateset 'started','stopped','restarted','absent','paused'
|
||||||
$username = Get-AnsibleParam -obj $params -name 'username' -type 'str'
|
$username = Get-AnsibleParam -obj $params -name 'username' -type 'str'
|
||||||
|
@ -51,6 +51,9 @@ if ($password -ne $null -and $username -eq $null) {
|
||||||
if ($desktop_interact -eq $true -and (-not ($username -eq "LocalSystem" -or $username -eq $null))) {
|
if ($desktop_interact -eq $true -and (-not ($username -eq "LocalSystem" -or $username -eq $null))) {
|
||||||
Fail-Json $result "Can only set 'desktop_interact' to true when 'username' equals 'LocalSystem'"
|
Fail-Json $result "Can only set 'desktop_interact' to true when 'username' equals 'LocalSystem'"
|
||||||
}
|
}
|
||||||
|
if ($path -ne $null) {
|
||||||
|
$path = [System.Environment]::ExpandEnvironmentVariables($path)
|
||||||
|
}
|
||||||
|
|
||||||
Function Get-ServiceInfo($name) {
|
Function Get-ServiceInfo($name) {
|
||||||
# Need to get new objects so we have the latest info
|
# Need to get new objects so we have the latest info
|
||||||
|
|
|
@ -51,3 +51,9 @@
|
||||||
- '{{test_win_service_name}}'
|
- '{{test_win_service_name}}'
|
||||||
- TestServiceParent2
|
- TestServiceParent2
|
||||||
- TestServiceDependency
|
- TestServiceDependency
|
||||||
|
|
||||||
|
- name: remove test environment variable
|
||||||
|
win_environment:
|
||||||
|
name: TEST_SERVICE_PATH
|
||||||
|
level: machine
|
||||||
|
state: absent
|
||||||
|
|
|
@ -610,6 +610,37 @@
|
||||||
- not win_service_path_again|changed
|
- not win_service_path_again|changed
|
||||||
- win_service_path_again.path == 'C:\\temp\\test.exe'
|
- win_service_path_again.path == 'C:\\temp\\test.exe'
|
||||||
|
|
||||||
|
- name: create test environment variable
|
||||||
|
win_environment:
|
||||||
|
name: TEST_SERVICE_PATH
|
||||||
|
value: C:\temp
|
||||||
|
level: machine
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: set service path with quotes and env var
|
||||||
|
win_service:
|
||||||
|
name: "{{test_win_service_name}}"
|
||||||
|
path: '"%TEST_SERVICE_PATH%\test.exe"'
|
||||||
|
register: win_service_env_quote_path
|
||||||
|
|
||||||
|
- name: check that the quoted service path has been changed
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- win_service_env_quote_path|changed
|
||||||
|
- win_service_env_quote_path.path == '"C:\\temp\\test.exe"'
|
||||||
|
|
||||||
|
- name: set service path with quotes and env var again
|
||||||
|
win_service:
|
||||||
|
name: "{{test_win_service_name}}"
|
||||||
|
path: '"%TEST_SERVICE_PATH%\test.exe"'
|
||||||
|
register: win_service_env_quote_path_again
|
||||||
|
|
||||||
|
- name: check that the quoted service path has been changed again
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- not win_service_env_quote_path_again|changed
|
||||||
|
- win_service_env_quote_path_again.path == '"C:\\temp\\test.exe"'
|
||||||
|
|
||||||
- name: revert original service path back to normal
|
- name: revert original service path back to normal
|
||||||
win_service:
|
win_service:
|
||||||
name: "{{test_win_service_name}}"
|
name: "{{test_win_service_name}}"
|
||||||
|
|
Loading…
Reference in a new issue