berkshelf 0.5.1 → 0.6.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
data/berkshelf.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.required_ruby_version = ">= 1.9.1"
18
18
 
19
19
  s.add_runtime_dependency 'ridley', '>= 0.0.5'
20
- s.add_runtime_dependency 'solve', '~> 0.2.1'
20
+ s.add_runtime_dependency 'solve', '>= 0.3.0'
21
21
  s.add_runtime_dependency 'chef', '~> 10.12.0'
22
22
  s.add_runtime_dependency 'minitar'
23
23
  s.add_runtime_dependency 'thor', '~> 0.16.0'
@@ -32,9 +32,7 @@ module Berkshelf
32
32
 
33
33
  scratch = Berkshelf.mktmpdir
34
34
  cookbooks.each do |cb|
35
- dest = File.join(scratch, cb.cookbook_name, "/")
36
- FileUtils.mkdir_p(dest)
37
- FileUtils.cp_r(Dir.glob(File.join(cb.path, "*")), dest)
35
+ FileUtils.cp_r(cb.path, File.join(scratch, cb.cookbook_name))
38
36
  end
39
37
 
40
38
  FileUtils.remove_dir(path, force: true)
@@ -74,12 +74,11 @@ module Berkshelf
74
74
  def satisfy(name, constraint)
75
75
  graph = Solve::Graph.new
76
76
  cookbooks(name).each { |cookbook| graph.artifacts(name, cookbook.version) }
77
- graph.demands(name, constraint)
78
77
 
79
- name, version = Solve.it!(graph).first
78
+ name, version = Solve.it!(graph, [[name, constraint]]).first
80
79
 
81
80
  cookbook(name, version)
82
- rescue Solve::NoSolutionError
81
+ rescue Solve::Errors::NoSolutionError
83
82
  nil
84
83
  end
85
84
 
@@ -49,21 +49,11 @@ module Berkshelf
49
49
  #
50
50
  # @return [Array, nil]
51
51
  def solve_for_constraint(constraint, versions)
52
- graph = Solve::Graph.new
53
- name = "none"
54
-
55
- versions.each do |version, uri|
56
- graph.artifacts(name, version)
57
- end
58
-
59
- graph.demands(name, constraint)
60
- result = Solve.it(graph)
61
-
62
- return nil if result.nil?
63
-
64
- version = result[name]
52
+ version = Solve::Solver.satisfy_best(constraint, versions.keys).to_s
65
53
 
66
54
  [ version, versions[version] ]
55
+ rescue Solve::Errors::NoSolutionError
56
+ nil
67
57
  end
68
58
  end
69
59
 
@@ -177,9 +177,8 @@ module Berkshelf
177
177
  versions.each do |version, url|
178
178
  graph.artifacts(name, version)
179
179
  end
180
- graph.demands(name, ">= 0.0.0")
181
180
 
182
- version = Solve.it!(graph)[name]
181
+ version = Solve.it!(graph, [name])[name]
183
182
 
184
183
  [ version, versions[version] ]
185
184
  end
@@ -83,11 +83,13 @@ module Berkshelf
83
83
  #
84
84
  # @return [Array<Berkshelf::CachedCookbook>]
85
85
  def resolve
86
- graph.artifacts.each do |artifact|
87
- graph.demands(artifact.name)
86
+ demands = [].tap do |l_demands|
87
+ graph.artifacts.each do |artifact|
88
+ l_demands << [ artifact.name, artifact.version ]
89
+ end
88
90
  end
89
91
 
90
- solution = Solve.it!(graph)
92
+ solution = Solve.it!(graph, demands)
91
93
 
92
94
  [].tap do |cached_cookbooks|
93
95
  solution.each do |name, version|
@@ -11,7 +11,7 @@ module Berkshelf
11
11
  end
12
12
 
13
13
  def call(env)
14
- if Berkshelf::Vagrant.chef_solo?(env[:vm].config) && self.shelf
14
+ if Berkshelf::Vagrant.chef_solo?(env[:global_config]) && self.shelf
15
15
  Berkshelf.formatter.msg "cleaning Vagrant's shelf"
16
16
  FileUtils.remove_dir(self.shelf, fore: true)
17
17
  end
@@ -11,14 +11,14 @@ module Berkshelf
11
11
  def initialize(app, env)
12
12
  @app = app
13
13
  @shelf = Berkshelf::Vagrant.shelf_for(env)
14
- @config = env[:vm].config.berkshelf
14
+ @config = env[:global_config].berkshelf
15
15
  Berkshelf.config_path = @config.config_path
16
16
  Berkshelf.load_config
17
17
  @berksfile = Berksfile.from_file(@config.berksfile_path)
18
18
  end
19
19
 
20
20
  def call(env)
21
- if Berkshelf::Vagrant.chef_solo?(env[:vm].config)
21
+ if Berkshelf::Vagrant.chef_solo?(env[:global_config])
22
22
  configure_cookbooks_path(env)
23
23
  install(env)
24
24
  end
@@ -37,7 +37,7 @@ module Berkshelf
37
37
  end
38
38
 
39
39
  def configure_cookbooks_path(env)
40
- Berkshelf::Vagrant.provisioners(:chef_solo, env[:vm].config).each do |provisioner|
40
+ Berkshelf::Vagrant.provisioners(:chef_solo, env[:global_config]).each do |provisioner|
41
41
  provisioner.config.cookbooks_path.unshift(self.shelf)
42
42
  end
43
43
  end
@@ -10,14 +10,14 @@ module Berkshelf
10
10
 
11
11
  def initialize(app, env)
12
12
  @app = app
13
- @node_name = env[:vm].config.berkshelf.node_name
14
- @client_key = env[:vm].config.berkshelf.client_key
15
- @ssl_verify = env[:vm].config.berkshelf.ssl_verify
16
- @berksfile = Berksfile.from_file(env[:vm].config.berkshelf.berksfile_path)
13
+ @node_name = env[:global_config].berkshelf.node_name
14
+ @client_key = env[:global_config].berkshelf.client_key
15
+ @ssl_verify = env[:global_config].berkshelf.ssl_verify
16
+ @berksfile = Berksfile.from_file(env[:global_config].berkshelf.berksfile_path)
17
17
  end
18
18
 
19
19
  def call(env)
20
- if Berkshelf::Vagrant.chef_client?(env[:vm].config)
20
+ if Berkshelf::Vagrant.chef_client?(env[:global_config])
21
21
  upload(env)
22
22
  end
23
23
 
@@ -27,7 +27,7 @@ module Berkshelf
27
27
  private
28
28
 
29
29
  def upload(env)
30
- Berkshelf::Vagrant.provisioners(:chef_client, env[:vm].config).each do |provisioner|
30
+ Berkshelf::Vagrant.provisioners(:chef_client, env[:global_config]).each do |provisioner|
31
31
  Berkshelf.formatter.msg "uploading cookbooks to '#{provisioner.config.chef_server_url}'"
32
32
  berksfile.upload(
33
33
  server_url: provisioner.config.chef_server_url,
@@ -18,12 +18,12 @@ module Berkshelf
18
18
 
19
19
  class << self
20
20
  # @param [Vagrant::Action::Environment] env
21
- #
22
- # @return [String, nil]
23
21
  def shelf_for(env)
24
- return nil if env[:vm].uuid.nil?
22
+ unless env[:global_config].vm.host_name
23
+ return nil
24
+ end
25
25
 
26
- File.join(Berkshelf.berkshelf_path, "vagrant", env[:vm].uuid)
26
+ File.join(Berkshelf.berkshelf_path, "vagrant", env[:global_config].vm.host_name)
27
27
  end
28
28
 
29
29
  # @param [Symbol] shortcut
@@ -64,7 +64,7 @@ module Berkshelf
64
64
  ::Vagrant.actions[action].insert(::Vagrant::Action::VM::Provision, Berkshelf::Vagrant::Middleware.upload)
65
65
  end
66
66
 
67
- ::Vagrant.actions[:destroy].insert(::Vagrant::Action::VM::ProvisionerCleanup, Berkshelf::Vagrant::Middleware.clean)
67
+ ::Vagrant.actions[:destroy].insert(::Vagrant::Action::VM::CleanMachineFolder, Berkshelf::Vagrant::Middleware.clean)
68
68
  end
69
69
  end
70
70
  end
@@ -1,3 +1,3 @@
1
1
  module Berkshelf
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0.beta1"
3
3
  end
@@ -110,7 +110,7 @@ module Berkshelf
110
110
  it "returns the source of the same name" do
111
111
  subject.get_source(source.name).should eql(source)
112
112
  end
113
- end
113
+ end
114
114
  end
115
115
 
116
116
  describe "#has_source?" do
@@ -120,25 +120,5 @@ module Berkshelf
120
120
  subject.has_source?(source.name).should be_true
121
121
  end
122
122
  end
123
-
124
- describe "#resolve" do
125
- before(:each) do
126
- subject.add_source(source)
127
- subject.add_source(source_two)
128
- @solution = subject.resolve
129
- end
130
-
131
- it "returns an array of the CachedCookbooks which make up the solution" do
132
- @solution.should include(source.cached_cookbook)
133
- @solution.should include(source_two.cached_cookbook)
134
- end
135
-
136
- it "resolves the given mysql source" do
137
- @solution[0].cookbook_name.should eql("mysql")
138
- @solution[0].version.should eql("1.2.4")
139
- @solution[1].cookbook_name.should eql("nginx")
140
- @solution[1].version.should eql("0.101.2")
141
- end
142
- end
143
123
  end
144
124
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: berkshelf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
5
- prerelease:
4
+ version: 0.6.0.beta1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Josiah Kiehl
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-09-28 00:00:00.000000000 Z
15
+ date: 2012-09-25 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: ridley
@@ -35,17 +35,17 @@ dependencies:
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  none: false
37
37
  requirements:
38
- - - ~>
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.1
40
+ version: 0.3.0
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  none: false
45
45
  requirements:
46
- - - ~>
46
+ - - ! '>='
47
47
  - !ruby/object:Gem::Version
48
- version: 0.2.1
48
+ version: 0.3.0
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: chef
51
51
  requirement: !ruby/object:Gem::Requirement
@@ -586,12 +586,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
586
586
  required_rubygems_version: !ruby/object:Gem::Requirement
587
587
  none: false
588
588
  requirements:
589
- - - ! '>='
589
+ - - ! '>'
590
590
  - !ruby/object:Gem::Version
591
- version: '0'
592
- segments:
593
- - 0
594
- hash: -3087057702069049964
591
+ version: 1.3.1
595
592
  requirements: []
596
593
  rubyforge_project:
597
594
  rubygems_version: 1.8.23