bosh-workspace 0.8.3 → 0.8.4

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: 5cc164ab39f93979ea18104b4eec2af8b2685474
4
- data.tar.gz: 0f363f7c17c3094578da216df5b289bac36cece0
3
+ metadata.gz: 509af72a3d60e92cdfc60b4e3f27d7ca4590b569
4
+ data.tar.gz: a67937d21657958dcad54f43617df73e97cb2def
5
5
  SHA512:
6
- metadata.gz: cde52c0f73412df1285ea4da74f1e6e77a9bc9fd59050d0f6c2f3de83a3e53c6018c49b8271229e1b60e93a3cf92111af4e4b8db75aef676b10228d18b3753ff
7
- data.tar.gz: 5a798f29796e8744ba0fda7fede8d5e8e1ff09661411b3c7c0969a634fcb17ba8c1e0a6e6bfb6c82609c842c9e925f092734de49944aa827e3b202046c8d8527
6
+ metadata.gz: 4261f81472671a031ebd91cfb7948730b0f9690ce8de410ea9f0b5f679d2c2fe6e83ce473580bd1b60d44dbfafe92fb470d500ce60eea709251b70aeb2a9ad98
7
+ data.tar.gz: ea63269675c3184df76c34c08ca7d6e6777a231687674749c309431a972d6888b6b1074d36d6811e1798d73ff4e86ce909cc7f81ce0d24ff164b3a1cc3a0ab09
@@ -27,7 +27,10 @@ module Bosh::Cli::Command
27
27
  project_deployment_releases.each do |release|
28
28
  say "Cloning release '#{release.name.make_green}' to satisfy template references"
29
29
  release.update_repo
30
- say "Version '#{release.version.to_s.make_green}' has been checkout into: #{release.repo_dir}"
30
+ msg = "Version '#{release.version.to_s.make_green}'"
31
+ msg = "Ref '#{release.ref.make_green}'" if release.ref
32
+ say "#{msg} has been checkout into:"
33
+ say "- #{release.repo_dir}"
31
34
  end
32
35
  end
33
36
 
@@ -9,6 +9,7 @@ module Bosh::Workspace
9
9
  {
10
10
  "name" => String,
11
11
  "version" => enum(Integer, "latest"),
12
+ optional("ref") => enum(String),
12
13
  "git" => String,
13
14
  }
14
15
  end
@@ -1,19 +1,21 @@
1
1
  require "git"
2
2
  module Bosh::Workspace
3
3
  class Release
4
- attr_reader :name, :git_uri, :repo_dir
4
+ attr_reader :name, :git_uri, :repo_dir, :ref
5
5
 
6
6
  def initialize(release, releases_dir)
7
7
  @name = release["name"]
8
- @version_ref = release["version"]
8
+ @ref = release["ref"]
9
+ @spec_version = release["version"]
9
10
  @git_uri = release["git"]
10
11
  @repo_dir = File.join(releases_dir, @name)
11
12
  init_repo
12
13
  end
13
14
 
14
15
  def update_repo
15
- @repo.pull
16
- @repo.checkout(ref)
16
+ @repo.fetch "origin", tags: true
17
+ @repo.checkout last_commit
18
+ @repo.checkout ref || version_ref
17
19
  end
18
20
 
19
21
  def manifest_file
@@ -29,11 +31,11 @@ module Bosh::Workspace
29
31
  end
30
32
 
31
33
  def version
32
- return final_releases.keys.sort.last if @version_ref == "latest"
33
- unless final_releases[@version_ref.to_i]
34
- err("Could not find version: #{@version_ref} for release: #{@name}")
34
+ return final_releases.keys.sort.last if @spec_version == "latest"
35
+ unless final_releases[@spec_version.to_i]
36
+ err("Could not find version: #{@spec_version} for release: #{@name}")
35
37
  end
36
- @version_ref.to_i
38
+ @spec_version.to_i
37
39
  end
38
40
 
39
41
  private
@@ -49,7 +51,11 @@ module Bosh::Workspace
49
51
  end
50
52
  end
51
53
 
52
- def ref
54
+ def last_commit
55
+ @repo.log.object("origin").first
56
+ end
57
+
58
+ def version_ref
53
59
  @repo.log.object(manifest).first
54
60
  end
55
61
 
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Manifests
3
- VERSION = "0.8.3"
3
+ VERSION = "0.8.4"
4
4
  end
5
5
  end
@@ -26,9 +26,11 @@ describe Bosh::Cli::Command::Prepare do
26
26
  describe "prepare_release(s/_repos)" do
27
27
  let(:releases) { [ release ] }
28
28
  let(:stemcells) { [] }
29
+ let(:ref) { nil }
29
30
 
30
31
  before do
31
- expect(release).to receive(:update_repo)
32
+ expect(release).to receive(:update_repo)
33
+ expect(release).to receive(:ref).and_return(ref)
32
34
  expect(command).to receive(:release_uploaded?)
33
35
  .with(release.name, release.version).and_return(release_uploaded)
34
36
  end
@@ -42,12 +44,16 @@ describe Bosh::Cli::Command::Prepare do
42
44
  end
43
45
  end
44
46
 
45
- context "release not uploaded" do
47
+ context "release not uploaded with ref" do
46
48
  let(:release_uploaded) { false }
49
+ let(:ref) { "0f910f" }
47
50
 
48
- it "does not upload the release" do
49
- expect(command).to receive(:release_upload).with(release.manifest_file)
50
- command.prepare
51
+ context "without release ref" do
52
+ it "does upload the release" do
53
+ expect(release).to receive(:ref).and_return(ref)
54
+ expect(command).to receive(:release_upload).with(release.manifest_file)
55
+ command.prepare
56
+ end
51
57
  end
52
58
  end
53
59
  end
@@ -6,10 +6,16 @@ describe Bosh::Workspace::ProjectDeployment do
6
6
  let(:uuid) { "e55134c3-0a63-47be-8409-c9e53e965d5c" }
7
7
  let(:domain_name) { "bosh" }
8
8
  let(:templates) { ["path_to_bar", "path_to_baz"] }
9
- let(:releases) { [
10
- { "name" => "foo", "version" => release_version, "git" => "example.com/foo.git" }
11
- ] }
9
+ let(:releases) do
10
+ [{
11
+ "name" => "foo",
12
+ "version" => release_version,
13
+ "ref" => release_ref,
14
+ "git" => "example.com/foo.git"
15
+ }]
16
+ end
12
17
  let(:release_version) { 1 }
18
+ let(:release_ref) { "eb8ccf" }
13
19
  let(:stemcells) { [
14
20
  { "name" => "bar", "version" => stemcell_version }
15
21
  ] }
@@ -101,6 +107,11 @@ describe Bosh::Workspace::ProjectDeployment do
101
107
  it { should match(/git.*missing/i) }
102
108
  it { should match(/version.*doesn't validate/i) }
103
109
  end
110
+
111
+ context "optional ref" do
112
+ let(:missing) { ["git", "ref"] }
113
+ it { should match(/git.*missing/i) }
114
+ end
104
115
  end
105
116
 
106
117
  context "stemcells" do
@@ -27,6 +27,18 @@ describe Bosh::Workspace::Release do
27
27
  end
28
28
  end
29
29
 
30
+ context "specific ref with latest release" do
31
+ let(:release_data) do
32
+ { "name" => name, "version" => "latest", "ref" => "66658", "git" => repo }
33
+ end
34
+
35
+ it "checks out repo" do
36
+ release.update_repo
37
+ expect(subject).to match(/foo-2.yml/)
38
+ expect(subject).to_not match(/foo-3.yml/)
39
+ end
40
+ end
41
+
30
42
  context "updated version " do
31
43
  let(:version) { "11" }
32
44
 
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.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruben Koster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-18 00:00:00.000000000 Z
11
+ date: 2014-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_cli