bosh-workspace 0.9.10 → 0.9.11
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/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
|