Skip to content

Commit

Permalink
Fixes #34344 - Add support for halting
Browse files Browse the repository at this point in the history
  • Loading branch information
adamruzicka committed Jun 12, 2024
1 parent 124e9c6 commit fbf7530
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
17 changes: 8 additions & 9 deletions app/controllers/foreman_tasks/tasks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,21 @@ def resume

def unlock
if @dynflow_task.paused?
unlock_task(@dynflow_task)
@dynflow_task.halt
render json: { statusText: 'OK' }
else
render json: {}, status: :bad_request
end
end

def force_unlock
unlock_task(@dynflow_task)
render json: { statusText: 'OK' }
if @dynflow_task.pending?
@dynflow_task.halt
render json: { statusText: 'OK' }
else
# Cannot halt an already stopped task
render json: {}, status: :bad_request
end
end

# we need do this to make the Foreman helpers working properly
Expand All @@ -92,12 +97,6 @@ def resource_class

private

def unlock_task(task)
task.state = :stopped
task.locks.destroy_all
task.save!
end

def respond_with_tasks(scope)
@tasks = filter(scope, paginate: false).with_duration
csv_response(@tasks, [:id, :action, :state, :result, 'started_at.in_time_zone', 'ended_at.in_time_zone', :duration, :username], ['Id', 'Action', 'State', 'Result', 'Started At', 'Ended At', 'Duration', 'User'])
Expand Down
4 changes: 4 additions & 0 deletions app/models/foreman_tasks/task/dynflow_task.rb
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,10 @@ def self.model_name
superclass.model_name
end

def halt
::ForemanTasks.dynflow.world.halt(external_id)
end

private

def string_to_time(zone, time)
Expand Down
2 changes: 1 addition & 1 deletion foreman-tasks.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ same resource. It also optionally provides Dynflow infrastructure for using it f
s.test_files = `git ls-files test`.split("\n")
s.extra_rdoc_files = Dir['README*', 'LICENSE']

s.add_dependency "dynflow", '>= 1.8.0'
s.add_dependency "dynflow", '>= 1.9.0'
s.add_dependency 'fugit', '~> 1.8'
s.add_dependency "get_process_mem" # for memory polling
s.add_dependency "sinatra" # for Dynflow web console
Expand Down

0 comments on commit fbf7530

Please sign in to comment.