bosh-workspace 0.9.5 → 0.9.6
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/lib/bosh/workspace/schemas/stemcells.rb +2 -1
- data/lib/bosh/workspace/stemcell.rb +4 -2
- data/lib/bosh/workspace/stub_file.rb +20 -8
- data/lib/bosh/workspace/version.rb +1 -1
- data/spec/schemas/stemcells_spec.rb +11 -2
- data/spec/stemcell_spec.rb +51 -18
- data/spec/stub_file_spec.rb +11 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9da3815bae98d1612dc8108666ca2a2843d301dd
|
4
|
+
data.tar.gz: e8592ea8c80c6dcab8c86fa502ed18b8ea390a7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0262e9881e357eab8e143a268a8115236b4ae9da9bd3d46d9ca409b0aa75f843dbc1bf7285451e227cd8056f51eea5035c31e3c4a40c52c36cb8f31804393d2a
|
7
|
+
data.tar.gz: a8b244be56f42052be702bb5f23d9bcc6c6963376517b0d488a1e29e14c41017b504a08c74ac412bd8fee4eedf61c8ae75802b09d38c560d3794f794b59c9d6e
|
@@ -5,6 +5,7 @@ module Bosh::Workspace
|
|
5
5
|
def initialize(stemcell, stemcells_dir)
|
6
6
|
@name = stemcell["name"]
|
7
7
|
@version = stemcell["version"]
|
8
|
+
@light = stemcell["light"]
|
8
9
|
@file = File.join(stemcells_dir, file_name)
|
9
10
|
end
|
10
11
|
|
@@ -13,11 +14,12 @@ module Bosh::Workspace
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def file_name
|
16
|
-
|
17
|
+
prefix = @light ? 'light-' : ''
|
18
|
+
name.gsub(/^bosh-/, "#{prefix}bosh-stemcell-#{version}-") + '.tgz'
|
17
19
|
end
|
18
20
|
|
19
21
|
def downloaded?
|
20
|
-
File.
|
22
|
+
File.exist? file
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
@@ -28,17 +28,29 @@ module Bosh::Workspace
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def releases
|
31
|
-
@releases
|
31
|
+
filter_keys(@releases, %w(name version))
|
32
32
|
end
|
33
33
|
|
34
34
|
def meta
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
35
|
+
stemcells_meta.merge(@meta)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def filter_keys(array, keys)
|
41
|
+
array.map { |s| s.select { |key| keys.include?(key) } }
|
42
|
+
end
|
43
|
+
|
44
|
+
def stemcells
|
45
|
+
filter_keys(@stemcells, %w(name version))
|
46
|
+
end
|
47
|
+
|
48
|
+
def stemcell
|
49
|
+
stemcells[1] ? nil : stemcells[0]
|
50
|
+
end
|
51
|
+
|
52
|
+
def stemcells_meta
|
53
|
+
stemcell.nil? ? { 'stemcells' => stemcells } : { 'stemcell' => stemcell }
|
42
54
|
end
|
43
55
|
end
|
44
56
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Bosh::Workspace::Schemas
|
2
2
|
describe Stemcells do
|
3
3
|
let(:stemcell) do
|
4
|
-
{"name" => "foo", "version" => 1}
|
4
|
+
{ "name" => "foo", "version" => 1, "light" => true }
|
5
5
|
end
|
6
6
|
|
7
7
|
subject { Stemcells.new.validate(stemcells) }
|
@@ -42,6 +42,15 @@ module Bosh::Workspace::Schemas
|
|
42
42
|
let(:stemcells) { stemcell["version"] = "foo"; [stemcell] }
|
43
43
|
it { expect { subject }.to raise_error(/version.*should match/i) }
|
44
44
|
end
|
45
|
+
|
46
|
+
context "without optional light key" do
|
47
|
+
let(:stemcells) { [stemcell.delete_if { |k| k == "light" }] }
|
48
|
+
it { expect { subject }.to_not raise_error }
|
49
|
+
end
|
50
|
+
|
51
|
+
context "light non boolean" do
|
52
|
+
let(:stemcells) { stemcell["light"] = "foo"; [stemcell] }
|
53
|
+
it { expect { subject }.to raise_error /true or false/ }
|
54
|
+
end
|
45
55
|
end
|
46
56
|
end
|
47
|
-
|
data/spec/stemcell_spec.rb
CHANGED
@@ -1,30 +1,63 @@
|
|
1
1
|
describe Bosh::Workspace::Stemcell do
|
2
2
|
subject { Bosh::Workspace::Stemcell.new(stemcell, stemcells_dir) }
|
3
3
|
let(:stemcells_dir) { ".stemcells" }
|
4
|
-
let(:stemcell) { { "name" => name, "version" => version } }
|
5
|
-
let(:name) { "bosh-warden-boshlite-ubuntu-trusty-go_agent" }
|
6
|
-
let(:file_name) { "bosh-stemcell-3-warden-boshlite-ubuntu-trusty-go_agent.tgz" }
|
7
|
-
let(:version) { 3 }
|
4
|
+
let(:stemcell) { { "name" => name, "version" => version, "light" => light } }
|
8
5
|
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
context "given a normal stemcell" do
|
7
|
+
let(:light) { nil }
|
8
|
+
let(:name) { "bosh-warden-boshlite-ubuntu-trusty-go_agent" }
|
9
|
+
let(:file_name) { "bosh-stemcell-3-warden-boshlite-ubuntu-trusty-go_agent.tgz" }
|
10
|
+
let(:version) { 3 }
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
describe "#name_version" do
|
13
|
+
its(:name_version) { is_expected.to eq "#{name}/#{version}" }
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#file_name" do
|
17
|
+
its(:file_name) { is_expected.to eq file_name }
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#downloaded?" do
|
21
|
+
before do
|
22
|
+
expect(File).to receive(:exist?).with(/\/#{file_name}/).and_return(true)
|
23
|
+
end
|
24
|
+
its(:downloaded?) { is_expected.to eq true }
|
25
|
+
end
|
16
26
|
|
17
|
-
|
18
|
-
|
19
|
-
|
27
|
+
describe "attr readers" do
|
28
|
+
let(:file) { "#{stemcells_dir}/#{file_name}" }
|
29
|
+
%w(name version file).each do |attr|
|
30
|
+
its(attr.to_sym) { is_expected.to eq eval(attr) }
|
31
|
+
end
|
20
32
|
end
|
21
|
-
its(:downloaded?) { is_expected.to eq true }
|
22
33
|
end
|
23
34
|
|
24
|
-
|
25
|
-
let(:
|
26
|
-
|
27
|
-
|
35
|
+
context "given a light stemcell" do
|
36
|
+
let(:light) { true }
|
37
|
+
let(:name) { "bosh-aws-xen-hvm-ubuntu-trusty-go_agent" }
|
38
|
+
let(:file_name) { "light-bosh-stemcell-3143-aws-xen-hvm-ubuntu-trusty-go_agent.tgz" }
|
39
|
+
let(:version) { 3143 }
|
40
|
+
|
41
|
+
describe "#name_version" do
|
42
|
+
its(:name_version) { is_expected.to eq "#{name}/#{version}" }
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "#file_name" do
|
46
|
+
its(:file_name) { is_expected.to eq file_name }
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#downloaded?" do
|
50
|
+
before do
|
51
|
+
expect(File).to receive(:exist?).with(/\/#{file_name}/).and_return(true)
|
52
|
+
end
|
53
|
+
its(:downloaded?) { is_expected.to eq true }
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "attr readers" do
|
57
|
+
let(:file) { "#{stemcells_dir}/#{file_name}" }
|
58
|
+
%w(name version file).each do |attr|
|
59
|
+
its(attr.to_sym) { is_expected.to eq eval(attr) }
|
60
|
+
end
|
28
61
|
end
|
29
62
|
end
|
30
63
|
end
|
data/spec/stub_file_spec.rb
CHANGED
@@ -8,8 +8,8 @@ describe Bosh::Workspace::StubFile do
|
|
8
8
|
meta: meta,
|
9
9
|
merged_file: ".deployments/foo.yml")
|
10
10
|
}
|
11
|
-
let(:meta) {{ "foo" => "bar" }}
|
12
|
-
let(:stemcells) { [
|
11
|
+
let(:meta) { { "foo" => "bar" } }
|
12
|
+
let(:stemcells) { [{ "name" => "foo", "version" => "2" }] }
|
13
13
|
let(:path) { "foo/.stubs/bar.yml"}
|
14
14
|
|
15
15
|
let(:stub_file) { Bosh::Workspace::StubFile.new(project_deployment) }
|
@@ -55,7 +55,7 @@ describe Bosh::Workspace::StubFile do
|
|
55
55
|
|
56
56
|
context "1 stemcell" do
|
57
57
|
let(:stemcells) { [ stemcell_foo ] }
|
58
|
-
its(:meta) {
|
58
|
+
its(:meta) { is_expected.to include("stemcell" => stemcell_foo) }
|
59
59
|
its(:meta) { should include meta }
|
60
60
|
end
|
61
61
|
|
@@ -70,5 +70,13 @@ describe Bosh::Workspace::StubFile do
|
|
70
70
|
let(:stemcells) { [ stemcell_foo ] }
|
71
71
|
its(:meta) { should include "stemcell" => stemcell_bar }
|
72
72
|
end
|
73
|
+
|
74
|
+
context "when using a light stemcell" do
|
75
|
+
let(:stemcells) { stemcell_foo['light'] = true; [stemcell_foo] }
|
76
|
+
|
77
|
+
it "does not contain a light stemcell key in meta" do
|
78
|
+
expect(subject.meta['stemcell'].keys).to_not include 'light'
|
79
|
+
end
|
80
|
+
end
|
73
81
|
end
|
74
82
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-workspace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruben Koster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bosh_cli
|