Class: Ace::Overseer::Molecules::AssignmentPruneSafetyChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/overseer/molecules/assignment_prune_safety_checker.rb

Instance Method Summary collapse

Constructor Details

#initialize(assignment_discoverer_factory: nil, assignment_manager_factory: nil) ⇒ AssignmentPruneSafetyChecker

Returns a new instance of AssignmentPruneSafetyChecker.



7
8
9
10
# File 'lib/ace/overseer/molecules/assignment_prune_safety_checker.rb', line 7

def initialize(assignment_discoverer_factory: nil, assignment_manager_factory: nil)
  @assignment_discoverer_factory = assignment_discoverer_factory || -> { Ace::Assign::Molecules::AssignmentDiscoverer.new }
  @assignment_manager_factory = assignment_manager_factory || -> { Ace::Assign::Molecules::AssignmentManager.new }
end

Instance Method Details

#check(assignment_id:) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ace/overseer/molecules/assignment_prune_safety_checker.rb', line 12

def check(assignment_id:)
  discoverer = @assignment_discoverer_factory.call
  all = discoverer.find_all(include_completed: true)
  info = all.find { |ai| ai.assignment.id == assignment_id }

  unless info
    return Models::AssignmentPruneCandidate.new(
      assignment_id: assignment_id,
      assignment_name: "",
      assignment_state: "not_found",
      location_path: "",
      reasons: ["assignment not found"]
    )
  end

  state = info.queue_state.assignment_state.to_s
  reasons = []
  reasons << "assignment still #{state}" unless state == "completed"

  Models::AssignmentPruneCandidate.new(
    assignment_id: assignment_id,
    assignment_name: info.assignment.name,
    assignment_state: state,
    location_path: info.assignment.cache_dir,
    reasons: reasons
  )
end