1
0
mirror of https://github.com/rancher/os.git synced 2025-07-01 17:21:50 +00:00
os/cmd
Chris Marchesi 2f8eaa3314
cmd/power: Set correct container name and ensure full command executed
This fixes a few issues that are preventing shutdown and friends from
behaving correctly:

* The command name, which is being used to determine via what command it
was being called (ie: shutdown, reboot, or halt) was not being parsed
for absolute paths. This was preventing certain logic from being handled
(example: enforcing a static time value of "now" for shutdown), but more
problematically was the fact that it was being used as the container
name being passed to runDocker, the function that launches the
independent shutdown container. This was causing the shutdown container
to fail as something like "/sbin/shutdown" is not a valid name for a
container. The logic to parse out the base command being run is actually
present in runDocker, but does not run if a name is supplied to the
function.

* Further, the command line was not being parsed in the shutdown
container if the name supplied to runDocker was non-empty. Rather, the
full command to run just became the name of the container. Hence,
something like "/sbin/shutdown -h now" became just "shutdown", executing
the default power off behaviour for all actions (including reboots).

* Further to this, open-vm-tools expects "/sbin/shutdown -h now" to be a
valid command to halt the system, which was not being recognized as the
only recognized short-form halt flag in shutdown was its capital version
(-H).

This fixes these three issues by parsing out the base of the called
command before sending it to reboot, using all of os.Argv as the command
line to run regardless of if a name was set for the container or not,
and finally adding the lowercase -h switch to the "shutdown" form of
this command ("halt" is still uppercase only).

Fixes rancher/os#2121.
Fixes rancher/os#2074.
2017-10-20 17:09:13 -07:00
..
cloudinitexecute Get RancherOS logging to throw debug logs to a remote syslog server when the kernel netconsole is configured 2017-08-17 08:42:37 +10:00
cloudinitsave Stop overwriting a good resolv.conf file with the default one 2017-08-29 10:10:47 +10:00
control set the http_proxy env vars for the consoles 2017-09-15 23:38:15 +10:00
network dhcpcd overwrites resolv.conf when releasing a lease 2017-09-12 15:00:20 +10:00
power cmd/power: Set correct container name and ensure full command executed 2017-10-20 17:09:13 -07:00
respawn Initial fix to stop other containers before the console 2017-07-31 03:12:05 +00:00
sysinit Stop overwriting a good resolv.conf file with the default one 2017-08-29 10:10:47 +10:00
systemdocker Redo logging so its a little more capable 2017-07-13 12:44:47 +10:00
wait make ros log to dmesg 2016-11-30 10:51:30 +10:00