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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 17ef61f2e7578a35826f34fa210783553ca752dd
4
- data.tar.gz: 5bfe4aef5b322a535359c459badd1a917c9be7ce
3
+ metadata.gz: 59918e5adeda33d08841221f5750403549e0425f
4
+ data.tar.gz: 36d3daafa2aed5c71e37c1fc09b37c10248e8580
5
5
  SHA512:
6
- metadata.gz: 309df6df2f5637d9cf7d5e13e6142e512cf9352123ac74158211964f30756351d072f2c7bf0289286ac557ba3ba04f6ea8d91a8258ab61d4f3841754f7280d42
7
- data.tar.gz: 474e691922cd655cee83842a0d5272e5e42686f75f5c9672cb8016a54574220028411dbf7c15eaa8c48a4ffd941eecb7172252d5f2088713850c5403fbb02b17
6
+ metadata.gz: 6d51ba9c9a7901bd01c2d366eeecc32e92b3226dfd37095dee597e645d7af46c5fc88d14f82b6112d2e6cfeff317b163feed790824c8dab7eaca3886b4b24c95
7
+ data.tar.gz: 21560ac59b8083e8298a9a3212ad145a9c4dcc0ac31c1e1278695ed016d84c896c92a84405e015842eaa959f72a507479b645e0ec58805f7ef283b99c63e1df2
@@ -1,3 +1,6 @@
1
+ # v0.2.2
2
+ * Use environment constraints to fully restrict units available for solution
3
+
1
4
  # v0.2.0
2
5
  * Rename to batali-infuse
3
6
  * Add support for least impact resolution
data/README.md CHANGED
@@ -22,17 +22,17 @@ As it turns out, it can!
22
22
 
23
23
  ### Install
24
24
 
25
- This only supports 12.2.x versions of Chef. If Chef is running via
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-wedge --no-document
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-wedge --no-document
35
+ $ gem install batali-infuse --no-document
36
36
  ```
37
37
 
38
38
  ### Enable
@@ -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.9', '< 1.0.0'
14
- s.add_runtime_dependency 'chef', '~> 12.2.0'
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
@@ -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
- @expanded_run_list_with_versions.each do |item|
44
- c_name, c_version = item.split('@')
45
- c_name = c_name.split('::').first
46
- if(c_version)
47
- constraints[c_name] = c_version
48
- elsif(constraints[c_name].nil?)
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 = Grimoire::RequirementList.new(
53
- :name => :batali_resolv,
54
- :requirements => constraints.to_a
55
- )
56
- solver = Grimoire::Solver.new(
57
- :requirements => requirements,
58
- :system => system,
59
- :score_keeper => batali_build_score_keeper
60
- )
61
- results = solver.generate!
62
- solution = results.pop
63
- solution_output = solution.units.sort_by(&:name).map{|u| "#{u.name}<#{u.version}>"}.join(', ')
64
- node.set[:batali] ||= Mash.new
65
- node.set[:batali][:last_resolution] = Mash[solution.units.map{|u| [u.name, u.version]}]
66
- Chef::Log.warn "Batali cookbook resolution: #{solution_output}"
67
- Hash[
68
- solution.units.map do |unit|
69
- [unit.name, api_service.get_rest("cookbooks/#{unit.name}/#{unit.version}")]
70
- end
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
@@ -1,3 +1,3 @@
1
1
  module BataliInfuse
2
- VERSION = Gem::Version.new('0.2.0')
2
+ VERSION = Gem::Version.new('0.2.2')
3
3
  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.0
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-04-28 00:00:00.000000000 Z
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.9
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.9
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.0
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.0
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: