batali-infuse 0.2.0 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +3 -3
- data/batali-infuse.gemspec +2 -2
- data/lib/batali-infuse/sync.rb +36 -28
- data/lib/batali-infuse/version.rb +1 -1
- metadata +6 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 59918e5adeda33d08841221f5750403549e0425f
|
|
4
|
+
data.tar.gz: 36d3daafa2aed5c71e37c1fc09b37c10248e8580
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6d51ba9c9a7901bd01c2d366eeecc32e92b3226dfd37095dee597e645d7af46c5fc88d14f82b6112d2e6cfeff317b163feed790824c8dab7eaca3886b4b24c95
|
|
7
|
+
data.tar.gz: 21560ac59b8083e8298a9a3212ad145a9c4dcc0ac31c1e1278695ed016d84c896c92a84405e015842eaa959f72a507479b645e0ec58805f7ef283b99c63e1df2
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -22,17 +22,17 @@ As it turns out, it can!
|
|
|
22
22
|
|
|
23
23
|
### Install
|
|
24
24
|
|
|
25
|
-
This
|
|
25
|
+
This is tested for Chef versions '~> 12.2'. If Chef is running via
|
|
26
26
|
the omnibus install the gem should be installed like so:
|
|
27
27
|
|
|
28
28
|
```
|
|
29
|
-
$ /opt/chef/emebedded/bin/gem install batali-
|
|
29
|
+
$ /opt/chef/emebedded/bin/gem install batali-infuse --no-document
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
If Chef is running via the system Ruby, just install the gem directly:
|
|
33
33
|
|
|
34
34
|
```
|
|
35
|
-
$ gem install batali-
|
|
35
|
+
$ gem install batali-infuse --no-document
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
### Enable
|
data/batali-infuse.gemspec
CHANGED
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.description = 'Infuse the Batali resolver into Chef client'
|
|
11
11
|
s.require_path = 'lib'
|
|
12
12
|
s.license = 'Apache 2.0'
|
|
13
|
-
s.add_runtime_dependency 'batali', '>= 0.2.
|
|
14
|
-
s.add_runtime_dependency 'chef', '~> 12.2
|
|
13
|
+
s.add_runtime_dependency 'batali', '>= 0.2.11', '< 1.0.0'
|
|
14
|
+
s.add_runtime_dependency 'chef', '~> 12.2'
|
|
15
15
|
s.files = Dir['{lib}/**/**/*'] + %w(batali-infuse.gemspec README.md CHANGELOG.md LICENSE)
|
|
16
16
|
end
|
data/lib/batali-infuse/sync.rb
CHANGED
|
@@ -40,35 +40,43 @@ class Chef::PolicyBuilder::ExpandNodeObject
|
|
|
40
40
|
constraints = Smash[
|
|
41
41
|
api_service.get_rest("environments/#{node.chef_environment}").cookbook_versions.to_a
|
|
42
42
|
]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
constraints[c_name] = '> 0'
|
|
43
|
+
restrictions = api_service.get_rest("environments/#{node.chef_environment}").cookbook_versions.to_a
|
|
44
|
+
requirements = Array.new.tap do |reqs|
|
|
45
|
+
@expanded_run_list_with_versions.each do |item|
|
|
46
|
+
c_name, c_version = item.split('@')
|
|
47
|
+
c_name = c_name.split('::').first
|
|
48
|
+
reqs << [c_name, c_version ? c_version : '> 0']
|
|
50
49
|
end
|
|
51
50
|
end
|
|
52
|
-
requirements
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
51
|
+
unless(requirements.empty?)
|
|
52
|
+
solver = Grimoire::Solver.new(
|
|
53
|
+
:requirements => Grimoire::RequirementList.new(
|
|
54
|
+
:name => 'requirements',
|
|
55
|
+
:requirements => requirements
|
|
56
|
+
),
|
|
57
|
+
:restrictions => Grimoire::RequirementList.new(
|
|
58
|
+
:name => 'restrictions',
|
|
59
|
+
:requirements => restrictions
|
|
60
|
+
),
|
|
61
|
+
:system => system,
|
|
62
|
+
:score_keeper => batali_build_score_keeper
|
|
63
|
+
)
|
|
64
|
+
results = solver.generate!
|
|
65
|
+
solution = results.pop
|
|
66
|
+
solution_output = solution.units.sort_by(&:name).map{|u| "#{u.name}<#{u.version}>"}.join(', ')
|
|
67
|
+
node.set[:batali] ||= Mash.new
|
|
68
|
+
node.set[:batali][:last_resolution] = Mash[solution.units.map{|u| [u.name, u.version]}]
|
|
69
|
+
Chef::Log.warn "Batali cookbook resolution: #{solution_output}"
|
|
70
|
+
Hash[
|
|
71
|
+
solution.units.map do |unit|
|
|
72
|
+
[unit.name, api_service.get_rest("cookbooks/#{unit.name}/#{unit.version}")]
|
|
73
|
+
end
|
|
74
|
+
]
|
|
75
|
+
else
|
|
76
|
+
node.set[:batali][:last_resolution] = Mash.new
|
|
77
|
+
Chef::Log.warn 'Batali resolution not required. No cookbooks in run list!'
|
|
78
|
+
Hash.new
|
|
79
|
+
end
|
|
72
80
|
end
|
|
73
81
|
|
|
74
82
|
# Build the base system for generating solution
|
|
@@ -76,7 +84,7 @@ class Chef::PolicyBuilder::ExpandNodeObject
|
|
|
76
84
|
# @return [Grimoire::System]
|
|
77
85
|
def batali_build_system
|
|
78
86
|
system = Grimoire::System.new
|
|
79
|
-
units = api_service.get_rest('cookbooks').map do |c_name, meta|
|
|
87
|
+
units = api_service.get_rest('cookbooks?num_versions=all').map do |c_name, meta|
|
|
80
88
|
meta['versions'].map do |info|
|
|
81
89
|
"#{c_name}/#{info['version']}"
|
|
82
90
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: batali-infuse
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Chris Roberts
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-06-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: batali
|
|
@@ -16,7 +16,7 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.2.
|
|
19
|
+
version: 0.2.11
|
|
20
20
|
- - "<"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
22
|
version: 1.0.0
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ">="
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 0.2.
|
|
29
|
+
version: 0.2.11
|
|
30
30
|
- - "<"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: 1.0.0
|
|
@@ -36,14 +36,14 @@ dependencies:
|
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 12.2
|
|
39
|
+
version: '12.2'
|
|
40
40
|
type: :runtime
|
|
41
41
|
prerelease: false
|
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - "~>"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 12.2
|
|
46
|
+
version: '12.2'
|
|
47
47
|
description: Infuse the Batali resolver into Chef client
|
|
48
48
|
email: code@chrisroberts.org
|
|
49
49
|
executables: []
|
|
@@ -82,4 +82,3 @@ signing_key:
|
|
|
82
82
|
specification_version: 4
|
|
83
83
|
summary: Batali infusion
|
|
84
84
|
test_files: []
|
|
85
|
-
has_rdoc:
|