mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #37426 from jfindlay/mac_sleep
Wait for macOS to change system settings
This commit is contained in:
commit
766b1437c2
3 changed files with 110 additions and 33 deletions
|
@ -6,7 +6,6 @@ Module for editing power settings on Mac OS X
|
|||
'''
|
||||
# Import python libs
|
||||
from __future__ import absolute_import
|
||||
import time
|
||||
|
||||
# Import salt libs
|
||||
import salt.utils
|
||||
|
@ -112,9 +111,14 @@ def set_sleep(minutes):
|
|||
value = _validate_sleep(minutes)
|
||||
cmd = 'systemsetup -setsleep {0}'.format(value)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return get_sleep() == {'Computer': value,
|
||||
'Display': value,
|
||||
'Hard Disk': value}
|
||||
|
||||
state = []
|
||||
for check in (get_computer_sleep, get_display_sleep, get_harddisk_sleep):
|
||||
state.append(salt.utils.mac_utils.confirm_updated(
|
||||
value,
|
||||
check,
|
||||
))
|
||||
return all(state)
|
||||
|
||||
|
||||
def get_computer_sleep():
|
||||
|
@ -156,7 +160,11 @@ def set_computer_sleep(minutes):
|
|||
value = _validate_sleep(minutes)
|
||||
cmd = 'systemsetup -setcomputersleep {0}'.format(value)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return str(value) in get_computer_sleep()
|
||||
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
str(value),
|
||||
get_computer_sleep,
|
||||
)
|
||||
|
||||
|
||||
def get_display_sleep():
|
||||
|
@ -198,7 +206,11 @@ def set_display_sleep(minutes):
|
|||
value = _validate_sleep(minutes)
|
||||
cmd = 'systemsetup -setdisplaysleep {0}'.format(value)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return str(value) in get_display_sleep()
|
||||
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
str(value),
|
||||
get_display_sleep,
|
||||
)
|
||||
|
||||
|
||||
def get_harddisk_sleep():
|
||||
|
@ -241,11 +253,10 @@ def set_harddisk_sleep(minutes):
|
|||
cmd = 'systemsetup -setharddisksleep {0}'.format(value)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
# Give macOS some time to change the setting
|
||||
for i in range(5):
|
||||
if str(value) in get_harddisk_sleep():
|
||||
return True
|
||||
time.sleep(1)
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
str(value),
|
||||
get_harddisk_sleep,
|
||||
)
|
||||
|
||||
|
||||
def get_wake_on_modem():
|
||||
|
@ -288,7 +299,11 @@ def set_wake_on_modem(enabled):
|
|||
state = salt.utils.mac_utils.validate_enabled(enabled)
|
||||
cmd = 'systemsetup -setwakeonmodem {0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return get_wake_on_modem() == state
|
||||
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_wake_on_modem,
|
||||
)
|
||||
|
||||
|
||||
def get_wake_on_network():
|
||||
|
@ -331,7 +346,11 @@ def set_wake_on_network(enabled):
|
|||
state = salt.utils.mac_utils.validate_enabled(enabled)
|
||||
cmd = 'systemsetup -setwakeonnetworkaccess {0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return get_wake_on_network() == state
|
||||
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_wake_on_network,
|
||||
)
|
||||
|
||||
|
||||
def get_restart_power_failure():
|
||||
|
@ -374,7 +393,11 @@ def set_restart_power_failure(enabled):
|
|||
state = salt.utils.mac_utils.validate_enabled(enabled)
|
||||
cmd = 'systemsetup -setrestartpowerfailure {0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return get_restart_power_failure() == state
|
||||
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_restart_power_failure,
|
||||
)
|
||||
|
||||
|
||||
def get_restart_freeze():
|
||||
|
@ -419,7 +442,11 @@ def set_restart_freeze(enabled):
|
|||
state = salt.utils.mac_utils.validate_enabled(enabled)
|
||||
cmd = 'systemsetup -setrestartfreeze {0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return get_restart_freeze() == state
|
||||
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_restart_freeze,
|
||||
)
|
||||
|
||||
|
||||
def get_sleep_on_power_button():
|
||||
|
@ -463,4 +490,8 @@ def set_sleep_on_power_button(enabled):
|
|||
state = salt.utils.mac_utils.validate_enabled(enabled)
|
||||
cmd = 'systemsetup -setallowpowerbuttontosleepcomputer {0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
return get_sleep_on_power_button() == state
|
||||
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_sleep_on_power_button,
|
||||
)
|
||||
|
|
|
@ -226,9 +226,11 @@ def set_remote_login(enable):
|
|||
cmd = 'systemsetup -f -setremotelogin {0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
enabled = salt.utils.mac_utils.validate_enabled(get_remote_login())
|
||||
|
||||
return state == enabled
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_remote_login,
|
||||
normalize_ret=True,
|
||||
)
|
||||
|
||||
|
||||
def get_remote_events():
|
||||
|
@ -276,9 +278,11 @@ def set_remote_events(enable):
|
|||
cmd = 'systemsetup -setremoteappleevents {0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
enabled = salt.utils.mac_utils.validate_enabled(get_remote_events())
|
||||
|
||||
return state == enabled
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_remote_events,
|
||||
normalize_ret=True,
|
||||
)
|
||||
|
||||
|
||||
def get_computer_name():
|
||||
|
@ -318,7 +322,10 @@ def set_computer_name(name):
|
|||
cmd = 'systemsetup -setcomputername "{0}"'.format(name)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
return get_computer_name() == name
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
name,
|
||||
get_computer_name,
|
||||
)
|
||||
|
||||
|
||||
def get_subnet_name():
|
||||
|
@ -362,7 +369,10 @@ def set_subnet_name(name):
|
|||
cmd = 'systemsetup -setlocalsubnetname "{0}"'.format(name)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
return get_subnet_name() == name
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
name,
|
||||
get_subnet_name,
|
||||
)
|
||||
|
||||
|
||||
def get_startup_disk():
|
||||
|
@ -429,7 +439,10 @@ def set_startup_disk(path):
|
|||
cmd = 'systemsetup -setstartupdisk {0}'.format(path)
|
||||
salt.utils.mac_utils.execute_return_result(cmd)
|
||||
|
||||
return get_startup_disk() == path
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
path,
|
||||
get_startup_disk,
|
||||
)
|
||||
|
||||
|
||||
def get_restart_delay():
|
||||
|
@ -490,7 +503,10 @@ def set_restart_delay(seconds):
|
|||
cmd = 'systemsetup -setwaitforstartupafterpowerfailure {0}'.format(seconds)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
return get_restart_delay() == seconds
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
seconds,
|
||||
get_restart_delay,
|
||||
)
|
||||
|
||||
|
||||
def get_disable_keyboard_on_lock():
|
||||
|
@ -540,10 +556,11 @@ def set_disable_keyboard_on_lock(enable):
|
|||
'{0}'.format(state)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
enabled = salt.utils.mac_utils.validate_enabled(
|
||||
get_disable_keyboard_on_lock())
|
||||
|
||||
return enabled == state
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
state,
|
||||
get_disable_keyboard_on_lock,
|
||||
normalize_ret=True,
|
||||
)
|
||||
|
||||
|
||||
def get_boot_arch():
|
||||
|
@ -612,4 +629,7 @@ def set_boot_arch(arch='default'):
|
|||
cmd = 'systemsetup -setkernelbootarchitecture {0}'.format(arch)
|
||||
salt.utils.mac_utils.execute_return_success(cmd)
|
||||
|
||||
return arch in get_boot_arch()
|
||||
return salt.utils.mac_utils.confirm_updated(
|
||||
arch,
|
||||
get_boot_arch,
|
||||
)
|
||||
|
|
|
@ -9,8 +9,7 @@ from __future__ import absolute_import
|
|||
import logging
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
# Import Third Party Libs
|
||||
import time
|
||||
|
||||
# Import Salt Libs
|
||||
import salt.utils
|
||||
|
@ -19,6 +18,9 @@ import salt.grains.extra
|
|||
from salt.exceptions import CommandExecutionError, SaltInvocationError,\
|
||||
TimedProcTimeoutError
|
||||
|
||||
# Import Third Party Libs
|
||||
from salt.ext.six.moves import range
|
||||
|
||||
DEFAULT_SHELL = salt.grains.extra.shell()['shell']
|
||||
|
||||
# Set up logging
|
||||
|
@ -193,3 +195,27 @@ def validate_enabled(enabled):
|
|||
return 'on' if enabled.lower() in ['on', 'yes'] else 'off'
|
||||
|
||||
return 'on' if bool(enabled) else 'off'
|
||||
|
||||
|
||||
def confirm_updated(value, check_fun, normalize_ret=False, wait=5):
|
||||
'''
|
||||
Wait upto ``wait`` seconds for a system parameter to be changed before
|
||||
deciding it hasn't changed.
|
||||
|
||||
:param str value: The value indicating a successful change
|
||||
|
||||
:param function check_fun: The function whose return is compared with
|
||||
``value``
|
||||
|
||||
:param bool normalize_ret: Whether to normalize the return from
|
||||
``check_fun`` with ``validate_enabled``
|
||||
|
||||
:param int wait: The maximum amount of seconds to wait for a system
|
||||
parameter to change
|
||||
'''
|
||||
for i in range(wait):
|
||||
state = validate_enabled(check_fun()) if normalize_ret else check_fun()
|
||||
if value in state:
|
||||
return True
|
||||
time.sleep(1)
|
||||
return False
|
||||
|
|
Loading…
Add table
Reference in a new issue