Class: Textus::Action::Drain

Inherits:
Base
  • Object
show all
Extended by:
Contract::DSL
Defined in:
lib/textus/action/drain.rb

Constant Summary collapse

BURN =
:sync

Instance Method Summary collapse

Methods included from Contract::DSL

arg, around, cli, cli_stdin, contract, contract?, summary, surfaces, verb, view

Methods inherited from Base

#args, inherited

Constructor Details

#initialize(prefix: nil, lane: nil) ⇒ Drain

Returns a new instance of Drain.



17
18
19
20
21
# File 'lib/textus/action/drain.rb', line 17

def initialize(prefix: nil, lane: nil)
  super()
  @prefix = prefix
  @lane   = lane
end

Instance Method Details

#call(container:, call:) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/textus/action/drain.rb', line 23

def call(container:, call:)
  queue = Textus::Ports::Queue.new(root: container.root)
  Textus::Background::Planner::Plan.seed(
    container: container,
    queue: queue,
    role: call.role,
  )
  queue.reclaim(now: Textus::Ports::Clock.new.now)
  summary = Textus::Background::Worker.for(container:, queue:).drain
  {
    "protocol" => Textus::PROTOCOL,
    "ok" => summary.failed.zero?,
    "completed" => summary.completed,
    "failed" => summary.failed,
  }
end