smart_proxy_dynflow_core 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '08a1626af21a13a55a6cd092d7aa9f8d65e21db8'
4
- data.tar.gz: 8ca74216c0cb587d61b7c0049454b9a1204fa8c0
3
+ metadata.gz: c2aa6a1c4c6ccf4382d03834690a695627f66d10
4
+ data.tar.gz: 6aedf16460fbc6924fac95e1dd4be0ead1b4fc37
5
5
  SHA512:
6
- metadata.gz: 72a360aa24771a1bc0fc6d01a6aac0aa92e526c127487b7ff33d0afc80d53b72d1a83f3f585e0fe507ba846a9c50d58840369d464b5e9913b709591c6651154f
7
- data.tar.gz: f67485e909fedc9b7651c46cf5a9d16ae521cc6cadb78688a4a38a570b0f6889d336d254030d065fdff6ee126514b760b9677da9f1eb6f317993e567ad70856c
6
+ metadata.gz: 5aac4b464edb1a3171bb52a6599823e336f532d0dec0dff6a9ffda3343bfea7900ae23e45eba36070f16a34f8fbffd6be97fd53e7af1c81a360a3bcc50a23714
7
+ data.tar.gz: fcee792dcf9c2494a1437799f4c57bf67cbe5dd6de6debb41ce406edc48cff00948158fe74d70fb180f72c0ae2e08476512f82a38461d303cac1bea1b54a7c7b
data/Gemfile CHANGED
@@ -7,16 +7,16 @@ group :development do
7
7
  end
8
8
 
9
9
  group :test do
10
- gem 'smart_proxy_dynflow', :path => '.'
11
10
  gem 'smart_proxy', :git => "https://github.com/theforeman/smart-proxy", :branch => "develop"
11
+ gem 'smart_proxy_dynflow', :path => '.'
12
12
 
13
13
  if RUBY_VERSION < '2.1'
14
14
  gem 'public_suffix', '< 3'
15
- gem 'rubocop', '< 0.51.0'
16
15
  gem 'rainbow', '< 3'
16
+ gem 'rubocop', '< 0.51.0'
17
17
  else
18
- gem 'rubocop', '~> 0.52.1'
19
18
  gem 'public_suffix'
19
+ gem 'rubocop', '~> 0.52.1'
20
20
  end
21
21
 
22
22
  if RUBY_VERSION < '2.2'
@@ -27,11 +27,11 @@ group :test do
27
27
  end
28
28
 
29
29
  if RUBY_VERSION < '2.2'
30
- gem 'sinatra', '< 2'
31
30
  gem 'rack', '>= 1.1', '< 2.0.0'
31
+ gem 'sinatra', '< 2'
32
32
  else
33
- gem 'sinatra'
34
33
  gem 'rack', '>= 1.1'
34
+ gem 'sinatra'
35
35
  end
36
36
 
37
37
  # load bundler.d
@@ -6,7 +6,6 @@ module SmartProxyDynflowCore
6
6
  helpers Helpers
7
7
 
8
8
  before do
9
- logger = Log.instance
10
9
  authorize_with_token || authorize_with_ssl_client
11
10
  content_type :json
12
11
  end
@@ -21,6 +20,13 @@ module SmartProxyDynflowCore
21
20
  MultiJson.dump(result)
22
21
  end
23
22
 
23
+ post "/tasks/launch/?" do
24
+ params = MultiJson.load(request.body.read)
25
+ launcher = launcher_class(params).new(world, callback_host(params, request), params.fetch('options', {}))
26
+ launcher.launch!(params['input'])
27
+ launcher.results.to_json
28
+ end
29
+
24
30
  post "/tasks/?" do
25
31
  params = MultiJson.load(request.body.read)
26
32
  trigger_task(::Dynflow::Utils.constantize(params['action_name']),
@@ -44,10 +50,24 @@ module SmartProxyDynflowCore
44
50
  complete_task(task_id, data)
45
51
  end
46
52
 
53
+ get "/tasks/operations" do
54
+ TaskLauncherRegistry.operations.to_json
55
+ end
56
+
47
57
  private
48
58
 
49
59
  def callback_host(params, request)
50
- params.fetch('action_input', {})['proxy_url'] || request.env.values_at('HTTP_X_FORWARDED_FOR', 'HTTP_HOST').compact.first
60
+ params.fetch('action_input', {})['proxy_url'] ||
61
+ request.env.values_at('HTTP_X_FORWARDED_FOR', 'HTTP_HOST').compact.first
62
+ end
63
+
64
+ def launcher_class(params)
65
+ operation = params.fetch('operation')
66
+ if TaskLauncherRegistry.key?(operation)
67
+ TaskLauncherRegistry.fetch(operation)
68
+ else
69
+ halt 404, MultiJson.dump(:error => "Unknown operation '#{operation}' requested.")
70
+ end
51
71
  end
52
72
  end
53
73
  end
@@ -1,5 +1,6 @@
1
1
  module SmartProxyDynflowCore
2
2
  class BundlerHelper
3
+ # rubocop:disable Metrics/PerceivedComplexity
3
4
  def self.require_groups(*groups)
4
5
  if File.exist?(File.expand_path('../../../Gemfile.in', __FILE__))
5
6
  # If there is a Gemfile.in file, we will not use Bundler but BundlerExt
@@ -25,5 +26,6 @@ module SmartProxyDynflowCore
25
26
  Bundler.require(*groups)
26
27
  end
27
28
  end
29
+ # rubocop:enable Metrics/PerceivedComplexity
28
30
  end
29
31
  end
@@ -1,23 +1,52 @@
1
1
  require 'rest-client'
2
2
 
3
+ # rubocop:disable Lint/HandleExceptions
3
4
  begin
4
5
  require 'smart_proxy_dynflow/callback'
5
6
  rescue LoadError
6
7
  end
8
+ # rubocop:enable Lint/HandleExceptions
7
9
 
8
10
  module SmartProxyDynflowCore
9
11
  module Callback
10
- class Action < Dynflow::Action
11
- def plan(callback, data)
12
- plan_self(:callback => callback, :data => data)
13
- end
12
+ class Request
13
+ class << self
14
+ def send_to_foreman_tasks(callback_info, data)
15
+ self.new.callback(prepare_payload(callback_info, data))
16
+ end
14
17
 
15
- def run
16
- Request.send_to_foreman_tasks(input[:callback], input[:data])
18
+ # rubocop:disable Metrics/PerceivedComplexity
19
+ def ssl_options
20
+ return @ssl_options if defined? @ssl_options
21
+ @ssl_options = {}
22
+ settings = Settings.instance
23
+ return @ssl_options unless URI.parse(settings.foreman_url).scheme == 'https'
24
+
25
+ @ssl_options[:verify_ssl] = OpenSSL::SSL::VERIFY_PEER
26
+
27
+ private_key_file = settings.foreman_ssl_key || settings.ssl_private_key
28
+ if private_key_file
29
+ private_key = File.read(private_key_file)
30
+ @ssl_options[:ssl_client_key] = OpenSSL::PKey::RSA.new(private_key)
31
+ end
32
+ certificate_file = settings.foreman_ssl_cert || settings.ssl_certificate
33
+ if certificate_file
34
+ certificate = File.read(certificate_file)
35
+ @ssl_options[:ssl_client_cert] = OpenSSL::X509::Certificate.new(certificate)
36
+ end
37
+ ca_file = settings.foreman_ssl_ca || settings.ssl_ca_file
38
+ @ssl_options[:ssl_ca_file] = ca_file if ca_file
39
+ @ssl_options
40
+ end
41
+ # rubocop:enable Metrics/PerceivedComplexity
42
+
43
+ private
44
+
45
+ def prepare_payload(callback, data)
46
+ { :callback => callback, :data => data }.to_json
47
+ end
17
48
  end
18
- end
19
49
 
20
- class Request
21
50
  def callback(payload)
22
51
  response = callback_resource.post(payload, :content_type => :json)
23
52
  if response.code.to_s != "200"
@@ -26,43 +55,12 @@ module SmartProxyDynflowCore
26
55
  response
27
56
  end
28
57
 
29
- def self.send_to_foreman_tasks(callback_info, data)
30
- self.new.callback(self.prepare_payload(callback_info, data))
31
- end
32
-
33
58
  private
34
59
 
35
- def self.prepare_payload(callback, data)
36
- { :callback => callback, :data => data }.to_json
37
- end
38
-
39
60
  def callback_resource
40
61
  @resource ||= RestClient::Resource.new(Settings.instance.foreman_url + '/foreman_tasks/api/tasks/callback',
41
62
  self.class.ssl_options)
42
63
  end
43
-
44
- def self.ssl_options
45
- return @ssl_options if defined? @ssl_options
46
- @ssl_options = {}
47
- settings = Settings.instance
48
- return @ssl_options unless URI.parse(settings.foreman_url).scheme == 'https'
49
-
50
- @ssl_options[:verify_ssl] = OpenSSL::SSL::VERIFY_PEER
51
-
52
- private_key_file = settings.foreman_ssl_key || settings.ssl_private_key
53
- if private_key_file
54
- private_key = File.read(private_key_file)
55
- @ssl_options[:ssl_client_key] = OpenSSL::PKey::RSA.new(private_key)
56
- end
57
- certificate_file = settings.foreman_ssl_cert || settings.ssl_certificate
58
- if certificate_file
59
- certificate = File.read(certificate_file)
60
- @ssl_options[:ssl_client_cert] = OpenSSL::X509::Certificate.new(certificate)
61
- end
62
- ca_file = settings.foreman_ssl_ca || settings.ssl_ca_file
63
- @ssl_options[:ssl_ca_file] = ca_file if ca_file
64
- @ssl_options
65
- end
66
64
  end
67
65
 
68
66
  class Action < ::Dynflow::Action
@@ -1,6 +1,5 @@
1
1
  module SmartProxyDynflowCore
2
2
  class Core
3
-
4
3
  attr_accessor :world, :accepted_cert_serial
5
4
 
6
5
  def initialize
@@ -25,7 +24,8 @@ module SmartProxyDynflowCore
25
24
 
26
25
  db_file = Settings.instance.database
27
26
  if db_file.nil? || db_file.empty?
28
- Log.instance.warn "Could not open DB for dynflow at '#{db_file}', will keep data in memory. Restart will drop all dynflow data."
27
+ Log.instance.warn "Could not open DB for dynflow at '#{db_file}', " \
28
+ "will keep data in memory. Restart will drop all dynflow data."
29
29
  else
30
30
  db_conn_string += "/#{db_file}"
31
31
  end
@@ -44,7 +44,7 @@ module SmartProxyDynflowCore
44
44
  config.persistence_adapter = persistence_adapter
45
45
  config.execution_plan_cleaner = execution_plan_cleaner
46
46
  # TODO: There has to be a better way
47
- matchers = config.silent_dead_letter_matchers.call().concat(self.class.silencer_matchers)
47
+ matchers = config.silent_dead_letter_matchers.call.concat(self.class.silencer_matchers)
48
48
  config.silent_dead_letter_matchers = matchers
49
49
  yield config if block_given?
50
50
  end
@@ -10,7 +10,7 @@ module SmartProxyDynflowCore
10
10
  auth = request.env['HTTP_AUTHORIZATION']
11
11
  basic_prefix = /\ABasic /
12
12
  if !auth.to_s.empty? && auth =~ basic_prefix &&
13
- ForemanTasksCore::OtpManager.authenticate(auth.gsub(basic_prefix, ''))
13
+ ForemanTasksCore::OtpManager.authenticate(auth.gsub(basic_prefix, ''))
14
14
  Log.instance.debug('authorized with token')
15
15
  return true
16
16
  end
@@ -21,7 +21,7 @@ module SmartProxyDynflowCore
21
21
  end
22
22
 
23
23
  def authorize_with_ssl_client
24
- if %w(yes on 1).include? request.env['HTTPS'].to_s
24
+ if %w[yes on 1].include? request.env['HTTPS'].to_s
25
25
  if request.env['SSL_CLIENT_CERT'].to_s.empty?
26
26
  Log.instance.error "No client SSL certificate supplied"
27
27
  halt 403, MultiJson.dump(:error => "No client SSL certificate supplied")
@@ -4,7 +4,6 @@ require 'smart_proxy_dynflow_core/settings'
4
4
  require 'smart_proxy_dynflow_core/webrick-patch'
5
5
  module SmartProxyDynflowCore
6
6
  class Launcher
7
-
8
7
  def self.launch!(options)
9
8
  self.new.start options
10
9
  end
@@ -84,6 +83,7 @@ module SmartProxyDynflowCore
84
83
  }
85
84
  end
86
85
 
86
+ # rubocop:disable Metrics/PerceivedComplexity
87
87
  def https_app
88
88
  ssl_options = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options]
89
89
  ssl_options |= OpenSSL::SSL::OP_CIPHER_SERVER_PREFERENCE if defined?(OpenSSL::SSL::OP_CIPHER_SERVER_PREFERENCE)
@@ -94,7 +94,7 @@ module SmartProxyDynflowCore
94
94
 
95
95
  if Settings.instance.tls_disabled_versions
96
96
  Settings.instance.tls_disabled_versions.each do |version|
97
- constant = OpenSSL::SSL.const_get("OP_NO_TLSv#{version.to_s.gsub(/\./, '_')}") rescue nil
97
+ constant = OpenSSL::SSL.const_get("OP_NO_TLSv#{version.to_s.tr('.', '_')}") rescue nil
98
98
 
99
99
  if constant
100
100
  Log.instance.info "TLSv#{version} will be disabled."
@@ -114,6 +114,7 @@ module SmartProxyDynflowCore
114
114
  :SSLOptions => ssl_options
115
115
  }
116
116
  end
117
+ # rubocop:enable Metrics/PerceivedComplexity
117
118
 
118
119
  def https_enabled?
119
120
  Settings.instance.use_https
@@ -122,14 +123,16 @@ module SmartProxyDynflowCore
122
123
  def ssl_private_key
123
124
  OpenSSL::PKey::RSA.new(File.read(Settings.instance.ssl_private_key))
124
125
  rescue Exception => e
125
- Log.instance.fatal "Unable to load private SSL key. Are the values correct in settings.yml and do permissions allow reading?: #{e}"
126
+ Log.instance.fatal "Unable to load private SSL key. Are the values "\
127
+ "correct in settings.yml and do permissions allow reading?: #{e}"
126
128
  raise e
127
129
  end
128
130
 
129
131
  def ssl_certificate
130
132
  OpenSSL::X509::Certificate.new(File.read(Settings.instance.ssl_certificate))
131
133
  rescue Exception => e
132
- Log.instance.fatal "Unable to load SSL certificate. Are the values correct in settings.yml and do permissions allow reading?: #{e}"
134
+ Log.instance.fatal "Unable to load SSL certificate. Are the values " \
135
+ "correct in settings.yml and do permissions allow reading?: #{e}"
133
136
  raise e
134
137
  end
135
138
 
@@ -141,7 +144,7 @@ module SmartProxyDynflowCore
141
144
  Dir[File.join(dir, 'settings.d', '*.yml')].each { |path| Settings.load_plugin_settings(path) }
142
145
  true
143
146
  end
144
- ForemanTasksCore::SettingsLoader.settings_registry.keys.each do |settings_keys|
147
+ ForemanTasksCore::SettingsLoader.settings_registry.each_key do |settings_keys|
145
148
  settings = settings_keys.inject({}) do |h, settings_key|
146
149
  if SETTINGS.plugins.key?(settings_key.to_s)
147
150
  h.merge(SETTINGS.plugins[settings_key.to_s].to_h)
@@ -2,7 +2,6 @@ require 'logger'
2
2
 
3
3
  module SmartProxyDynflowCore
4
4
  class Log < ::Logger
5
-
6
5
  alias_method :write, :debug
7
6
 
8
7
  class << self
@@ -42,25 +41,45 @@ module SmartProxyDynflowCore
42
41
 
43
42
  def initialize(file, *rest)
44
43
  @file = file
45
- @fd = @file.kind_of?(IO) ? @file : File.open(@file, 'a')
44
+ @fd = @file.is_a?(IO) ? @file : File.open(@file, 'a')
46
45
  @fd.sync = true
47
46
  super(@fd, rest)
48
47
  end
49
48
 
50
49
  def roll_log
51
- unless @file.kind_of? IO
50
+ unless @file.is_a? IO
52
51
  @fd.reopen @file, 'a'
53
52
  @fd.sync = true
54
53
  end
55
54
  end
56
55
 
56
+ class ProxyStructuredFormater < ::Dynflow::LoggerAdapters::Formatters::Abstract
57
+ def call(_severity, _datetime, _prog_name, message)
58
+ if ::Exception === message
59
+ subject = "#{message.message} (#{message.class})"
60
+ if @base.respond_to?(:exception)
61
+ @base.exception("Error details", message)
62
+ subject
63
+ else
64
+ "#{subject}\n#{message.backtrace.join("\n")}"
65
+ end
66
+ else
67
+ message
68
+ end
69
+ end
70
+
71
+ def format(message)
72
+ call(nil, nil, nil, message)
73
+ end
74
+ end
75
+
57
76
  class ProxyAdapter < ::Dynflow::LoggerAdapters::Simple
58
- def initialize(logger, level = Logger::DEBUG, formatters = [::Dynflow::LoggerAdapters::Formatters::Exception])
77
+ def initialize(logger, level = Logger::DEBUG, formatters = [])
59
78
  @logger = logger
60
79
  @logger.level = level
61
- @logger.formatter = method(:formatter).to_proc
62
- @action_logger = apply_formatters ProgNameWrapper.new(@logger, ' action'), formatters
63
- @dynflow_logger = apply_formatters ProgNameWrapper.new(@logger, 'dynflow'), formatters
80
+ @logger.formatter = ProxyStructuredFormater.new(@logger)
81
+ @action_logger = apply_formatters(ProgNameWrapper.new(@logger, ' action'), [ProxyStructuredFormater])
82
+ @dynflow_logger = apply_formatters(ProgNameWrapper.new(@logger, 'dynflow'), [ProxyStructuredFormater])
64
83
  end
65
84
  end
66
85
  end
@@ -19,37 +19,36 @@ end
19
19
 
20
20
  module SmartProxyDynflowCore
21
21
  class Settings < OpenStruct
22
-
23
22
  DEFAULT_SETTINGS = {
24
- :database => '/var/lib/foreman-proxy/dynflow/dynflow.sqlite',
25
- :foreman_url => 'https://127.0.0.1:3000',
26
- :console_auth => true,
27
- :listen => '127.0.0.1',
28
- :port => '8008',
29
- :use_https => false,
30
- :ssl_ca_file => nil,
31
- :ssl_private_key => nil,
32
- :ssl_certificate => nil,
33
- :ssl_disabled_ciphers => [],
34
- :tls_disabled_versions => [],
35
- :foreman_ssl_ca => nil,
36
- :foreman_ssl_key => nil,
37
- :foreman_ssl_cert => nil,
38
- :standalone => false,
39
- :log_file => '/var/log/foreman-proxy/smart_proxy_dynflow_core.log',
40
- :log_level => :ERROR,
41
- :plugins => {},
42
- :pid_file => '/var/run/foreman-proxy/smart_proxy_dynflow_core.pid',
43
- :daemonize => false,
44
- :execution_plan_cleaner_age => 60 * 60 * 24,
45
- :loaded => false
46
- }
23
+ :database => '/var/lib/foreman-proxy/dynflow/dynflow.sqlite',
24
+ :foreman_url => 'https://127.0.0.1:3000',
25
+ :console_auth => true,
26
+ :listen => '127.0.0.1',
27
+ :port => '8008',
28
+ :use_https => false,
29
+ :ssl_ca_file => nil,
30
+ :ssl_private_key => nil,
31
+ :ssl_certificate => nil,
32
+ :ssl_disabled_ciphers => [],
33
+ :tls_disabled_versions => [],
34
+ :foreman_ssl_ca => nil,
35
+ :foreman_ssl_key => nil,
36
+ :foreman_ssl_cert => nil,
37
+ :standalone => false,
38
+ :log_file => '/var/log/foreman-proxy/smart_proxy_dynflow_core.log',
39
+ :log_level => :ERROR,
40
+ :plugins => {},
41
+ :pid_file => '/var/run/foreman-proxy/smart_proxy_dynflow_core.pid',
42
+ :daemonize => false,
43
+ :execution_plan_cleaner_age => 60 * 60 * 24,
44
+ :loaded => false
45
+ }.freeze
47
46
 
48
- PROXY_SETTINGS = [:ssl_ca_file, :ssl_certificate, :ssl_private_key, :foreman_url,
49
- :foreman_ssl_ca, :foreman_ssl_cert, :foreman_ssl_key,
50
- :log_file, :log_level, :ssl_disabled_ciphers]
51
- PLUGIN_SETTINGS = [:database, :core_url, :console_auth,
52
- :execution_plan_cleaner_age]
47
+ PROXY_SETTINGS = %i[ssl_ca_file ssl_certificate ssl_private_key foreman_url
48
+ foreman_ssl_ca foreman_ssl_cert foreman_ssl_key
49
+ log_file log_level ssl_disabled_ciphers].freeze
50
+ PLUGIN_SETTINGS = %i[database core_url console_auth
51
+ execution_plan_cleaner_age].freeze
53
52
 
54
53
  def initialize(settings = {})
55
54
  super(DEFAULT_SETTINGS.merge(settings))
@@ -60,7 +59,7 @@ module SmartProxyDynflowCore
60
59
  end
61
60
 
62
61
  def self.load_global_settings(path)
63
- if File.exists? File.join(path)
62
+ if File.exist? File.join(path)
64
63
  YAML.load_file(path).each do |key, value|
65
64
  SETTINGS[key] = value
66
65
  end
@@ -87,7 +86,7 @@ module SmartProxyDynflowCore
87
86
  PLUGIN_SETTINGS.each do |key|
88
87
  SETTINGS[key] = settings[key] if settings.key?(key)
89
88
  end
90
- SETTINGS.plugins.values.each { |plugin| plugin.load_settings_from_proxy }
89
+ SETTINGS.plugins.values.each(&:load_settings_from_proxy)
91
90
  Settings.loaded!
92
91
  end
93
92
 
@@ -0,0 +1,32 @@
1
+ module SmartProxyDynflowCore
2
+ class TaskLauncherRegistry
3
+ class << self
4
+
5
+ def register(name, launcher)
6
+ registry[name] = launcher
7
+ end
8
+
9
+ def fetch(name, default = nil)
10
+ if default.nil?
11
+ registry.fetch(name)
12
+ else
13
+ registry.fetch(name, default)
14
+ end
15
+ end
16
+
17
+ def key?(name)
18
+ registry.key?(name)
19
+ end
20
+
21
+ def operations
22
+ registry.keys
23
+ end
24
+
25
+ private
26
+
27
+ def registry
28
+ @registry ||= {}
29
+ end
30
+ end
31
+ end
32
+ end
@@ -17,7 +17,7 @@ module SmartProxyDynflowCore
17
17
  config.auto_terminate = false
18
18
  config.logger_adapter = ::Dynflow::LoggerAdapters::Simple.new $stderr, DYNFLOW_TESTING_LOG_LEVEL
19
19
  config.execution_plan_cleaner = nil
20
- block.call(config) if block
20
+ yield(config) if block
21
21
  end
22
22
  end
23
23
  end
@@ -1,3 +1,3 @@
1
1
  module SmartProxyDynflowCore
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'.freeze
3
3
  end
@@ -1,17 +1,18 @@
1
1
  require 'webrick/https'
2
2
 
3
- CIPHERS = ['ECDHE-RSA-AES128-GCM-SHA256','ECDHE-RSA-AES256-GCM-SHA384',
4
- 'ECDHE-RSA-AES128-CBC-SHA','ECDHE-RSA-AES256-CBC-SHA',
5
- 'AES128-GCM-SHA256','AES256-GCM-SHA384','AES128-SHA256',
6
- 'AES256-SHA256','AES128-SHA','AES256-SHA']
3
+ CIPHERS = ['ECDHE-RSA-AES128-GCM-SHA256', 'ECDHE-RSA-AES256-GCM-SHA384',
4
+ 'ECDHE-RSA-AES128-CBC-SHA', 'ECDHE-RSA-AES256-CBC-SHA',
5
+ 'AES128-GCM-SHA256', 'AES256-GCM-SHA384', 'AES128-SHA256',
6
+ 'AES256-SHA256', 'AES128-SHA', 'AES256-SHA'].freeze
7
7
 
8
8
  module WEBrick
9
9
  class GenericServer
10
+ # rubocop:disable Metrics/AbcSize
10
11
  def setup_ssl_context(config) # :nodoc:
11
12
  unless config[:SSLCertificate]
12
13
  cn = config[:SSLCertName]
13
14
  comment = config[:SSLCertComment]
14
- cert, key = Utils::create_self_signed_cert(1024, cn, comment)
15
+ cert, key = Utils.create_self_signed_cert(1024, cn, comment)
15
16
  config[:SSLCertificate] = cert
16
17
  config[:SSLPrivateKey] = key
17
18
  end
@@ -33,5 +34,6 @@ module WEBrick
33
34
  ctx.options |= config[:SSLOptions] unless config[:SSLOptions].nil?
34
35
  ctx
35
36
  end
37
+ # rubocop:enable Metrics/AbcSize
36
38
  end
37
39
  end
@@ -1,4 +1,5 @@
1
1
  require 'dynflow'
2
+ require 'smart_proxy_dynflow_core/task_launcher_registry'
2
3
  require 'foreman_tasks_core'
3
4
  require 'smart_proxy_dynflow_core/log'
4
5
  require 'smart_proxy_dynflow_core/settings'
@@ -7,7 +8,9 @@ require 'smart_proxy_dynflow_core/helpers'
7
8
  require 'smart_proxy_dynflow_core/callback'
8
9
  require 'smart_proxy_dynflow_core/api'
9
10
 
10
- SmartProxyDynflowCore::Core.after_initialize do |dynflow_core|
11
- ForemanTasksCore.dynflow_setup(dynflow_core.world)
11
+ module SmartProxyDynflowCore
12
+ Core.after_initialize do |dynflow_core|
13
+ ForemanTasksCore.dynflow_setup(dynflow_core.world)
14
+ end
15
+ Core.register_silencer_matchers ForemanTasksCore.silent_dead_letter_matchers
12
16
  end
13
- SmartProxyDynflowCore::Core.register_silencer_matchers ForemanTasksCore.silent_dead_letter_matchers
@@ -1,8 +1,8 @@
1
- # -*- encoding: utf-8 -*-
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'smart_proxy_dynflow_core/version'
5
4
 
5
+ # rubocop:disable Metrics/BlockLength
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "smart_proxy_dynflow_core"
8
8
  gem.version = SmartProxyDynflowCore::VERSION
@@ -23,18 +23,19 @@ Gem::Specification.new do |gem|
23
23
  gem.license = 'GPL-3.0'
24
24
 
25
25
  gem.add_development_dependency "bundler", "~> 1.7"
26
- gem.add_development_dependency "rake", "~> 10.0"
27
26
  gem.add_development_dependency('minitest')
28
27
  gem.add_development_dependency('mocha', '~> 1')
29
- gem.add_development_dependency('webmock', '~> 1')
30
28
  gem.add_development_dependency('rack-test', '~> 0')
29
+ gem.add_development_dependency "rake", "~> 10.0"
31
30
  gem.add_development_dependency('rubocop', '~> 0.52.1')
31
+ gem.add_development_dependency('webmock', '~> 1')
32
32
 
33
- gem.add_runtime_dependency('dynflow', "~> 1.0")
33
+ gem.add_runtime_dependency('dynflow', "~> 1.1")
34
34
  gem.add_runtime_dependency('foreman-tasks-core', '>= 0.1.7')
35
- gem.add_runtime_dependency('sequel')
36
- gem.add_runtime_dependency('sqlite3')
37
- gem.add_runtime_dependency('sinatra')
38
35
  gem.add_runtime_dependency('rack')
39
36
  gem.add_runtime_dependency('rest-client')
37
+ gem.add_runtime_dependency('sequel')
38
+ gem.add_runtime_dependency('sinatra')
39
+ gem.add_runtime_dependency('sqlite3')
40
40
  end
41
+ # rubocop:enable Metrics/BlockLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_dynflow_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nečas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-20 00:00:00.000000000 Z
11
+ date: 2019-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: minitest
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,33 +53,33 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '1'
69
55
  - !ruby/object:Gem::Dependency
70
- name: webmock
56
+ name: rack-test
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: '1'
61
+ version: '0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: '1'
68
+ version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
- name: rack-test
70
+ name: rake
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '0'
75
+ version: '10.0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '0'
82
+ version: '10.0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rubocop
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +94,34 @@ dependencies:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
96
  version: 0.52.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: dynflow
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.0'
117
+ version: '1.1'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.0'
124
+ version: '1.1'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: foreman-tasks-core
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.1.7
139
139
  - !ruby/object:Gem::Dependency
140
- name: sequel
140
+ name: rack
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: sqlite3
154
+ name: rest-client
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: sinatra
168
+ name: sequel
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - ">="
@@ -179,7 +179,7 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
- name: rack
182
+ name: sinatra
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - ">="
@@ -193,7 +193,7 @@ dependencies:
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
- name: rest-client
196
+ name: sqlite3
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - ">="
@@ -229,6 +229,7 @@ files:
229
229
  - lib/smart_proxy_dynflow_core/launcher.rb
230
230
  - lib/smart_proxy_dynflow_core/log.rb
231
231
  - lib/smart_proxy_dynflow_core/settings.rb
232
+ - lib/smart_proxy_dynflow_core/task_launcher_registry.rb
232
233
  - lib/smart_proxy_dynflow_core/testing.rb
233
234
  - lib/smart_proxy_dynflow_core/version.rb
234
235
  - lib/smart_proxy_dynflow_core/webrick-patch.rb