smart_proxy_dynflow_core 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/smart_proxy_dynflow_core/api.rb +0 -1
- data/lib/smart_proxy_dynflow_core/callback.rb +10 -1
- data/lib/smart_proxy_dynflow_core/core.rb +1 -1
- data/lib/smart_proxy_dynflow_core/helpers.rb +2 -4
- data/lib/smart_proxy_dynflow_core/launcher.rb +10 -0
- data/lib/smart_proxy_dynflow_core/log.rb +0 -1
- data/lib/smart_proxy_dynflow_core/settings.rb +3 -2
- data/lib/smart_proxy_dynflow_core/version.rb +1 -1
- data/lib/smart_proxy_dynflow_core.rb +6 -0
- data/smart_proxy_dynflow_core.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe1b9027d6be956e15fb935a09a4c605af906509
|
4
|
+
data.tar.gz: 541d1bded54dc876f331dabcf44e89ae35996e15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f51f45104e278ce3c23f566018cd80bfb972cb6c62c58606d5c8926c7f738381e11f170b888339b582ad0274c6551de5e643bb749d29cd3b86c90940ef7f9cc
|
7
|
+
data.tar.gz: c860021c0d3a466a5dd630edfeedb1b1ed3e17844f591ad471426ee703e473a0adf2b93aaea0199f23e976f01fe5325fb83ddfb48607e8ab20eb67158169578e
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'rest-client'
|
2
|
-
require 'dynflow'
|
3
2
|
|
4
3
|
begin
|
5
4
|
require 'smart_proxy_dynflow/callback'
|
@@ -8,6 +7,16 @@ end
|
|
8
7
|
|
9
8
|
module SmartProxyDynflowCore
|
10
9
|
module Callback
|
10
|
+
class Action < Dynflow::Action
|
11
|
+
def plan(callback, data)
|
12
|
+
plan_self(:callback => callback, :data => data)
|
13
|
+
end
|
14
|
+
|
15
|
+
def run
|
16
|
+
Request.send_to_foreman_tasks(input[:callback], input[:data])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
11
20
|
class Request
|
12
21
|
def callback(payload)
|
13
22
|
response = callback_resource.post(payload, :content_type => :json)
|
@@ -7,15 +7,13 @@ module SmartProxyDynflowCore
|
|
7
7
|
def authorize_with_ssl_client
|
8
8
|
if %w(yes on 1).include? request.env['HTTPS'].to_s
|
9
9
|
if request.env['SSL_CLIENT_CERT'].to_s.empty?
|
10
|
-
status 403
|
11
10
|
Log.instance.error "No client SSL certificate supplied"
|
12
|
-
halt MultiJson.dump(:error => "No client SSL certificate supplied")
|
11
|
+
halt 403, MultiJson.dump(:error => "No client SSL certificate supplied")
|
13
12
|
else
|
14
13
|
client_cert = OpenSSL::X509::Certificate.new(request.env['SSL_CLIENT_CERT'])
|
15
14
|
unless SmartProxyDynflowCore::Core.instance.accepted_cert_serial == client_cert.serial
|
16
15
|
Log.instance.error "SSL certificate with unexpected serial supplied"
|
17
|
-
halt MultiJson.dump(:error => "SSL certificate with unexpected serial supplied")
|
18
|
-
status 403
|
16
|
+
halt 403, MultiJson.dump(:error => "SSL certificate with unexpected serial supplied")
|
19
17
|
end
|
20
18
|
end
|
21
19
|
else
|
@@ -117,6 +117,16 @@ module SmartProxyDynflowCore
|
|
117
117
|
Dir[File.join(dir, 'settings.d', '*.yml')].each { |path| Settings.load_plugin_settings(path) }
|
118
118
|
true
|
119
119
|
end
|
120
|
+
ForemanTasksCore::SettingsLoader.settings_registry.keys.each do |settings_keys|
|
121
|
+
settings = settings_keys.inject({}) do |h, settings_key|
|
122
|
+
if SETTINGS.plugins.key?(settings_key.to_s)
|
123
|
+
h.merge(SETTINGS.plugins[settings_key.to_s].to_h)
|
124
|
+
else
|
125
|
+
h
|
126
|
+
end
|
127
|
+
end
|
128
|
+
ForemanTasksCore::SettingsLoader.setup_settings(settings_keys.first, settings)
|
129
|
+
end
|
120
130
|
end
|
121
131
|
end
|
122
132
|
end
|
@@ -69,12 +69,13 @@ module SmartProxyDynflowCore
|
|
69
69
|
Log.reload!
|
70
70
|
end
|
71
71
|
|
72
|
-
def self.load_from_proxy(
|
72
|
+
def self.load_from_proxy(plugin)
|
73
|
+
settings = plugin[:class].settings.to_h
|
73
74
|
PROXY_SETTINGS.each do |key|
|
74
75
|
SETTINGS[key] = Proxy::SETTINGS[key]
|
75
76
|
end
|
76
77
|
PLUGIN_SETTINGS.each do |key|
|
77
|
-
SETTINGS[key] = settings[key]
|
78
|
+
SETTINGS[key] = settings[key] if settings.key?(key)
|
78
79
|
end
|
79
80
|
SETTINGS.plugins.values.each { |plugin| plugin.load_settings_from_proxy }
|
80
81
|
Settings.loaded!
|
@@ -1,6 +1,12 @@
|
|
1
|
+
require 'dynflow'
|
2
|
+
require 'foreman_tasks_core'
|
1
3
|
require 'smart_proxy_dynflow_core/log'
|
2
4
|
require 'smart_proxy_dynflow_core/settings'
|
3
5
|
require 'smart_proxy_dynflow_core/core'
|
4
6
|
require 'smart_proxy_dynflow_core/helpers'
|
5
7
|
require 'smart_proxy_dynflow_core/callback'
|
6
8
|
require 'smart_proxy_dynflow_core/api'
|
9
|
+
|
10
|
+
SmartProxyDynflowCore::Core.after_initialize do |dynflow_core|
|
11
|
+
ForemanTasksCore.dynflow_setup(dynflow_core.world)
|
12
|
+
end
|
@@ -30,6 +30,7 @@ Gem::Specification.new do |gem|
|
|
30
30
|
gem.add_development_dependency('rack-test', '~> 0')
|
31
31
|
gem.add_development_dependency('rubocop', '0.32.1')
|
32
32
|
|
33
|
+
gem.add_runtime_dependency('foreman-tasks-core', '~> 0.1.0')
|
33
34
|
gem.add_runtime_dependency('dynflow', "~> 0.8.4")
|
34
35
|
gem.add_runtime_dependency('sequel')
|
35
36
|
gem.add_runtime_dependency('sqlite3')
|
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.1.
|
4
|
+
version: 0.1.5
|
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: 2016-08
|
11
|
+
date: 2016-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.32.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: foreman-tasks-core
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.1.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.1.0
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: dynflow
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|