bosh-workspace 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bosh/workspace/helpers/project_deployment_helper.rb +10 -3
- data/lib/bosh/workspace/release.rb +8 -2
- data/lib/bosh/workspace/version.rb +1 -1
- data/spec/assets/foo-boshrelease-repo.zip +0 -0
- data/spec/assets/supermodule-all-templates-symlinked-boshrelease-repo.zip +0 -0
- data/spec/helpers/project_deployment_helper_spec.rb +12 -1
- data/spec/release_spec.rb +80 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bd19a741ce82f38591f6c4e87d8377949f5b625
|
4
|
+
data.tar.gz: b4d837f2f51fe22afa1b4f70cb1c5c42c3170812
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f7a58f26ce03271a1a98e133f3f1168b7b8321ba8fdacdb5d37690bb5447b40cf5df7bb45154440ef5e35910694420d00f9dcca9756749eb793ad371c2f5223
|
7
|
+
data.tar.gz: fac5312d74ac733a03669cf9306e82ceb0f232436006be9d1221376ea11c99d5b4f036ed87a2e08ab53c5d0053224fc304bf18eb9304d9666ffe5919e051bea1
|
@@ -19,12 +19,19 @@ module Bosh::Workspace
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def require_project_deployment
|
22
|
-
unless
|
23
|
-
|
24
|
-
end
|
22
|
+
no_deployment_err unless deployment
|
23
|
+
not_a_bosh_workspace_deployment unless project_deployment?
|
25
24
|
validate_project_deployment
|
26
25
|
end
|
27
26
|
|
27
|
+
def no_deployment_err
|
28
|
+
err "No deployment set"
|
29
|
+
end
|
30
|
+
|
31
|
+
def not_a_bosh_workspace_deployment
|
32
|
+
err "Deployment is not a bosh-workspace deployment: #{deployment}"
|
33
|
+
end
|
34
|
+
|
28
35
|
def create_placeholder_deployment
|
29
36
|
resolve_director_uuid
|
30
37
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Bosh::Workspace
|
2
2
|
class Release
|
3
|
-
REFSPEC = ['HEAD:refs/remotes/origin/HEAD']
|
3
|
+
REFSPEC = ['HEAD:refs/remotes/origin/HEAD','*:refs/remotes/origin/*']
|
4
4
|
attr_reader :name, :git_url, :repo_dir
|
5
5
|
|
6
6
|
def initialize(release, releases_dir, credentials_callback, options = {})
|
@@ -39,7 +39,10 @@ module Bosh::Workspace
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def ref
|
42
|
-
|
42
|
+
return nil unless @ref
|
43
|
+
return repo.ref(@ref).target.target.oid if
|
44
|
+
Rugged::Reference.valid_name?(@ref) && repo.ref(@ref)
|
45
|
+
repo.lookup(@ref).oid
|
43
46
|
end
|
44
47
|
|
45
48
|
def release_dir
|
@@ -104,6 +107,8 @@ module Bosh::Workspace
|
|
104
107
|
end
|
105
108
|
|
106
109
|
def update_repo_with_ref(repository, ref)
|
110
|
+
# require 'pry'
|
111
|
+
# binding.pry
|
107
112
|
repository.checkout_tree ref, strategy: :force
|
108
113
|
repository.checkout ref, strategy: :force
|
109
114
|
end
|
@@ -181,6 +186,7 @@ module Bosh::Workspace
|
|
181
186
|
end
|
182
187
|
|
183
188
|
def symlink_templates
|
189
|
+
return [symlink_target(templates_dir)] if File.symlink?(templates_dir)
|
184
190
|
return [] unless File.exist?(templates_dir)
|
185
191
|
Find.find(templates_dir)
|
186
192
|
.select { |f| File.symlink?(f) }.map { |f| symlink_target(f) }
|
Binary file
|
@@ -83,12 +83,23 @@ describe Bosh::Workspace::ProjectDeploymentHelper do
|
|
83
83
|
let(:project_deployment_helper) { ProjectDeploymentHelperTester.new(director, deployment) }
|
84
84
|
|
85
85
|
before do
|
86
|
-
|
86
|
+
allow(subject).to receive(:project_deployment?)
|
87
87
|
.and_return(:is_project_deployment)
|
88
88
|
end
|
89
89
|
|
90
|
+
context "no deployment is set" do
|
91
|
+
let(:deployment) { nil }
|
92
|
+
|
93
|
+
it "raises an help full error" do
|
94
|
+
expect{ subject.require_project_deployment }
|
95
|
+
.to raise_error /no deployment set/i
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
90
99
|
context "project deployment" do
|
91
100
|
let(:is_project_deployment) { true }
|
101
|
+
let(:deployment) { '.deployment/foo.yml' }
|
102
|
+
|
92
103
|
it "validates & builds" do
|
93
104
|
expect(subject).to receive(:validate_project_deployment)
|
94
105
|
subject.require_project_deployment
|
data/spec/release_spec.rb
CHANGED
@@ -210,6 +210,37 @@ module Bosh::Workspace
|
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
213
|
+
context "given a release that has the whole templates/ dir symlinked from a submodule" do
|
214
|
+
let(:repo) { extracted_asset_dir("supermodule-all-templates-symlinked", "supermodule-all-templates-symlinked-boshrelease-repo.zip") }
|
215
|
+
let(:subrepo) { extracted_asset_dir("submodule-boshrelease", "submodule-boshrelease-repo.zip") }
|
216
|
+
let(:name) { "supermodule-all-templates-symlinked" }
|
217
|
+
let(:version) { "1" }
|
218
|
+
|
219
|
+
before do
|
220
|
+
FileUtils.rm_rf(releases_dir)
|
221
|
+
allow_any_instance_of(Rugged::Submodule).to receive(:url).and_return(subrepo)
|
222
|
+
end
|
223
|
+
|
224
|
+
describe "#update_repo" do
|
225
|
+
subject { Rugged::Repository.new(File.join(releases_dir, name)) }
|
226
|
+
|
227
|
+
context "with templates in submodules" do
|
228
|
+
before do
|
229
|
+
release = load_release("name" => name, "version" => 1, "git" => repo)
|
230
|
+
end
|
231
|
+
|
232
|
+
it "clones + checks out required submodules" do
|
233
|
+
expect(subject.submodules["src/submodule"].workdir_oid)
|
234
|
+
.to eq "95eed8c967af969d659a766b0551a75a729a7b65"
|
235
|
+
end
|
236
|
+
|
237
|
+
it "doesn't clone/checkout extraneous submodules" do
|
238
|
+
expect(subject.submodules["src/other"].workdir_oid).to eq nil
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
213
244
|
context "given a release with deprecated structure within 'releases' folder" do
|
214
245
|
let(:repo) { extracted_asset_dir("foo", "foo-boshrelease-repo.zip") }
|
215
246
|
|
@@ -264,6 +295,53 @@ module Bosh::Workspace
|
|
264
295
|
end
|
265
296
|
end
|
266
297
|
|
298
|
+
context "specific ref from different branch with specific release" do
|
299
|
+
let(:release_data) do
|
300
|
+
{"name" => name, "version" => "9.1", "ref" => "9c899", "git" => repo}
|
301
|
+
end
|
302
|
+
|
303
|
+
it "checks out repo" do
|
304
|
+
release.update_repo
|
305
|
+
expect(subject).to match(/foo-9.1.yml/)
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
context "specific ref from different branch with latest release" do
|
310
|
+
let(:release_data) do
|
311
|
+
{"name" => name, "version" => "latest", "ref" => "9c899", "git" => repo}
|
312
|
+
end
|
313
|
+
|
314
|
+
it "checks out repo" do
|
315
|
+
release.update_repo
|
316
|
+
expect(subject).to match(/foo-9.2.yml/)
|
317
|
+
expect(subject).to_not match(/foo-10.yml/)
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
321
|
+
context "specific tag latest release" do
|
322
|
+
let(:release_data) do
|
323
|
+
{"name" => name, "version" => "latest", "ref" => "refs/tags/v8", "git" => repo}
|
324
|
+
end
|
325
|
+
|
326
|
+
it "checks out repo" do
|
327
|
+
|
328
|
+
release.update_repo
|
329
|
+
expect(subject).to match(/foo-8.yml/)
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
context "specific tag from different branch with latest release" do
|
334
|
+
let(:release_data) do
|
335
|
+
{"name" => name, "version" => "9.1", "ref" => "refs/tags/v9.1", "git" => repo}
|
336
|
+
end
|
337
|
+
|
338
|
+
it "checks out repo" do
|
339
|
+
release.update_repo
|
340
|
+
expect(subject).to match(/foo-9.1.yml/)
|
341
|
+
expect(subject).to_not match(/foo-9.2.yml/)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
|
267
345
|
context "updated version" do
|
268
346
|
let(:version) { "11" }
|
269
347
|
|
@@ -452,10 +530,10 @@ module Bosh::Workspace
|
|
452
530
|
|
453
531
|
context "correct checkout behavior:" do
|
454
532
|
let(:release_data) { { "name" => name, "version" => version,
|
455
|
-
"git" => repo, "ref" =>
|
533
|
+
"git" => repo, "ref" => 'e0b35d6' } }
|
456
534
|
let(:repo) { 'foo/bar' }
|
457
535
|
let(:repository) do
|
458
|
-
instance_double('Rugged::Repository', lookup: double(oid:
|
536
|
+
instance_double('Rugged::Repository', lookup: double(oid: 'e0b35d6'))
|
459
537
|
end
|
460
538
|
|
461
539
|
describe "#update_repo_with_ref" do
|
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.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruben Koster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bosh_cli
|
@@ -236,6 +236,7 @@ files:
|
|
236
236
|
- spec/assets/manifests-repo/stubs/foobar
|
237
237
|
- spec/assets/manifests-repo/templates/foo/bar.yml
|
238
238
|
- spec/assets/submodule-boshrelease-repo.zip
|
239
|
+
- spec/assets/supermodule-all-templates-symlinked-boshrelease-repo.zip
|
239
240
|
- spec/assets/supermodule-boshrelease-repo.zip
|
240
241
|
- spec/assets/symlinkreplacement-boshrelease-repo.zip
|
241
242
|
- spec/commands/deployment_patch_spec.rb
|
@@ -315,6 +316,7 @@ test_files:
|
|
315
316
|
- spec/assets/manifests-repo/stubs/foobar
|
316
317
|
- spec/assets/manifests-repo/templates/foo/bar.yml
|
317
318
|
- spec/assets/submodule-boshrelease-repo.zip
|
319
|
+
- spec/assets/supermodule-all-templates-symlinked-boshrelease-repo.zip
|
318
320
|
- spec/assets/supermodule-boshrelease-repo.zip
|
319
321
|
- spec/assets/symlinkreplacement-boshrelease-repo.zip
|
320
322
|
- spec/commands/deployment_patch_spec.rb
|