Sha256: a9185270c4d29c595c553ebf2f8c193dfa2a2494462be134ac68414ae5fe05de

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module Floe
  class Workflow
    class Runner
      include Logging

      TYPES = %w[docker podman kubernetes].freeze

      def initialize(_options = {})
      end

      class << self
        attr_writer :docker_runner

        def docker_runner
          @docker_runner ||= Floe::Workflow::Runner::Docker.new
        end

        def for_resource(resource)
          raise ArgumentError, "resource cannot be nil" if resource.nil?

          scheme = resource.split("://").first
          case scheme
          when "docker"
            docker_runner
          else
            raise "Invalid resource scheme [#{scheme}]"
          end
        end
      end

      def run!(resource, env = {}, secrets = {})
        raise NotImplementedError, "Must be implemented in a subclass"
      end

      def run_async!(_image, _env = {}, _secrets = {})
        raise NotImplementedError, "Must be implemented in a subclass"
      end

      def running?(_ref)
        raise NotImplementedError, "Must be implemented in a subclass"
      end

      def success?(_ref)
        raise NotImplementedError, "Must be implemented in a subclass"
      end

      def output(_ref)
        raise NotImplementedError, "Must be implemented in a subclass"
      end

      def cleanup(_ref, _secret)
        raise NotImplementedError, "Must be implemented in a subclass"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
floe-0.4.0 lib/floe/workflow/runner.rb