Class: Floe::BuiltinRunner::Runner

Inherits:
Runner
  • Object
show all
Defined in:
lib/floe/builtin_runner/runner.rb

Instance Method Summary collapse

Instance Method Details

#cleanup(runner_context) ⇒ Object

Raises:

  • (ArgumentError)


22
23
24
25
26
27
28
29
30
# File 'lib/floe/builtin_runner/runner.rb', line 22

def cleanup(runner_context)
  method_name = runner_context["method"]
  raise ArgumentError if method_name.nil?

  cleanup_method = :"#{method_name}_cleanup"
  return unless Methods.respond_to?(cleanup_method, true)

  Methods.send(cleanup_method, runner_context)
end

#output(runner_context) ⇒ Object



48
49
50
# File 'lib/floe/builtin_runner/runner.rb', line 48

def output(runner_context)
  runner_context["output"]
end

#run_async!(resource, params, secrets, context) ⇒ Object

Raises:

  • (ArgumentError)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/floe/builtin_runner/runner.rb', line 4

def run_async!(resource, params, secrets, context)
  raise ArgumentError, "Invalid resource" unless resource&.start_with?(SCHEME_PREFIX)

  method_name = resource.sub(SCHEME_PREFIX, "")

  begin
    runner_context = {"method" => method_name}
    method_result = Methods.public_send(method_name, params, secrets, context)
    method_result.merge(runner_context)
  rescue NoMethodError
    Floe::BuiltinRunner.error!(runner_context, :cause => "undefined method [#{method_name}]")
  rescue => err
    Floe::BuiltinRunner.error!(runner_context, :cause => err.to_s)
  ensure
    cleanup(runner_context)
  end
end

#running?(runner_context) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/floe/builtin_runner/runner.rb', line 40

def running?(runner_context)
  runner_context["running"]
end

#status!(runner_context) ⇒ Object

Raises:

  • (ArgumentError)


32
33
34
35
36
37
38
# File 'lib/floe/builtin_runner/runner.rb', line 32

def status!(runner_context)
  method_name = runner_context["method"]
  raise ArgumentError if method_name.nil?
  return if runner_context["running"] == false

  Methods.send(:"#{method_name}_status!", runner_context)
end

#success?(runner_context) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/floe/builtin_runner/runner.rb', line 44

def success?(runner_context)
  runner_context["success"]
end