sshkit-custom-dsl 0.0.2 → 0.0.3

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: bd78c52e9066b2a20a58ec0a15a582c18421d2bb
4
- data.tar.gz: 676a5a5944f1eb99a1d6af444301602d83bae625
3
+ metadata.gz: df9d3b3f6a8a1e8f438527d2fa787c935d0aec37
4
+ data.tar.gz: 7d674c1c4ddfd58e581d78397bbac4c1058593fd
5
5
  SHA512:
6
- metadata.gz: 6494485ae41a1c46ddeac63acd849df3992abb06c7a577c6cf173be699af18754498ca17efab7cab609eff7f2e6314c1f0741a02643de64138e6a9e17eb50aea
7
- data.tar.gz: 23fdd8841b78db4226f7ebe7985b1c9005e9469c4ea8faf684a3aa5dcc9358eb1708b3887e1cf95936c478bf38afb7d8d3b5e2502665605b3310b69ec3aac020
6
+ metadata.gz: ba0cdea9ea03e9050e98048fe550d61411267077cbec690d84489e672e6ca212bcd8eadf6403eae4e46c25963aa8b4c0361e708b76b3f252ce378cfbb0bc2aca
7
+ data.tar.gz: cc05b1582649595794fa865511779466fd0661ecb1bd264d0a853a430d212a0424cc54f4028048996ea7d5e5b6d94600cd2e842608542d12ae489b09cc685ded
@@ -1,6 +1,2 @@
1
1
  require 'sshkit'
2
- require 'core_ext/sshkit/backend/abstract'
3
- require 'core_ext/sshkit/runner/abstract'
4
- require 'core_ext/sshkit/runner/sequential'
5
- require 'core_ext/sshkit/runner/parallel'
6
- require 'core_ext/sshkit/runner/group'
2
+ require 'core_ext/sshkit/backend/abstract'
@@ -0,0 +1,100 @@
1
+ module SSHKit
2
+ module Custom
3
+ module Config
4
+ module Runner
5
+
6
+ ExecuteError = SSHKit::Runner::ExecuteError
7
+
8
+ class Abstract
9
+ attr_accessor :backends
10
+ attr_reader :options
11
+ attr_writer :wait_interval
12
+
13
+ def self.create_runner(opts)
14
+ opts_with_defaults = { in: :parallel }.merge(opts)
15
+
16
+ case opts_with_defaults[:in]
17
+ when :parallel then Parallel
18
+ when :sequence then Sequential
19
+ when :groups then Group
20
+ else
21
+ raise RuntimeError, "Don't know how to handle run style #{opts_with_defaults[:in].inspect}"
22
+ end.new(opts_with_defaults)
23
+
24
+ end
25
+
26
+ def self.scope_storage
27
+ ScopedStorage::ThreadLocalStorage
28
+ end
29
+
30
+ def self.scope
31
+ @scope ||= ScopedStorage::Scope.new('sshkit_runner', scope_storage)
32
+ end
33
+
34
+ def self.active_backend
35
+ scope[:active_backend]
36
+ end
37
+
38
+ def self.active_backend=(new_backend)
39
+ scope[:active_backend]=new_backend
40
+ end
41
+
42
+ def initialize(options = nil)
43
+ @options = options || {}
44
+ end
45
+
46
+ def active_backend
47
+ self.class.active_backend
48
+ end
49
+
50
+ def active_backend=(new_backend)
51
+ self.class.active_backend=new_backend
52
+ end
53
+
54
+ def send_cmd(cmd, *args, &block)
55
+
56
+ begin
57
+
58
+ if block
59
+ args = Array(block.call(active_backend.host))
60
+ end
61
+
62
+ active_backend.send(cmd, *args)
63
+
64
+ rescue Exception => e
65
+ e2 = ExecuteError.new e
66
+ raise e2, "Exception while executing on host #{active_backend.host}: #{e.message}"
67
+ end
68
+
69
+ end
70
+
71
+
72
+ def apply_to_bck(backend, &block)
73
+ begin
74
+
75
+ self.active_backend = backend
76
+ block.call(backend.host)
77
+
78
+ rescue Exception => e
79
+ e2 = ExecuteError.new e
80
+ raise e2, "Exception while executing on host #{backend}: #{e.message}"
81
+ ensure
82
+ self.active_backend = nil
83
+ end
84
+ end
85
+
86
+ protected
87
+
88
+ def do_wait
89
+ sleep wait_interval
90
+ end
91
+
92
+ def wait_interval
93
+ @wait_interval || options[:wait] || 2
94
+ end
95
+
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,31 @@
1
+ module SSHKit
2
+ module Custom
3
+ module Config
4
+ module Runner
5
+
6
+ class Group < Abstract
7
+ attr_writer :group_size
8
+
9
+ def apply_block_to_bcks(&block)
10
+ backends.each_slice(group_size).collect do |group_backends|
11
+
12
+ Parallel.new(nil, nil).tap do |runner|
13
+ runner.backends = group_backends
14
+ runner.apply_block_to_bcks(&block)
15
+ end
16
+
17
+ do_wait
18
+
19
+ end.flatten
20
+ end
21
+
22
+
23
+ def group_size
24
+ @group_size || options[:limit] || 2
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ module SSHKit
2
+ module Custom
3
+ module Config
4
+ module Runner
5
+
6
+ class Parallel < Abstract
7
+
8
+ def apply_block_to_bcks(&block)
9
+ threads = []
10
+
11
+ backends.each do |next_backend|
12
+
13
+ threads << Thread.new(next_backend) do |backend|
14
+ apply_to_bck backend, &block
15
+ end
16
+
17
+ end
18
+
19
+ threads.map(&:join)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ module SSHKit
2
+ module Custom
3
+ module Config
4
+ module Runner
5
+ class Sequential < Abstract
6
+
7
+ def apply_block_to_bcks(&block)
8
+ backends.each do |backend|
9
+ apply_to_bck backend, &block
10
+ do_wait
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -14,15 +14,7 @@ module SSHKit
14
14
  end
15
15
 
16
16
  def create_runner(opts)
17
- opts_with_defaults = { in: :parallel }.merge(opts)
18
-
19
- @runner ||= case opts_with_defaults[:in]
20
- when :parallel then SSHKit::Runner::Parallel
21
- when :sequence then SSHKit::Runner::Sequential
22
- when :groups then SSHKit::Runner::Group
23
- else
24
- raise RuntimeError, "Don't know how to handle run style #{opts_with_defaults[:in].inspect}"
25
- end.new(nil, opts_with_defaults)
17
+ @runner ||= Runner::Abstract.create_runner opts
26
18
  end
27
19
 
28
20
  def runner
@@ -78,7 +70,7 @@ module SSHKit
78
70
  end
79
71
 
80
72
  def active_backend
81
- SSHKit::Runner::Abstract.active_backend
73
+ SSHKit::Custom::Config::Runner::Abstract.active_backend
82
74
  end
83
75
  end
84
76
  end
@@ -4,7 +4,7 @@ module SSHKit
4
4
  module Helper
5
5
 
6
6
  def active_backend
7
- SSHKit::Runner::Abstract.active_backend
7
+ SSHKit::Custom::Config::Store.active_backend
8
8
  end
9
9
 
10
10
  def host
@@ -1,7 +1,7 @@
1
1
  module SSHKit
2
2
  module Custom
3
3
  module DSL
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
6
6
  end
7
7
  end
@@ -3,6 +3,11 @@ require 'core_ext/sshkit'
3
3
  require 'scoped_storage'
4
4
 
5
5
  require 'sshkit/custom/config/store'
6
+ require 'sshkit/custom/config/runner/abstract'
7
+ require 'sshkit/custom/config/runner/sequential'
8
+ require 'sshkit/custom/config/runner/parallel'
9
+ require 'sshkit/custom/config/runner/group'
10
+
6
11
  require 'sshkit/custom/dsl/config_statements'
7
12
  require 'sshkit/custom/dsl/exec_statements'
8
13
  require 'sshkit/custom/dsl/helper'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sshkit-custom-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dieter Späth
@@ -157,10 +157,10 @@ files:
157
157
  - Rakefile
158
158
  - lib/core_ext/sshkit.rb
159
159
  - lib/core_ext/sshkit/backend/abstract.rb
160
- - lib/core_ext/sshkit/runner/abstract.rb
161
- - lib/core_ext/sshkit/runner/group.rb
162
- - lib/core_ext/sshkit/runner/parallel.rb
163
- - lib/core_ext/sshkit/runner/sequential.rb
160
+ - lib/sshkit/custom/config/runner/abstract.rb
161
+ - lib/sshkit/custom/config/runner/group.rb
162
+ - lib/sshkit/custom/config/runner/parallel.rb
163
+ - lib/sshkit/custom/config/runner/sequential.rb
164
164
  - lib/sshkit/custom/config/store.rb
165
165
  - lib/sshkit/custom/dsl.rb
166
166
  - lib/sshkit/custom/dsl/config_statements.rb
@@ -1,49 +0,0 @@
1
- module SSHKit
2
- module Runner
3
- class Abstract
4
- attr_accessor :backends
5
-
6
- def active_backend
7
- self.class.active_backend
8
- end
9
-
10
- def active_backend=(new_backend)
11
- self.class.active_backend=new_backend
12
- end
13
-
14
- def self.scope_storage
15
- ScopedStorage::ThreadLocalStorage
16
- end
17
-
18
- def self.scope
19
- @scope ||= ScopedStorage::Scope.new('sshkit_runner', scope_storage)
20
- end
21
-
22
- def self.active_backend
23
- scope[:active_backend]
24
- end
25
-
26
- def self.active_backend=(new_backend)
27
- scope[:active_backend]=new_backend
28
- end
29
-
30
- def send_cmd(cmd, *args, &block)
31
-
32
- begin
33
-
34
- if block
35
- args = Array(block.call(active_backend.host))
36
- end
37
-
38
- active_backend.send(cmd, *args)
39
-
40
- rescue Exception => e
41
- e2 = ExecuteError.new e
42
- raise e2, "Exception while executing on host #{active_backend.host}: #{e.message}"
43
- end
44
-
45
- end
46
-
47
- end
48
- end
49
- end
@@ -1,20 +0,0 @@
1
- module SSHKit
2
- module Runner
3
-
4
- class Group < Sequential
5
- attr_writer :group_size
6
-
7
- def apply_block_to_bcks( &block)
8
- backends.each_slice(group_size).collect do |group_backends|
9
-
10
- Parallel.new(nil, nil).tap do |runner|
11
- runner.backends = group_backends
12
- runner.apply_block_to_bcks(&block)
13
- end
14
-
15
- sleep wait_interval
16
- end.flatten
17
- end
18
- end
19
- end
20
- end
@@ -1,27 +0,0 @@
1
- module SSHKit
2
- module Runner
3
-
4
- class Parallel < Abstract
5
-
6
- def apply_block_to_bcks( &block)
7
- threads = []
8
- backends.each do |host|
9
- threads << Thread.new(host) do |h|
10
- begin
11
-
12
- self.active_backend = h
13
- block.call(h.host)
14
-
15
- rescue Exception => e
16
- e2 = ExecuteError.new e
17
- raise e2, "Exception while executing on host #{h}: #{e.message}"
18
- ensure
19
- self.active_backend = nil
20
- end
21
- end
22
- end
23
- threads.map(&:join)
24
- end
25
- end
26
- end
27
- end
@@ -1,22 +0,0 @@
1
- module SSHKit
2
- module Runner
3
- class Sequential < Abstract
4
- def apply_block_to_bcks( &block)
5
- backends.each do |backend|
6
- begin
7
-
8
- self.active_backend = backend
9
- block.call(backend.host)
10
-
11
- rescue Exception => e
12
- e2 = ExecuteError.new e
13
- raise e2, "Exception while executing on host #{backend}: #{e.message}"
14
- ensure
15
- self.active_backend = nil
16
- end
17
- sleep wait_interval
18
- end
19
- end
20
- end
21
- end
22
- end