Skip to content

Commit

Permalink
Add support for OpenBSD (#46147)
Browse files Browse the repository at this point in the history
(cherry picked from commit 2769a4e)
  • Loading branch information
danieljakots authored and abadger committed Oct 10, 2018
1 parent 083d2a6 commit 26de4f9
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 4 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/reboot_openbsd_support.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bugfixes:
- reboot - add support for OpenBSD
4 changes: 2 additions & 2 deletions lib/ansible/modules/system/reboot.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
pre_reboot_delay:
description:
- Seconds for shutdown to wait before requesting reboot.
- On Linux and macOS, this is converted to minutes and rounded down. If less than 60, it will be set to 0.
- On Solaris and FreeBSD, this will be seconds.
- On Linux, macOS, and OpenBSD this is converted to minutes and rounded down. If less than 60, it will be set to 0.
- On Solaris and FreeBSD this will be seconds.
default: 0
type: int
post_reboot_delay:
Expand Down
16 changes: 14 additions & 2 deletions lib/ansible/plugins/action/reboot.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,24 @@ class ActionModule(ActionBase):

DEPRECATED_ARGS = {}

BOOT_TIME_COMMANDS = {
'openbsd': "/sbin/sysctl kern.boottime",
}

SHUTDOWN_COMMANDS = {
'linux': DEFAULT_SHUTDOWN_COMMAND,
'freebsd': DEFAULT_SHUTDOWN_COMMAND,
'sunos': '/usr/sbin/shutdown',
'darwin': '/sbin/shutdown',
'openbsd': DEFAULT_SHUTDOWN_COMMAND,
}

SHUTDOWN_COMMAND_ARGS = {
'linux': '-r {delay_min} "{message}"',
'freebsd': '-r +{delay_sec}s "{message}"',
'sunos': '-y -g {delay_sec} -r "{message}"',
'darwin': '-r +{delay_min_macos} "{message}"'
'darwin': '-r +{delay_min_macos} "{message}"',
'openbsd': '-r +{delay_min} "{message}"',
}

def __init__(self, *args, **kwargs):
Expand Down Expand Up @@ -96,7 +102,13 @@ def construct_command(self):
def get_system_boot_time(self):
stdout = u''
stderr = u''
command_result = self._low_level_execute_command(self.DEFAULT_BOOT_TIME_COMMAND, sudoable=self.DEFAULT_SUDOABLE)

# Determine the system distribution in order to use the correct shutdown command arguments
uname_result = self._low_level_execute_command('uname')
distribution = uname_result['stdout'].strip().lower()

boot_time_command = self.BOOT_TIME_COMMANDS.get(distribution, self.DEFAULT_BOOT_TIME_COMMAND)
command_result = self._low_level_execute_command(boot_time_command, sudoable=self.DEFAULT_SUDOABLE)

# For single board computers, e.g., Raspberry Pi, that lack a real time clock and are using fake-hwclock
# launched by systemd, the update of utmp/wtmp is not done correctly.
Expand Down

0 comments on commit 26de4f9

Please sign in to comment.