knife-zero 1.18.2 → 1.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -7
- data/lib/chef/knife/zero_converge.rb +6 -0
- data/lib/knife-zero/net-ssh-multi-patch.rb +67 -0
- data/lib/knife-zero/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52199e9e746924c3c79500a9e400efc65106ecc3
|
4
|
+
data.tar.gz: 36e1acc1c01787057359d74e905d4cda5ca09dc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97e2d77e4489f0918a66b6d964cda2278d1de4c9e17e521c12f5087bba224764af129727e4c9e0533e62ba519825eec9503da031c298d206d1d4823ad2b1687c
|
7
|
+
data.tar.gz: 2a09dff1d7181f5b3e5b570c2fb0add8a6431f6c37fd4b005d46440e14223f37e5c62cfde00bad5c2562842c487b1c2d05bd68f93405c3c3022a0bda51bf47f3
|
data/CHANGELOG.md
CHANGED
@@ -2,11 +2,16 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
-
|
5
|
+
|
6
|
+
## v1.19.0
|
7
|
+
|
8
|
+
- enable keepalive on Net::SSH::Multi [#116](https://github.com/higanworks/knife-zero/pull/116)
|
9
|
+
- add option node_config_file to zero converge [#114](https://github.com/higanworks/knife-zero/pull/114)
|
10
|
+
- `-N, --node-config PATH_TO_CONFIG`
|
6
11
|
|
7
12
|
## v1.18.2
|
8
13
|
|
9
|
-
- add -E option support for converge #112 HT: @yusukegoto
|
14
|
+
- add -E option support for converge [#112](https://github.com/higanworks/knife-zero/pull/112) HT: [@yusukegoto](https://github.com/yusukegoto)
|
10
15
|
|
11
16
|
## v1.18.1
|
12
17
|
|
@@ -19,11 +24,11 @@ Empty.
|
|
19
24
|
|
20
25
|
## v1.17.3
|
21
26
|
|
22
|
-
- apply no-color to remote side #109 HT: @yusukegoto
|
27
|
+
- apply no-color to remote side [#109](https://github.com/higanworks/knife-zero/pull/109) HT: [@yusukegoto](https://github.com/yusukegoto)
|
23
28
|
|
24
29
|
## v1.17.2
|
25
30
|
|
26
|
-
- pass true as 2nd args for Net::SSH.configuration_for by default. #106
|
31
|
+
- pass true as 2nd args for Net::SSH.configuration_for by default. [#106](https://github.com/higanworks/knife-zero/pull/106)
|
27
32
|
|
28
33
|
## v1.17.1
|
29
34
|
|
@@ -31,17 +36,17 @@ Empty.
|
|
31
36
|
|
32
37
|
## v1.17.0(Yanked)
|
33
38
|
|
34
|
-
- Change: Ask overwrite node object at bootstrap #101
|
39
|
+
- Change: Ask overwrite node object at bootstrap [#101](https://github.com/higanworks/knife-zero/pull/101)
|
35
40
|
- New option `--[no-]overwrite`
|
36
41
|
|
37
42
|
## v1.16.0
|
38
43
|
|
39
|
-
- [Feature] converge with `--json-attributes` #98
|
44
|
+
- [Feature] converge with `--json-attributes` [#98](https://github.com/higanworks/knife-zero/pull/98)
|
40
45
|
|
41
46
|
## v1.15.3
|
42
47
|
|
43
48
|
- [Bugfix] move overridden options of bootstrap into deps.
|
44
|
-
- The new change about policy_group breaks knife bootstrap when policies aren't used #92
|
49
|
+
- The new change about policy_group breaks knife bootstrap when policies aren't used [#92](https://github.com/higanworks/knife-zero/pull/92)
|
45
50
|
|
46
51
|
## v1.15.2
|
47
52
|
|
@@ -30,6 +30,11 @@ class Chef
|
|
30
30
|
self.options[:skip_cookbook_sync] = Chef::Application::Client.options[:skip_cookbook_sync]
|
31
31
|
end
|
32
32
|
|
33
|
+
option :node_config_file,
|
34
|
+
:short => "-N PATH_TO_CONFIG",
|
35
|
+
:long => "--node-config PATH_TO_CONFIG",
|
36
|
+
:description => "The configuration file to use on remote node"
|
37
|
+
|
33
38
|
option :splay,
|
34
39
|
:long => "--splay SECONDS",
|
35
40
|
:description => "The splay time for running at intervals, in seconds",
|
@@ -90,6 +95,7 @@ class Chef
|
|
90
95
|
s << ' -j /etc/chef/chef_client_json.json' if @config[:json_attribs]
|
91
96
|
s << " --splay #{@config[:splay]}" if @config[:splay]
|
92
97
|
s << " -n #{@config[:named_run_list]}" if @config[:named_run_list]
|
98
|
+
s << " --config #{@config[:node_config_file]}" if @config[:node_config_file]
|
93
99
|
s << " --skip-cookbook-sync" if @config[:skip_cookbook_sync]
|
94
100
|
s << " --no-color" unless @config[:color]
|
95
101
|
s << " -E #{@config[:environment]}" if @config[:environment]
|
@@ -55,3 +55,70 @@ if Gem::Version.new(Net::SSH::Multi::Version::STRING) < Gem::Version.new("1.3.0.
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
58
|
+
|
59
|
+
## monkey patch for ssh keepalive
|
60
|
+
# Ref: http://qiita.com/kackytw/items/49e2d10512b197089502
|
61
|
+
require 'net/ssh/multi/server'
|
62
|
+
module Net::SSH::Multi
|
63
|
+
class Server
|
64
|
+
class_eval do
|
65
|
+
require 'net/ssh/connection/keepalive'
|
66
|
+
def new_session #:nodoc:
|
67
|
+
session = if gateway
|
68
|
+
gateway.ssh(host, user, options)
|
69
|
+
else
|
70
|
+
Net::SSH.start(host, user, options)
|
71
|
+
end
|
72
|
+
|
73
|
+
## >> Patch
|
74
|
+
@keepalive = Net::SSH::Connection::Keepalive.new(session)
|
75
|
+
## << Patch
|
76
|
+
|
77
|
+
session[:server] = self
|
78
|
+
session
|
79
|
+
rescue ::Timeout::Error => error
|
80
|
+
raise Net::SSH::ConnectionTimeout.new("#{error.message} for #{host}")
|
81
|
+
rescue Net::SSH::AuthenticationFailed => error
|
82
|
+
raise Net::SSH::AuthenticationFailed.new("#{error.message}@#{host}")
|
83
|
+
end
|
84
|
+
|
85
|
+
## >> Patch
|
86
|
+
def keepalive_if_needed(readers, writers)
|
87
|
+
listeners = session.listeners.keys
|
88
|
+
readers = readers || []
|
89
|
+
writers = writers || []
|
90
|
+
@keepalive.send_as_needed(!(listeners & readers).empty? || !(listeners & writers).empty?)
|
91
|
+
end
|
92
|
+
## << Patch
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
require 'net/ssh/multi/session'
|
98
|
+
module Net::SSH::Multi
|
99
|
+
class Session
|
100
|
+
class_eval do
|
101
|
+
def process(wait=nil, &block)
|
102
|
+
realize_pending_connections!
|
103
|
+
wait = @connect_threads.any? ? 0 : wait
|
104
|
+
|
105
|
+
return false unless preprocess(&block)
|
106
|
+
|
107
|
+
readers = server_list.map { |s| s.readers }.flatten
|
108
|
+
writers = server_list.map { |s| s.writers }.flatten
|
109
|
+
|
110
|
+
readers, writers, = IO.select(readers, writers, nil, wait)
|
111
|
+
|
112
|
+
## >> Patch
|
113
|
+
server_list.each { |server| server.keepalive_if_needed(readers, writers) }
|
114
|
+
## << Patch
|
115
|
+
|
116
|
+
if readers
|
117
|
+
return postprocess(readers, writers)
|
118
|
+
else
|
119
|
+
return true
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
data/lib/knife-zero/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-zero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sawanoboly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|