knife-update 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/knife-update.gemspec
CHANGED
@@ -16,6 +16,6 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
17
|
s.require_paths = ['lib']
|
18
18
|
|
19
|
-
s.add_dependency 'chef', '>=
|
19
|
+
s.add_dependency 'chef', '>= 10.24.0'
|
20
20
|
s.add_development_dependency 'rspec'
|
21
21
|
end
|
data/lib/chef/knife/update.rb
CHANGED
@@ -62,6 +62,7 @@ class Chef
|
|
62
62
|
list[version] << node
|
63
63
|
end
|
64
64
|
end
|
65
|
+
ui.msg ''
|
65
66
|
|
66
67
|
list
|
67
68
|
end
|
@@ -81,6 +82,16 @@ class Chef
|
|
81
82
|
def target_version
|
82
83
|
config[:target_version] || Chef::VERSION
|
83
84
|
end
|
85
|
+
|
86
|
+
def only(mapping, key)
|
87
|
+
mapping[key] || []
|
88
|
+
end
|
89
|
+
|
90
|
+
def except(mapping, key)
|
91
|
+
mapping.inject([]) do |memo, (k, values)|
|
92
|
+
k == key ? memo : memo += values
|
93
|
+
end
|
94
|
+
end
|
84
95
|
end
|
85
96
|
end
|
86
97
|
end
|
@@ -62,16 +62,23 @@ class Chef
|
|
62
62
|
:description => "Execute the update via sudo",
|
63
63
|
:boolean => true
|
64
64
|
|
65
|
+
option :all,
|
66
|
+
:short => "-a",
|
67
|
+
:long => "--all",
|
68
|
+
:description => "Update all nodes found by the given search-query",
|
69
|
+
:boolean => true
|
70
|
+
|
65
71
|
include Chef::Knife::Update
|
66
72
|
|
67
73
|
def run
|
68
|
-
list
|
69
|
-
|
74
|
+
list = node_list
|
75
|
+
compatible = run_list_items(only(list, target_version))
|
76
|
+
unknown = run_list_items(except(list, target_version)) - compatible
|
70
77
|
|
71
78
|
nodes = list.inject([]) do |memo, (version, nodes)|
|
72
79
|
if version != target_version
|
73
80
|
nodes.each do |node|
|
74
|
-
if node.run_list.all? { |item| items.include?(item.to_s) }
|
81
|
+
if config[:all] || node.run_list.all? { |item| items.include?(item.to_s) }
|
75
82
|
memo << node
|
76
83
|
end
|
77
84
|
end
|
@@ -80,7 +87,11 @@ class Chef
|
|
80
87
|
memo
|
81
88
|
end
|
82
89
|
|
83
|
-
|
90
|
+
if config[:all] && unknown.any?
|
91
|
+
ui.warn("It's unknown if the following run_list items are Chef #{target_version} compatible: #{unknown.sort.join(', ')}")
|
92
|
+
end
|
93
|
+
|
94
|
+
ui.confirm "Are you sure you want to update #{nodes.size} nodes to chef #{target_version}"
|
84
95
|
update_ssh(nodes, target_version).run
|
85
96
|
end
|
86
97
|
|
@@ -27,24 +27,23 @@ class Chef
|
|
27
27
|
|
28
28
|
def run
|
29
29
|
list = node_list
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
compatible = run_list_items(list[target_version])
|
34
|
-
incompatible = run_list_items(old_nodes)
|
30
|
+
compatible = run_list_items(only(list, target_version))
|
31
|
+
unknown = run_list_items(except(list, target_version)) - compatible
|
35
32
|
|
36
33
|
if compatible.any?
|
37
|
-
ui.msg "
|
34
|
+
ui.msg "run_list items already running on Chef #{target_version}:"
|
38
35
|
compatible.sort.each do |item|
|
39
36
|
ui.msg " #{item}"
|
40
37
|
end
|
38
|
+
ui.msg ''
|
41
39
|
end
|
42
40
|
|
43
|
-
if
|
44
|
-
ui.msg "
|
45
|
-
|
41
|
+
if unknown.any?
|
42
|
+
ui.msg "run_list items not running on Chef #{target_version}:"
|
43
|
+
unknown.sort.each do |item|
|
46
44
|
ui.msg " #{item}"
|
47
45
|
end
|
46
|
+
ui.msg ''
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
data/lib/knife-update/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-update
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 10.24.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 10.24.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rspec
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,7 +78,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
78
78
|
version: '0'
|
79
79
|
segments:
|
80
80
|
- 0
|
81
|
-
hash: -
|
81
|
+
hash: -3366548039429717818
|
82
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
@@ -87,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
87
|
version: '0'
|
88
88
|
segments:
|
89
89
|
- 0
|
90
|
-
hash: -
|
90
|
+
hash: -3366548039429717818
|
91
91
|
requirements: []
|
92
92
|
rubyforge_project:
|
93
93
|
rubygems_version: 1.8.25
|