berkshelf 0.5.1 → 0.6.0.beta1
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.
- data/berkshelf.gemspec +1 -1
- data/lib/berkshelf/berksfile.rb +1 -3
- data/lib/berkshelf/cookbook_store.rb +2 -3
- data/lib/berkshelf/location.rb +3 -13
- data/lib/berkshelf/locations/chef_api_location.rb +1 -2
- data/lib/berkshelf/resolver.rb +5 -3
- data/lib/berkshelf/vagrant/action/clean.rb +1 -1
- data/lib/berkshelf/vagrant/action/install.rb +3 -3
- data/lib/berkshelf/vagrant/action/upload.rb +6 -6
- data/lib/berkshelf/vagrant.rb +5 -5
- data/lib/berkshelf/version.rb +1 -1
- data/spec/unit/berkshelf/resolver_spec.rb +1 -21
- metadata +9 -12
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', '
|
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'
|
data/lib/berkshelf/berksfile.rb
CHANGED
@@ -32,9 +32,7 @@ module Berkshelf
|
|
32
32
|
|
33
33
|
scratch = Berkshelf.mktmpdir
|
34
34
|
cookbooks.each do |cb|
|
35
|
-
|
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
|
|
data/lib/berkshelf/location.rb
CHANGED
@@ -49,21 +49,11 @@ module Berkshelf
|
|
49
49
|
#
|
50
50
|
# @return [Array, nil]
|
51
51
|
def solve_for_constraint(constraint, versions)
|
52
|
-
|
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
|
data/lib/berkshelf/resolver.rb
CHANGED
@@ -83,11 +83,13 @@ module Berkshelf
|
|
83
83
|
#
|
84
84
|
# @return [Array<Berkshelf::CachedCookbook>]
|
85
85
|
def resolve
|
86
|
-
|
87
|
-
graph.
|
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[:
|
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[:
|
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[:
|
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[:
|
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[:
|
14
|
-
@client_key = env[:
|
15
|
-
@ssl_verify = env[:
|
16
|
-
@berksfile = Berksfile.from_file(env[:
|
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[:
|
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[:
|
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,
|
data/lib/berkshelf/vagrant.rb
CHANGED
@@ -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
|
-
|
22
|
+
unless env[:global_config].vm.host_name
|
23
|
+
return nil
|
24
|
+
end
|
25
25
|
|
26
|
-
File.join(Berkshelf.berkshelf_path, "vagrant", env[:
|
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::
|
67
|
+
::Vagrant.actions[:destroy].insert(::Vagrant::Action::VM::CleanMachineFolder, Berkshelf::Vagrant::Middleware.clean)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
data/lib/berkshelf/version.rb
CHANGED
@@ -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
|
-
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-
|
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.
|
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.
|
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:
|
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
|