bosh-workspace 0.9.5 → 0.9.6

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: ddb023e47693f436c7daee1d66f7748200efd6e1
4
- data.tar.gz: ab7a404ecb45a646ce8a35effb7b40efffdeea3a
3
+ metadata.gz: 9da3815bae98d1612dc8108666ca2a2843d301dd
4
+ data.tar.gz: e8592ea8c80c6dcab8c86fa502ed18b8ea390a7f
5
5
  SHA512:
6
- metadata.gz: 80a13e5532ca630551be4289cfa37ca51b13fcfa51bd1b151b56c6e1f517c3dc5369399c82e0cb4e003562c34b0005387a9b8194c10d63f16e02ac676608fdd2
7
- data.tar.gz: b26a3a7727d476bca4b7956d3ed4637da3243c40f97c465de9a4fd3451380370131b93d136e623e455bc9c77ab87bc75818069f0818977cd608b718aa02422d2
6
+ metadata.gz: 0262e9881e357eab8e143a268a8115236b4ae9da9bd3d46d9ca409b0aa75f843dbc1bf7285451e227cd8056f51eea5035c31e3c4a40c52c36cb8f31804393d2a
7
+ data.tar.gz: a8b244be56f42052be702bb5f23d9bcc6c6963376517b0d488a1e29e14c41017b504a08c74ac412bd8fee4eedf61c8ae75802b09d38c560d3794f794b59c9d6e
@@ -5,7 +5,8 @@ module Bosh::Workspace
5
5
  Membrane::SchemaParser.parse do
6
6
  [{
7
7
  "name" => String,
8
- "version" => StemcellVersion.new
8
+ "version" => StemcellVersion.new,
9
+ optional("light") => bool
9
10
  }]
10
11
  end.validate object
11
12
  end
@@ -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
- name.gsub(/^bosh-/, "bosh-stemcell-#{version}-") + ".tgz"
17
+ prefix = @light ? 'light-' : ''
18
+ name.gsub(/^bosh-/, "#{prefix}bosh-stemcell-#{version}-") + '.tgz'
17
19
  end
18
20
 
19
21
  def downloaded?
20
- File.exists? 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.map { |r| r.select { |key| %w[name version].include?(key) } }
31
+ filter_keys(@releases, %w(name version))
32
32
  end
33
33
 
34
34
  def meta
35
- out = case @stemcells.size
36
- when 1
37
- { "stemcell" => @stemcells.first }
38
- else
39
- { "stemcells" => @stemcells }
40
- end
41
- out.merge(@meta)
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,5 +1,5 @@
1
1
  module Bosh
2
2
  module Manifests
3
- VERSION = "0.9.5"
3
+ VERSION = "0.9.6"
4
4
  end
5
5
  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
-
@@ -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
- describe "#name_version" do
10
- its(:name_version) { is_expected.to eq "#{name}/#{version}" }
11
- end
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
- describe "#file_name" do
14
- its(:file_name) { is_expected.to eq file_name }
15
- end
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
- describe "#downloaded?" do
18
- before do
19
- expect(File).to receive(:exists?).with(/\/#{file_name}/).and_return(true)
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
- describe "attr readers" do
25
- let(:file) { "#{stemcells_dir}/#{file_name}" }
26
- %w(name version file).each do |attr|
27
- its(attr.to_sym) { is_expected.to eq eval(attr) }
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
@@ -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) { [ { "name" => "foo", "version" => "2"} ] }
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) { should include "stemcell" => stemcell_foo }
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.5
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-12 00:00:00.000000000 Z
11
+ date: 2015-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_cli