knife-pinnings 1.4.3 → 1.4.7
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.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/README.md +1 -0
- data/knife-pinnings.gemspec +3 -7
- data/lib/chef/knife/pinnings_compare.rb +1 -1
- data/lib/chef/knife/pinnings_local_cookbook.rb +2 -0
- data/lib/chef/knife/pinnings_mixin.rb +7 -7
- data/lib/chef/knife/pinnings_set.rb +3 -1
- data/lib/chef/knife/pinnings_set_auto.rb +4 -4
- data/lib/chef/knife/pinnings_wipe.rb +3 -3
- data/lib/knife-pinnings/version.rb +1 -1
- metadata +6 -64
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 3ad64b484bbe7620e835a84ffc03af5f7104ba60fd622245e8498752221ba758
|
|
4
|
+
data.tar.gz: 2d274e292d546a38376619d8990e79b6007d9f54f647f64668bba2a6bee7bf03
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d45c0c78051022234f8319813fa9fb703f2b074fc57a92e46e5bb4bb21a0999d80501160adc65072b8d56eca7bd1a0d3cebc17ea8b5317ac47c03475facf0816
|
|
7
|
+
data.tar.gz: 2e45dab67c3eaa3572da34f9ac9e6ec6bda84b1ef8068781002999d4fb14167fb4aee26208cf24f05a4bec9786f1f9276ff225fbed38452ddcc03dd905b35624
|
data/.gitignore
CHANGED
data/README.md
CHANGED
data/knife-pinnings.gemspec
CHANGED
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
|
11
11
|
spec.summary = 'Chef knife plugin to set, list, compare, copy and delete cookbook pinnings across environments'
|
|
12
12
|
spec.description = 'Chef knife plugin to set, list, compare, copy and delete cookbook pinnings across environments'
|
|
13
13
|
spec.homepage = 'https://github.com/trickyearlobe/knife-pinnings'
|
|
14
|
-
spec.license = 'Apache
|
|
14
|
+
spec.license = 'Apache-2.0'
|
|
15
15
|
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
|
17
17
|
spec.require_paths = ['lib']
|
|
@@ -21,11 +21,7 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
22
22
|
|
|
23
23
|
spec.add_development_dependency 'rspec'
|
|
24
|
-
spec.add_development_dependency 'bundler'
|
|
25
|
-
spec.add_development_dependency 'rake'
|
|
24
|
+
spec.add_development_dependency 'bundler'
|
|
25
|
+
spec.add_development_dependency 'rake'
|
|
26
26
|
spec.add_development_dependency 'rubocop'
|
|
27
|
-
spec.add_development_dependency 'guard'
|
|
28
|
-
spec.add_development_dependency 'guard-rake'
|
|
29
|
-
spec.add_development_dependency 'guard-shell'
|
|
30
|
-
spec.add_development_dependency 'guard-rubocop'
|
|
31
27
|
end
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
class Chef
|
|
16
16
|
class Knife
|
|
17
|
-
# This class implements knife pinnings
|
|
17
|
+
# This class implements knife pinnings compare ['environment_regex'] ['cookbook_regex']
|
|
18
18
|
class PinningsCompare < Chef::Knife
|
|
19
19
|
require 'chef/knife/pinnings_mixin'
|
|
20
20
|
banner 'knife pinnings compare [ENV_REGEX] [COOKBOOK_REGEX]'
|
|
@@ -75,13 +75,11 @@ def build_pinnings_table(environments, cookbook_regex)
|
|
|
75
75
|
cookbooks_grid
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
def set_environnment_pinnings(environment, pinnings)
|
|
79
|
-
|
|
78
|
+
def set_environnment_pinnings(environment, pinnings)
|
|
80
79
|
pinnings.each do |name,pinning|
|
|
81
80
|
environment.cookbook_versions[name] = pinning
|
|
82
81
|
end
|
|
83
82
|
environment.save
|
|
84
|
-
|
|
85
83
|
end
|
|
86
84
|
|
|
87
85
|
def add_color(row)
|
|
@@ -128,19 +126,21 @@ def cookbooks_used_by(rest, environment)
|
|
|
128
126
|
roles = []
|
|
129
127
|
nodes = nodes_in(rest, environment)
|
|
130
128
|
nodes.each do |node|
|
|
131
|
-
response
|
|
132
|
-
_recipes = response.recipe_names
|
|
129
|
+
response=Chef::RunList.new(rest.get_rest("/nodes/#{node}")['run_list'].join(','))
|
|
130
|
+
_recipes = response.recipe_names
|
|
133
131
|
_roles = response.role_names
|
|
134
132
|
recipes = recipes | (if (_recipes==nil) then [] else _recipes end)
|
|
135
133
|
roles = roles | (if (_roles==nil) then [] else _roles end)
|
|
136
134
|
end
|
|
137
135
|
recipes_from_roles = []
|
|
138
|
-
roles.each do |role|
|
|
136
|
+
roles.each do |role|
|
|
139
137
|
run_list = [Chef::RunList::RunListItem.new("role[#{role}]")]
|
|
140
138
|
expansion = Chef::RunList::RunListExpansionFromAPI.new(environment, run_list, rest)
|
|
141
139
|
expansion.expand
|
|
142
140
|
recipes_from_roles = recipes_from_roles | expansion.recipes
|
|
143
141
|
end
|
|
142
|
+
recipes.delete ""
|
|
143
|
+
recipes_from_roles.delete ""
|
|
144
144
|
(recipes | recipes_from_roles).map { |r| r.split('@').first.split('::').first }
|
|
145
145
|
end
|
|
146
146
|
|
|
@@ -178,7 +178,7 @@ def solve_recipes(rest, environment, cookbooks_with_contraints)
|
|
|
178
178
|
response = rest.post_rest("/environments/#{environment}/cookbook_versions",{:run_list => cookbooks_with_contraints})
|
|
179
179
|
solution = Hash.new
|
|
180
180
|
response.sort.each do |name, cb|
|
|
181
|
-
solution[name]=cb
|
|
181
|
+
solution[name]=cb['version']
|
|
182
182
|
end
|
|
183
183
|
return solution
|
|
184
184
|
end
|
|
@@ -12,9 +12,11 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
require 'chef/cookbook/metadata'
|
|
16
|
+
|
|
15
17
|
class Chef
|
|
16
18
|
class Knife
|
|
17
|
-
# This class implements knife pinnings
|
|
19
|
+
# This class implements knife pinnings set <environment> [cookbook version]
|
|
18
20
|
class PinningsSet < Chef::Knife
|
|
19
21
|
banner 'knife pinnings set ENVIRONMENT [COOKBOOK VERSION]'
|
|
20
22
|
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
|
|
15
15
|
class Chef
|
|
16
16
|
class Knife
|
|
17
|
-
# This class knife pinnings set auto
|
|
17
|
+
# This class implements knife pinnings set auto <environment> [cookbook[@version]]
|
|
18
18
|
class PinningsSetAuto < Chef::Knife
|
|
19
19
|
require 'chef/knife/pinnings_mixin'
|
|
20
20
|
banner 'knife pinnings set auto ENVIRONMENT [COOKBOOK_VERSION_CONSTRAINTS]'
|
|
21
|
-
FakeChefEnvironmentStruct = Struct.new :name, :cookbook_versions
|
|
21
|
+
FakeChefEnvironmentStruct = Struct.new :name, :cookbook_versions
|
|
22
22
|
|
|
23
23
|
def run
|
|
24
24
|
case name_args.length
|
|
@@ -35,7 +35,7 @@ class Chef
|
|
|
35
35
|
exit 255
|
|
36
36
|
end
|
|
37
37
|
@environment = Environment.load(@environment_name)
|
|
38
|
-
nodes = nodes_in(rest, @environment)
|
|
38
|
+
nodes = nodes_in(rest, @environment)
|
|
39
39
|
ui.info("#{nodes.length} nodes have been found in environment #{@environment_name}: #{nodes.to_s}")
|
|
40
40
|
cookbooks = cookbooks_used_by(rest, @environment_name)
|
|
41
41
|
ui.info("#{cookbooks.length} recipes have been found for the nodes: #{cookbooks.to_s}")
|
|
@@ -54,7 +54,7 @@ class Chef
|
|
|
54
54
|
environments.push(@environment)
|
|
55
55
|
environments.push(FakeChefEnvironmentStruct.new('chef_resolver_solution',solution_cookbook_versions))
|
|
56
56
|
display_pinnings_table(environments, @cookbook_regex)
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
ui.msg('')
|
|
59
59
|
ui.confirm("Do you want to set these cookbook versions on chef environment:#{@environment_name} ")
|
|
60
60
|
ui.msg('')
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
class Chef
|
|
16
16
|
class Knife
|
|
17
|
-
# This class implements knife pinnings
|
|
17
|
+
# This class implements knife pinnings wipe ['environment'] ['cookbook_regex']
|
|
18
18
|
class PinningsWipe < Chef::Knife
|
|
19
19
|
require 'chef/knife/pinnings_mixin'
|
|
20
20
|
banner 'knife pinnings wipe ENVIRONMENT [COOKBOOK_REGEX]'
|
|
@@ -29,7 +29,7 @@ class Chef
|
|
|
29
29
|
environment = Environment.load(name_args[0])
|
|
30
30
|
display_environments([environment], cookbook_regex)
|
|
31
31
|
ui.msg('')
|
|
32
|
-
ui.confirm("Do you want to wipe
|
|
32
|
+
ui.confirm("Do you want to wipe cookbook constraints in #{environment.name}")
|
|
33
33
|
ui.msg('')
|
|
34
34
|
wipe(environment, cookbook_regex)
|
|
35
35
|
end
|
|
@@ -39,7 +39,7 @@ class Chef
|
|
|
39
39
|
name =~ /#{cookbook_regex}/
|
|
40
40
|
end
|
|
41
41
|
environment.save
|
|
42
|
-
ui.msg(
|
|
42
|
+
ui.msg("Cookbook constraints wiped from #{environment.name}")
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: knife-pinnings
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.4.
|
|
4
|
+
version: 1.4.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Richard Nixon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-05-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -26,62 +26,6 @@ dependencies:
|
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: bundler
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '1.7'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '1.7'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rake
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '10.0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '10.0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rubocop
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: guard
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: guard-rake
|
|
85
29
|
requirement: !ruby/object:Gem::Requirement
|
|
86
30
|
requirements:
|
|
87
31
|
- - ">="
|
|
@@ -95,7 +39,7 @@ dependencies:
|
|
|
95
39
|
- !ruby/object:Gem::Version
|
|
96
40
|
version: '0'
|
|
97
41
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
42
|
+
name: rake
|
|
99
43
|
requirement: !ruby/object:Gem::Requirement
|
|
100
44
|
requirements:
|
|
101
45
|
- - ">="
|
|
@@ -109,7 +53,7 @@ dependencies:
|
|
|
109
53
|
- !ruby/object:Gem::Version
|
|
110
54
|
version: '0'
|
|
111
55
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
56
|
+
name: rubocop
|
|
113
57
|
requirement: !ruby/object:Gem::Requirement
|
|
114
58
|
requirements:
|
|
115
59
|
- - ">="
|
|
@@ -150,7 +94,7 @@ files:
|
|
|
150
94
|
- lib/knife-pinnings/version.rb
|
|
151
95
|
homepage: https://github.com/trickyearlobe/knife-pinnings
|
|
152
96
|
licenses:
|
|
153
|
-
- Apache
|
|
97
|
+
- Apache-2.0
|
|
154
98
|
metadata: {}
|
|
155
99
|
post_install_message:
|
|
156
100
|
rdoc_options: []
|
|
@@ -167,11 +111,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
167
111
|
- !ruby/object:Gem::Version
|
|
168
112
|
version: '0'
|
|
169
113
|
requirements: []
|
|
170
|
-
|
|
171
|
-
rubygems_version: 2.5.2
|
|
114
|
+
rubygems_version: 3.0.3
|
|
172
115
|
signing_key:
|
|
173
116
|
specification_version: 4
|
|
174
117
|
summary: Chef knife plugin to set, list, compare, copy and delete cookbook pinnings
|
|
175
118
|
across environments
|
|
176
119
|
test_files: []
|
|
177
|
-
has_rdoc:
|