batali-infuse 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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: