smart_proxy_remote_execution_ssh 0.4.0 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  module Proxy
2
2
  module RemoteExecution
3
3
  module Ssh
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.2'
5
5
  end
6
6
  end
7
7
  end
@@ -1,8 +1,7 @@
1
- require 'foreman_tasks_core'
2
- require 'smart_proxy_remote_execution_ssh/version'
3
1
  require 'smart_proxy_dynflow'
4
- require 'smart_proxy_remote_execution_ssh/webrick_ext'
2
+ require 'smart_proxy_remote_execution_ssh/version'
5
3
  require 'smart_proxy_remote_execution_ssh/plugin'
4
+ require 'smart_proxy_remote_execution_ssh/webrick_ext'
6
5
 
7
6
  module Proxy::RemoteExecution
8
7
  module Ssh
@@ -21,7 +20,9 @@ module Proxy::RemoteExecution
21
20
  raise "Ssh public key file #{public_key_file} doesn't exist"
22
21
  end
23
22
 
23
+ validate_mode!
24
24
  validate_ssh_log_level!
25
+ validate_mqtt_settings!
25
26
  end
26
27
 
27
28
  def private_key_file
@@ -32,6 +33,35 @@ module Proxy::RemoteExecution
32
33
  File.expand_path("#{private_key_file}.pub")
33
34
  end
34
35
 
36
+ def validate_mode!
37
+ Plugin.settings.mode = Plugin.settings.mode.to_sym
38
+
39
+ unless Plugin::MODES.include? Plugin.settings.mode
40
+ raise "Mode has to be one of #{Plugin::MODES.join(', ')}, given #{Plugin.settings.mode}"
41
+ end
42
+
43
+ if Plugin.settings.async_ssh
44
+ Plugin.logger.warn('Option async_ssh is deprecated, use ssh-async mode instead.')
45
+
46
+ case Plugin.settings.mode
47
+ when :ssh
48
+ Plugin.logger.warn('Deprecated option async_ssh used together with ssh mode, switching mode to ssh-async.')
49
+ Plugin.settings.mode = :'ssh-async'
50
+ when :'ssh-async'
51
+ # This is a noop
52
+ else
53
+ Plugin.logger.warn('Deprecated option async_ssh used together with incompatible mode, ignoring.')
54
+ end
55
+ end
56
+ end
57
+
58
+ def validate_mqtt_settings!
59
+ return unless Plugin.settings.mode == :'pull-mqtt'
60
+
61
+ raise 'mqtt_broker has to be set when pull-mqtt mode is used' if Plugin.settings.mqtt_broker.nil?
62
+ raise 'mqtt_port has to be set when pull-mqtt mode is used' if Plugin.settings.mqtt_port.nil?
63
+ end
64
+
35
65
  def validate_ssh_log_level!
36
66
  wanted_level = Plugin.settings.ssh_log_level.to_s
37
67
  levels = Plugin::SSH_LOG_LEVELS
@@ -52,9 +82,10 @@ module Proxy::RemoteExecution
52
82
 
53
83
  Plugin.settings.ssh_log_level = Plugin.settings.ssh_log_level.to_sym
54
84
  end
55
- end
56
85
 
57
- require 'smart_proxy_dynflow_core/task_launcher_registry'
58
- SmartProxyDynflowCore::TaskLauncherRegistry.register('ssh', ForemanTasksCore::TaskLauncher::Batch)
86
+ def job_storage
87
+ @job_storage ||= Proxy::RemoteExecution::Ssh::JobStorage.new
88
+ end
89
+ end
59
90
  end
60
91
  end
@@ -4,17 +4,23 @@
4
4
  :local_working_dir: '/var/tmp'
5
5
  :remote_working_dir: '/var/tmp'
6
6
  # :kerberos_auth: false
7
- # :async_ssh: false
7
+
8
+ # Mode of operation, one of ssh, ssh-async, pull, pull-mqtt
9
+ :mode: ssh
8
10
 
9
11
  # Defines how often (in seconds) should the runner check
10
12
  # for new data leave empty to use the runner's default
11
13
  # (1 second for regular, 60 seconds with async_ssh enabled)
12
14
  # :runner_refresh_interval:
13
15
 
14
- # Defines the verbosity of logging coming from Net::SSH
15
- # one of :debug, :info, :warn, :error, :fatal
16
+ # Defines the verbosity of logging coming from ssh command
17
+ # one of :debug, :info, :error, :fatal
16
18
  # must be lower than general log level
17
- # :ssh_log_level: fatal
19
+ # :ssh_log_level: error
18
20
 
19
21
  # Remove working directories on job completion
20
22
  # :cleanup_working_dirs: true
23
+
24
+ # MQTT configuration, need to be set if mode is set to pull-mqtt
25
+ # :mqtt_broker: localhost
26
+ # :mqtt_port: 1883
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_proxy_remote_execution_ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.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: 2021-06-07 00:00:00.000000000 Z
11
+ date: 2022-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -109,35 +109,35 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.82.0
111
111
  - !ruby/object:Gem::Dependency
112
- name: foreman-tasks-core
112
+ name: smart_proxy_dynflow
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.3.1
117
+ version: '0.5'
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: 0.3.1
124
+ version: '0.5'
125
125
  - !ruby/object:Gem::Dependency
126
- name: smart_proxy_dynflow
126
+ name: net-ssh
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '0.1'
131
+ version: 4.2.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '0.1'
138
+ version: 4.2.0
139
139
  - !ruby/object:Gem::Dependency
140
- name: net-ssh
140
+ name: mqtt
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -161,8 +161,10 @@ extra_rdoc_files:
161
161
  files:
162
162
  - LICENSE
163
163
  - README.md
164
- - bundler.plugins.d/remote_execution_ssh.rb
164
+ - bundler.d/remote_execution_ssh.rb
165
165
  - lib/smart_proxy_remote_execution_ssh.rb
166
+ - lib/smart_proxy_remote_execution_ssh/actions.rb
167
+ - lib/smart_proxy_remote_execution_ssh/actions/pull_script.rb
166
168
  - lib/smart_proxy_remote_execution_ssh/actions/run_script.rb
167
169
  - lib/smart_proxy_remote_execution_ssh/api.rb
168
170
  - lib/smart_proxy_remote_execution_ssh/async_scripts/control.sh
@@ -170,12 +172,15 @@ files:
170
172
  - lib/smart_proxy_remote_execution_ssh/cockpit.rb
171
173
  - lib/smart_proxy_remote_execution_ssh/dispatcher.rb
172
174
  - lib/smart_proxy_remote_execution_ssh/http_config.ru
175
+ - lib/smart_proxy_remote_execution_ssh/job_storage.rb
173
176
  - lib/smart_proxy_remote_execution_ssh/log_filter.rb
177
+ - lib/smart_proxy_remote_execution_ssh/net_ssh_compat.rb
174
178
  - lib/smart_proxy_remote_execution_ssh/plugin.rb
175
179
  - lib/smart_proxy_remote_execution_ssh/runners.rb
176
180
  - lib/smart_proxy_remote_execution_ssh/runners/fake_script_runner.rb
177
181
  - lib/smart_proxy_remote_execution_ssh/runners/polling_script_runner.rb
178
182
  - lib/smart_proxy_remote_execution_ssh/runners/script_runner.rb
183
+ - lib/smart_proxy_remote_execution_ssh/utils.rb
179
184
  - lib/smart_proxy_remote_execution_ssh/version.rb
180
185
  - lib/smart_proxy_remote_execution_ssh/webrick_ext.rb
181
186
  - settings.d/remote_execution_ssh.yml.example