summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/win_power_plan
diff options
context:
space:
mode:
authorJordan Borean <jborean93@gmail.com>2019-01-31 21:32:12 +0100
committerGitHub <noreply@github.com>2019-01-31 21:32:12 +0100
commitf27078df520007824969714ce5b442c536128044 (patch)
treeec2dd26d851bfaeb33a6d2f8a80a3fbb3e0a9871 /test/integration/targets/win_power_plan
parentwin_rds move to test group 3 (#51559) (diff)
downloadansible-f27078df520007824969714ce5b442c536128044.tar.xz
ansible-f27078df520007824969714ce5b442c536128044.zip
win_power_plan: fix for Windows 10 and Server 2008 compatibility (#51471)
Diffstat (limited to 'test/integration/targets/win_power_plan')
-rw-r--r--test/integration/targets/win_power_plan/tasks/main.yml48
1 files changed, 17 insertions, 31 deletions
diff --git a/test/integration/targets/win_power_plan/tasks/main.yml b/test/integration/targets/win_power_plan/tasks/main.yml
index 0b6f0c315e..000d8b1a66 100644
--- a/test/integration/targets/win_power_plan/tasks/main.yml
+++ b/test/integration/targets/win_power_plan/tasks/main.yml
@@ -1,26 +1,16 @@
-- name: register os version (seems integration tests don't gather this fact)
- raw: powershell.exe "gwmi Win32_OperatingSystem | select -expand version"
- register: os_version
- changed_when: False
-# ^^ seems "raw" is the only module that works on 2008 non-r2. win_command and win_shell both failed
+# I dislike this but 2008 doesn't support the Win32_PowerPlan WMI provider
+- name: get current plan details
+ win_shell: |
+ $plan_info = powercfg.exe /list
+ ($plan_info | Select-String -Pattern '\(([\w\s]*)\) \*$').Matches.Groups[1].Value
+ ($plan_info | Select-String -Pattern '\(([\w\s]*)\)$').Matches.Groups[1].Value
+ register: plan_info
-- name: check if module fails gracefully when older than 2008r2
- win_power_plan:
- name: "high performance"
- when: os_version.stdout_lines[0] is version('6.1','lt')
- check_mode: yes
- register: old_os_check
- failed_when: old_os_check.msg != 'The win_power_plan Ansible module is only available on Server 2008r2 (6.1) and newer'
+- set_fact:
+ original_plan: '{{ plan_info.stdout_lines[0] }}'
+ name: '{{ plan_info.stdout_lines[1] }}'
- block:
- - name: register inactive power plan to test with
- win_shell: (Get-CimInstance -Name root\cimv2\power -Class win32_PowerPlan | ? {! $_.IsActive}).ElementName[0]
- register: disabled_power_plan
- changed_when: False
-
- - set_fact:
- name: "{{ disabled_power_plan.stdout_lines[0] }}"
-
#Test that plan detects change is needed, but doesn't actually apply change
- name: set power plan (check mode)
win_power_plan:
@@ -28,20 +18,17 @@
register: set_plan_check
check_mode: yes
-# - debug:
-# var: set_plan_check
-
- name: get result of set power plan (check mode)
- win_shell: (Get-CimInstance -Name root\cimv2\power -Class win32_PowerPlan -Filter "ElementName = '{{ name }}'").IsActive
+ win_shell: (powercfg.exe /list | Select-String -Pattern '\({{ name }}\)').Line
register: set_plan_check_result
changed_when: False
-
+
# verify that the powershell check is showing the plan as still inactive on the system
- name: assert setting plan (check mode)
assert:
that:
- set_plan_check is changed
- - set_plan_check_result.stdout == 'False\r\n'
+ - not set_plan_check_result.stdout_lines[0].endswith('*')
#Test that setting plan and that change is applied
- name: set power plan
@@ -50,7 +37,7 @@
register: set_plan
- name: get result of set power plan
- win_shell: (Get-CimInstance -Name root\cimv2\power -Class win32_PowerPlan -Filter "ElementName = '{{ name }}'").IsActive
+ win_shell: (powercfg.exe /list | Select-String -Pattern '\({{ name }}\)').Line
register: set_plan_result
changed_when: False
@@ -58,7 +45,7 @@
assert:
that:
- set_plan is changed
- - set_plan_result.stdout == 'True\r\n'
+ - set_plan_result.stdout_lines[0].endswith('*')
#Test that plan doesn't apply change if it is already set
- name: set power plan (idempotent)
@@ -71,8 +58,7 @@
that:
- set_plan_idempotent is not changed
- when: os_version.stdout_lines[0] is version('6.1','ge')
always:
- - name: always change back plan to high performance when done testing
+ - name: always change back plan to the original when done testing
win_power_plan:
- name: high performance
+ name: '{{ original_plan }}'