bosh_cli 1.3146.3.0 → 1.3146.4.0
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/cli/release_tarball.rb +63 -13
- data/lib/cli/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 31e78bc31516fc30cd9104b338278871faedb16e
|
|
4
|
+
data.tar.gz: 6db3dfc60e2d60b6fe7168b858572f58b22a3659
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e7c6bebf45c400d25e65c509f45da0235914faf807965ae3456ac229cfc72d851dc8c31ec9630ae3da8f4b608ef0b24a59505e4b37b97062cec368680d0e5b00
|
|
7
|
+
data.tar.gz: dd1ec5728638e4d32a0d91b096d605495720b08f27e11c6f8febdd2c48a0e02d6cf8d8c909d9952785647d4cb7aec09daaae712fbfc98038d65e9f661a3ff671
|
data/lib/cli/release_tarball.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'open3'
|
|
2
|
+
|
|
1
3
|
module Bosh::Cli
|
|
2
4
|
class ReleaseTarball
|
|
3
5
|
include Validation
|
|
@@ -21,36 +23,84 @@ module Bosh::Cli
|
|
|
21
23
|
|
|
22
24
|
def unpack_manifest
|
|
23
25
|
return @unpacked_manifest unless @unpacked_manifest.nil?
|
|
24
|
-
exit_success =
|
|
26
|
+
exit_success = safe_fast_unpack('./release.MF')
|
|
25
27
|
@unpacked_manifest = !!exit_success
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def unpack_jobs
|
|
29
31
|
return @unpacked_jobs unless @unpacked_jobs.nil?
|
|
30
|
-
exit_success =
|
|
32
|
+
exit_success = safe_fast_unpack('./jobs/')
|
|
33
|
+
unless all_release_jobs_unpacked?
|
|
34
|
+
exit_success = safe_unpack('./jobs/')
|
|
35
|
+
end
|
|
31
36
|
@unpacked_jobs = !!exit_success
|
|
32
37
|
end
|
|
33
38
|
|
|
34
39
|
def unpack_license
|
|
35
40
|
return @unpacked_license unless @unpacked_license.nil?
|
|
36
|
-
exit_success =
|
|
41
|
+
exit_success = safe_fast_unpack('./license.tgz')
|
|
37
42
|
@unpacked_license = !!exit_success
|
|
38
43
|
end
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
# On machines using GNU based tar command, it should be able to unpack files irrespective of
|
|
46
|
+
# the ./ prefix in the file name
|
|
47
|
+
def safe_fast_unpack(target)
|
|
48
|
+
exit_status = raw_fast_unpack(target)
|
|
49
|
+
if !exit_status
|
|
50
|
+
processed_target = handle_dot_slash_prefix(target)
|
|
51
|
+
exit_status = raw_fast_unpack(processed_target)
|
|
52
|
+
end
|
|
53
|
+
exit_status
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def safe_unpack(target)
|
|
57
|
+
exit_status = raw_unpack(target)
|
|
58
|
+
if !exit_status
|
|
59
|
+
processed_target = handle_dot_slash_prefix(target)
|
|
60
|
+
exit_status = raw_unpack(processed_target)
|
|
61
|
+
end
|
|
62
|
+
exit_status
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# This will [add or remove] the './' when trying to extract a specific file from archive
|
|
66
|
+
def handle_dot_slash_prefix(target)
|
|
67
|
+
if target =~ /^\.\/.*/
|
|
68
|
+
target.sub!(/^\.\//, '')
|
|
49
69
|
else
|
|
50
|
-
|
|
70
|
+
target.prepend("./")
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def raw_fast_unpack(target)
|
|
75
|
+
tar_version, _, _ = Open3.capture3('tar', '--version')
|
|
76
|
+
|
|
77
|
+
case tar_version
|
|
78
|
+
when /.*gnu.*/i
|
|
79
|
+
Kernel.system("tar", "-C", @unpack_dir, "-xzf", @tarball_path, "--occurrence", "#{target}", out: "/dev/null", err: "/dev/null")
|
|
80
|
+
when /.*bsd.*/i
|
|
81
|
+
if target[-1, 1] == "/"
|
|
82
|
+
raw_unpack(target)
|
|
83
|
+
else
|
|
84
|
+
Kernel.system("tar", "-C", @unpack_dir, "--fast-read", "-xzf", @tarball_path, "#{target}", out: "/dev/null", err: "/dev/null")
|
|
85
|
+
end
|
|
86
|
+
else
|
|
87
|
+
raw_unpack(target)
|
|
51
88
|
end
|
|
52
89
|
end
|
|
53
90
|
|
|
91
|
+
def raw_unpack(target)
|
|
92
|
+
Kernel.system("tar", "-C", @unpack_dir, "-xzf", @tarball_path, "#{target}", out: "/dev/null", err: "/dev/null")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# verifies that all jobs in release manifest were unpacked
|
|
96
|
+
def all_release_jobs_unpacked?
|
|
97
|
+
return false if manifest_yaml['jobs'].nil?
|
|
98
|
+
|
|
99
|
+
manifest_job_names = manifest_yaml['jobs'].map { |j| j['name'] }.sort
|
|
100
|
+
unpacked_job_file_names = Dir.glob(File.join(@unpack_dir, 'jobs', '*')).map { |f| File.basename(f, '.*') }.sort
|
|
101
|
+
unpacked_job_file_names == manifest_job_names
|
|
102
|
+
end
|
|
103
|
+
|
|
54
104
|
# Unpacks tarball to @unpack_dir, returns true if succeeded, false if failed
|
|
55
105
|
def unpack
|
|
56
106
|
return @unpacked unless @unpacked.nil?
|
data/lib/cli/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bosh_cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3146.
|
|
4
|
+
version: 1.3146.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- VMware
|
|
@@ -16,28 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.3146.
|
|
19
|
+
version: 1.3146.4.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.3146.
|
|
26
|
+
version: 1.3146.4.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: bosh-template
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.3146.
|
|
33
|
+
version: 1.3146.4.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 1.3146.
|
|
40
|
+
version: 1.3146.4.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: cf-uaa-lib
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -128,14 +128,14 @@ dependencies:
|
|
|
128
128
|
requirements:
|
|
129
129
|
- - "~>"
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: 1.3146.
|
|
131
|
+
version: 1.3146.4.0
|
|
132
132
|
type: :runtime
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
136
|
- - "~>"
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 1.3146.
|
|
138
|
+
version: 1.3146.4.0
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
140
|
name: net-ssh
|
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|