foreman_remote_execution_core 1.0.4 → 1.0.5

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: b8c6efad663b97320d18f4e9d571f7f2b9664192
4
- data.tar.gz: e7e0c57fcb0b404138e550c633890f394a227fbd
3
+ metadata.gz: a81b2a41e08c662ce352dd037d625bd42cb9d53a
4
+ data.tar.gz: a5294079e9132731210ebe670f2f7c1810639cdb
5
5
  SHA512:
6
- metadata.gz: 83be3ce8b355070f9144aad526a570de85c5705a826eb75ebe060802b5f34b62df14cba1f5d98791d6823d04a4668ce32beaa647be46cd4897319c778d9f6b63
7
- data.tar.gz: 90e397053171e0e3aab5e539e7b6d40fa71cf995812b95956fcf4156b44ee96f639ba83b6f3814ddd813e528cafac35c8a27bc46053f0701a9992758e6ca2a35
6
+ metadata.gz: 04e246d897664d62109be19680cb4c973dac71868385b228f1257de2d923a8523fc12d9cdbbb2c167de092f8703fcea26459d0363ac8f005344d40a1afe8b484
7
+ data.tar.gz: 8ab7a7eb9c9accc486c975896aaf70f3671e95ca1ab2f9509d56832c6985185e45a74c0b5a4fe7fef11aa4c9f30e97ffca62d995889e16b8d03967c157a871d5
@@ -1,7 +1,15 @@
1
1
  require 'net/ssh'
2
2
 
3
+ # rubocop:disable Lint/HandleExceptions
4
+ begin
5
+ require 'net/ssh/krb'
6
+ rescue LoadError; end
7
+ # rubocop:enable Lint/HandleExceptions:
8
+
3
9
  module ForemanRemoteExecutionCore
4
10
  class ScriptRunner < ForemanTasksCore::Runner::Base
11
+ attr_reader :execution_timeout_interval
12
+
5
13
  EXPECTED_POWER_ACTION_MESSAGES = ['restart host', 'shutdown host'].freeze
6
14
 
7
15
  def initialize(options)
@@ -14,6 +22,7 @@ module ForemanRemoteExecutionCore
14
22
  @effective_user_method = options.fetch(:effective_user_method, 'sudo')
15
23
  @host_public_key = options.fetch(:host_public_key, nil)
16
24
  @verify_host = options.fetch(:verify_host, nil)
25
+ @execution_timeout_interval = options.fetch(:execution_timeout_interval, nil)
17
26
 
18
27
  @client_private_key_file = settings.fetch(:ssh_identity_key_file)
19
28
  @local_working_dir = options.fetch(:local_working_dir, settings.fetch(:local_working_dir))
@@ -61,6 +70,15 @@ module ForemanRemoteExecutionCore
61
70
  publish_exception('Unexpected error', e, false)
62
71
  end
63
72
 
73
+ def timeout
74
+ @logger.debug('job timed out')
75
+ super
76
+ end
77
+
78
+ def timeout_interval
79
+ execution_timeout_interval
80
+ end
81
+
64
82
  def with_retries
65
83
  tries = 0
66
84
  begin
@@ -93,6 +111,10 @@ module ForemanRemoteExecutionCore
93
111
  @session.close if @session && !@session.closed?
94
112
  end
95
113
 
114
+ def publish_data(data, type)
115
+ super(data.force_encoding('UTF-8'), type)
116
+ end
117
+
96
118
  private
97
119
 
98
120
  def session
@@ -111,7 +133,7 @@ module ForemanRemoteExecutionCore
111
133
  # if the host public key is contained in the known_hosts_file,
112
134
  # verify it, otherwise, if missing, import it and continue
113
135
  ssh_options[:paranoid] = true
114
- ssh_options[:auth_methods] = ['publickey']
136
+ ssh_options[:auth_methods] = available_authentication_methods
115
137
  ssh_options[:user_known_hosts_file] = prepare_known_hosts if @host_public_key
116
138
  return ssh_options
117
139
  end
@@ -279,5 +301,17 @@ module ForemanRemoteExecutionCore
279
301
  @expecting_disconnect = true
280
302
  end
281
303
  end
304
+
305
+ def available_authentication_methods
306
+ methods = %w(publickey) # Always use pubkey auth as fallback
307
+ if settings[:kerberos_auth]
308
+ if defined? Net::SSH::Kerberos
309
+ methods << 'gssapi-with-mic'
310
+ else
311
+ @logger.warn('Kerberos authentication requested but not available')
312
+ end
313
+ end
314
+ methods
315
+ end
282
316
  end
283
317
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanRemoteExecutionCore
2
- VERSION = '1.0.4'.freeze
2
+ VERSION = '1.0.5'.freeze
3
3
  end
@@ -6,7 +6,8 @@ module ForemanRemoteExecutionCore
6
6
  :ssh_identity_key_file => '~/.ssh/id_rsa_foreman_proxy',
7
7
  :ssh_user => 'root',
8
8
  :remote_working_dir => '/var/tmp',
9
- :local_working_dir => '/var/tmp')
9
+ :local_working_dir => '/var/tmp',
10
+ :kerberos_auth => false)
10
11
 
11
12
  def self.simulate?
12
13
  %w(yes true 1).include? ENV.fetch('REX_SIMULATE', '').downcase
metadata CHANGED
@@ -1,45 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_remote_execution_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.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: 2017-05-30 00:00:00.000000000 Z
11
+ date: 2017-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: foreman-tasks-core
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.1.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.1.0
27
- - !ruby/object:Gem::Dependency
28
- name: net-ssh
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
17
  - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: '0'
19
+ version: 0.1.3
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
24
  - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: '0'
26
+ version: 0.1.3
41
27
  - !ruby/object:Gem::Dependency
42
- name: net-scp
28
+ name: net-ssh
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ">="