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 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