everything as jobs
This commit is contained in:
parent
34be944b96
commit
154d2c48e8
7 changed files with 108 additions and 10 deletions
|
|
@ -46,25 +46,19 @@ class ServersController < ApplicationController
|
||||||
|
|
||||||
def start
|
def start
|
||||||
authorize_user!
|
authorize_user!
|
||||||
L4dServer::SystemdManager.start(@server)
|
StartServerJob.perform_later(@server.id)
|
||||||
@server.update(status: :starting)
|
|
||||||
Activity.log(current_user, "started", "Server", @server.id, {})
|
|
||||||
redirect_to @server, notice: "Server starting..."
|
redirect_to @server, notice: "Server starting..."
|
||||||
end
|
end
|
||||||
|
|
||||||
def stop
|
def stop
|
||||||
authorize_user!
|
authorize_user!
|
||||||
L4dServer::SystemdManager.stop(@server)
|
StopServerJob.perform_later(@server.id)
|
||||||
@server.update(status: :stopped)
|
redirect_to @server, notice: "Server stopping..."
|
||||||
Activity.log(current_user, "stopped", "Server", @server.id, {})
|
|
||||||
redirect_to @server, notice: "Server stopped."
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def restart
|
def restart
|
||||||
authorize_user!
|
authorize_user!
|
||||||
L4dServer::SystemdManager.restart(@server)
|
RestartServerJob.perform_later(@server.id)
|
||||||
@server.update(status: :starting)
|
|
||||||
Activity.log(current_user, "restarted", "Server", @server.id, {})
|
|
||||||
redirect_to @server, notice: "Server restarting..."
|
redirect_to @server, notice: "Server restarting..."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
28
app/jobs/restart_server_job.rb
Normal file
28
app/jobs/restart_server_job.rb
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
class RestartServerJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(server_id)
|
||||||
|
server = Server.find(server_id)
|
||||||
|
log "Restarting server: #{server.name}"
|
||||||
|
|
||||||
|
begin
|
||||||
|
log "Calling SystemdManager.restart..."
|
||||||
|
L4dServer::SystemdManager.restart(server)
|
||||||
|
log "SystemdManager.restart completed successfully"
|
||||||
|
|
||||||
|
server.update(status: :starting)
|
||||||
|
log "Server status updated to starting"
|
||||||
|
|
||||||
|
Activity.log(server.user, "restarted", "Server", server.id, {})
|
||||||
|
log "Activity logged"
|
||||||
|
rescue StandardError => e
|
||||||
|
log "ERROR: Failed to restart server: #{e.message}"
|
||||||
|
log "Backtrace: #{e.backtrace.first(3).join("\n")}"
|
||||||
|
|
||||||
|
server.update(status: :failed)
|
||||||
|
Activity.log(server.user, "restart_failed", "Server", server.id, { error: e.message })
|
||||||
|
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
28
app/jobs/start_server_job.rb
Normal file
28
app/jobs/start_server_job.rb
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
class StartServerJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(server_id)
|
||||||
|
server = Server.find(server_id)
|
||||||
|
log "Starting server: #{server.name}"
|
||||||
|
|
||||||
|
begin
|
||||||
|
log "Calling SystemdManager.start..."
|
||||||
|
L4dServer::SystemdManager.start(server)
|
||||||
|
log "SystemdManager.start completed successfully"
|
||||||
|
|
||||||
|
server.update(status: :starting)
|
||||||
|
log "Server status updated to starting"
|
||||||
|
|
||||||
|
Activity.log(server.user, "started", "Server", server.id, {})
|
||||||
|
log "Activity logged"
|
||||||
|
rescue StandardError => e
|
||||||
|
log "ERROR: Failed to start server: #{e.message}"
|
||||||
|
log "Backtrace: #{e.backtrace.first(3).join("\n")}"
|
||||||
|
|
||||||
|
server.update(status: :failed)
|
||||||
|
Activity.log(server.user, "start_failed", "Server", server.id, { error: e.message })
|
||||||
|
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
27
app/jobs/stop_server_job.rb
Normal file
27
app/jobs/stop_server_job.rb
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
class StopServerJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(server_id)
|
||||||
|
server = Server.find(server_id)
|
||||||
|
log "Stopping server: #{server.name}"
|
||||||
|
|
||||||
|
begin
|
||||||
|
log "Calling SystemdManager.stop..."
|
||||||
|
L4dServer::SystemdManager.stop(server)
|
||||||
|
log "SystemdManager.stop completed successfully"
|
||||||
|
|
||||||
|
server.update(status: :stopped)
|
||||||
|
log "Server status updated to stopped"
|
||||||
|
|
||||||
|
Activity.log(server.user, "stopped", "Server", server.id, {})
|
||||||
|
log "Activity logged"
|
||||||
|
rescue StandardError => e
|
||||||
|
log "ERROR: Failed to stop server: #{e.message}"
|
||||||
|
log "Backtrace: #{e.backtrace.first(3).join("\n")}"
|
||||||
|
|
||||||
|
Activity.log(server.user, "stop_failed", "Server", server.id, { error: e.message })
|
||||||
|
|
||||||
|
raise
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
7
test/jobs/restart_server_job_test.rb
Normal file
7
test/jobs/restart_server_job_test.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class RestartServerJobTest < ActiveJob::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
||||||
7
test/jobs/start_server_job_test.rb
Normal file
7
test/jobs/start_server_job_test.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class StartServerJobTest < ActiveJob::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
||||||
7
test/jobs/stop_server_job_test.rb
Normal file
7
test/jobs/stop_server_job_test.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class StopServerJobTest < ActiveJob::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
||||||
Loading…
Reference in a new issue