Class: OsCtld::ContainerControl::Commands::StopRunit::Runner
- Includes:
- Utils::Wall::Runner
- Defined in:
- lib/osctld/container_control/commands/stop_runit.rb
Instance Attribute Summary
Attributes inherited from Runner
#ctid, #log_file, #lxc_home, #pool, #stderr, #stdin, #stdout, #user_home
Instance Method Summary collapse
-
#execute(opts) ⇒ Integer
Exit status.
Methods included from Utils::Wall::Runner
Methods inherited from Runner
#error, #initialize, #lxc_ct, #ok, #setup_exec_env, #setup_exec_run_env, #system_path
Constructor Details
This class inherits a constructor from OsCtld::ContainerControl::Runner
Instance Method Details
#execute(opts) ⇒ Integer
Returns exit status.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/osctld/container_control/commands/stop_runit.rb', line 34 def execute(opts) if opts[:message] begin ct_wall(opts[:message]) rescue LXC::Error # ignore end end pid = lxc_ct.attach do setup_exec_env ENV['HOME'] = '/root' ENV['USER'] = 'root' next unless Dir.exist?('/etc/runit') # Only the existence of the reboot file can trigger reboot if File.exist?('/etc/runit/reboot') File.new('/etc/runit/reboot', 'w', 0).close File.chmod(0, '/etc/runit/reboot') end File.new('/etc/runit/stopit', 'w', 0o100).close File.chmod(0o100, '/etc/runit/stopit') end Process.wait(pid) if $?.exitstatus == 0 ok else error("runit-stop failed with exit status #{$?.exitstatus}") end end |