uricp 0.0.27 → 0.0.30
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/Gemfile.lock +1 -1
- data/almalinux8/Dockerfile +2 -2
- data/features/rbd_access.feature +53 -1
- data/lib/uricp/strategy/common.rb +18 -8
- data/lib/uricp/strategy/piped_rbd_get.rb +5 -2
- data/lib/uricp/strategy/rbd_cached_put.rb +2 -2
- data/lib/uricp/strategy/rbd_snap.rb +1 -6
- data/lib/uricp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a10697c8ebadc4cb158670335272b8b4b4681aac70182c95a6dd2b842587d61a
|
4
|
+
data.tar.gz: a07ca44d72030583442c8e572754aa164498fc8dce625dfde001e107a02b3533
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35a87e4afe346283df0838e50c8a57b28893e7841582917ef11ee0eee76b20a0f52941616e78cef35c3b7d8d0ab2db5978d5c4cd338054e36bafabee50d12a82
|
7
|
+
data.tar.gz: fd3c6fda3b1624519abd26dd6bc8a54bda4d615ec098d1fb37cf279ab12640c643323b499f25e1fc811d9a2400fea59c55c4a2f1bcbe8c9ba90c629b73fb1775
|
data/Gemfile.lock
CHANGED
data/almalinux8/Dockerfile
CHANGED
@@ -3,11 +3,11 @@ MAINTAINER support@brightbox.co.uk
|
|
3
3
|
|
4
4
|
RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
|
5
5
|
RUN dnf -y install dnf-plugins-core
|
6
|
-
RUN dnf config-manager --add-repo https://repo.almalinux.org/almalinux/8
|
6
|
+
RUN dnf config-manager --add-repo https://repo.almalinux.org/almalinux/8/devel/almalinux-devel.repo
|
7
|
+
RUN echo "8-stream" > /etc/dnf/vars/stream
|
7
8
|
RUN dnf -y update
|
8
9
|
RUN dnf config-manager --set-enabled powertools,devel
|
9
10
|
RUN dnf -y group install "Development Tools"
|
10
|
-
RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
11
11
|
RUN dnf -y install https://www.rdoproject.org/repos/rdo-release.el8.rpm
|
12
12
|
RUN dnf -y install \
|
13
13
|
git \
|
data/features/rbd_access.feature
CHANGED
@@ -32,7 +32,7 @@ Feature: Manipulate file images in ceph
|
|
32
32
|
"""
|
33
33
|
And the output should contain:
|
34
34
|
"""
|
35
|
-
rbd clone --id libvirt 'servers/freedos.qcow2@base' 'servers/srv-testy'
|
35
|
+
rbd clone --id libvirt 'servers/freedos.qcow2@base' 'servers/srv-testy' || { [ $? -eq 22 ] && rbd create --id libvirt -s 0 'servers/srv-testy'; };
|
36
36
|
"""
|
37
37
|
|
38
38
|
Scenario: HTTP URI from file cache via unpopulated rbd cache
|
@@ -246,3 +246,55 @@ Feature: Manipulate file images in ceph
|
|
246
246
|
"""
|
247
247
|
rbd snap protect --id libvirt 'servers/img-testy@base'
|
248
248
|
"""
|
249
|
+
|
250
|
+
Scenario: RBD export and upload to HTTPS
|
251
|
+
Given a correctly initialised cache at "/tmp/uricp"
|
252
|
+
When I successfully run `uricp --dry-run --auth-token 'd75945e3b9159f1f14e91b2022bc53ea10481ed15e4a' --target-format 'raw' --compress --segment-size '1073741824B' --cache '/var/cache/domtrix' rbd:/servers/vol-yd63x https://orbit.gb1s.brightbox.com/v1/acc-8tgbq/images/img-cfwe0`
|
253
|
+
And the output should contain:
|
254
|
+
"""
|
255
|
+
rbd snap create --id libvirt 'servers/vol-yd63x@uricp_snap'
|
256
|
+
"""
|
257
|
+
And the output should contain:
|
258
|
+
"""
|
259
|
+
rbd snap protect --id libvirt 'servers/vol-yd63x@uricp_snap'
|
260
|
+
"""
|
261
|
+
And the output should not contain:
|
262
|
+
"""
|
263
|
+
rbd snap unprotect --id libvirt 'servers/vol-yd63x@uricp_snap'
|
264
|
+
"""
|
265
|
+
And the output should not contain:
|
266
|
+
"""
|
267
|
+
rbd snap rm --id libvirt 'servers/vol-yd63x@uricp_snap'
|
268
|
+
"""
|
269
|
+
And the output should not contain:
|
270
|
+
"""
|
271
|
+
rbd export --no-progress --id libvirt 'servers/vol-yd63x@uricp_snap' -
|
272
|
+
"""
|
273
|
+
And the output should contain:
|
274
|
+
"""
|
275
|
+
rbd clone --id libvirt 'servers/vol-yd63x@uricp_snap' 'servers/img-cfwe0'
|
276
|
+
"""
|
277
|
+
And the output should contain:
|
278
|
+
"""
|
279
|
+
rbd export --no-progress --id libvirt 'servers/img-cfwe0@base' -
|
280
|
+
"""
|
281
|
+
And the output should contain:
|
282
|
+
"""
|
283
|
+
rbd snap create --id libvirt 'servers/img-cfwe0@base'
|
284
|
+
"""
|
285
|
+
And the output should contain:
|
286
|
+
"""
|
287
|
+
rbd snap protect --id libvirt 'servers/img-cfwe0@base'
|
288
|
+
"""
|
289
|
+
And the output should contain:
|
290
|
+
"""
|
291
|
+
rbd export --no-progress --id libvirt 'servers/img-cfwe0@base' -
|
292
|
+
"""
|
293
|
+
And the output should contain:
|
294
|
+
"""
|
295
|
+
lz4
|
296
|
+
"""
|
297
|
+
And the output should contain:
|
298
|
+
"""
|
299
|
+
segment_upload --segment-size '1073741824.00 B' https://orbit.gb1s.brightbox.com/v1/acc-8tgbq/images/img-cfwe0
|
300
|
+
"""
|
@@ -6,6 +6,8 @@ module Uricp::Strategy
|
|
6
6
|
include Uricp::CurlPrimitives
|
7
7
|
include Methadone::SH
|
8
8
|
|
9
|
+
VOL_REGEX = /^(srv|vol)-.....$/
|
10
|
+
|
9
11
|
def initialize(options)
|
10
12
|
@options = options
|
11
13
|
debug "#{self.class.name}: options are #{options.inspect}"
|
@@ -168,7 +170,7 @@ module Uricp::Strategy
|
|
168
170
|
def rbd_cache_image_exists?(target)
|
169
171
|
command = "rbd status --id #{rbd_id} --format json #{target} 2>/dev/null"
|
170
172
|
if dry_run?
|
171
|
-
if options['dry-cache'] == :partial_rbd && options['cache_name'] !~
|
173
|
+
if options['dry-cache'] == :partial_rbd && options['cache_name'] !~ VOL_REGEX
|
172
174
|
command = 'exit 0'
|
173
175
|
else
|
174
176
|
command = 'exit 2'
|
@@ -180,15 +182,23 @@ module Uricp::Strategy
|
|
180
182
|
false
|
181
183
|
end
|
182
184
|
|
183
|
-
def
|
185
|
+
def snap_check(target, name)
|
184
186
|
result = false
|
185
|
-
|
186
|
-
result =
|
187
|
-
else
|
188
|
-
sh "rbd snap ls --id #{rbd_id} --format json #{target} 2>/dev/null" do |stdout|
|
189
|
-
result = JSON.parse(stdout).any? { |x| x['name'] == rbd_base_name }
|
190
|
-
end
|
187
|
+
sh "rbd snap ls --id #{rbd_id} --format json #{target} 2>/dev/null" do |stdout|
|
188
|
+
result = JSON.parse(stdout).any? { |x| x['name'] == name }
|
191
189
|
end
|
190
|
+
result
|
191
|
+
rescue Methadone::FailedCommandError
|
192
|
+
false
|
193
|
+
end
|
194
|
+
|
195
|
+
def in_rbd_cache(target)
|
196
|
+
result =
|
197
|
+
if dry_run?
|
198
|
+
options['dry-cache'] == :rbd && options['cache_name'] !~ VOL_REGEX
|
199
|
+
else
|
200
|
+
snap_check(target, rbd_base_name)
|
201
|
+
end
|
192
202
|
result && rbd_clone_snapshot(target)
|
193
203
|
end
|
194
204
|
end
|
@@ -10,8 +10,10 @@ module Uricp::Strategy
|
|
10
10
|
without_active_cache do
|
11
11
|
if from.scheme == 'rbd' &&
|
12
12
|
rbd_snapshot_spec?(from) &&
|
13
|
-
to.scheme != 'rbd'
|
14
|
-
|
13
|
+
to.scheme != 'rbd' &&
|
14
|
+
(!conversion_required? || raw_target?) &&
|
15
|
+
!sequence_complete?
|
16
|
+
return proposal
|
15
17
|
end
|
16
18
|
end
|
17
19
|
debug "#{self.class.name}: not appropriate"
|
@@ -25,6 +27,7 @@ module Uricp::Strategy
|
|
25
27
|
def proposal
|
26
28
|
@proposed_options = options.dup
|
27
29
|
@proposed_options['from_uri'] = PIPE_URI
|
30
|
+
@proposed_options.delete('target-format')
|
28
31
|
self
|
29
32
|
end
|
30
33
|
end
|
@@ -17,8 +17,8 @@ module Uricp::Strategy
|
|
17
17
|
|
18
18
|
def command
|
19
19
|
"rbd clone --id #{rbd_id} '#{rbd_image_spec(from)}' "\
|
20
|
-
"'#{rbd_image_spec(to)}' || [ $? -eq 22 ] && "\
|
21
|
-
"rbd create --id #{rbd_id} -s 0 '#{rbd_image_spec(to)}';"
|
20
|
+
"'#{rbd_image_spec(to)}' || { [ $? -eq 22 ] && "\
|
21
|
+
"rbd create --id #{rbd_id} -s 0 '#{rbd_image_spec(to)}'; };"
|
22
22
|
end
|
23
23
|
|
24
24
|
def proposal
|
@@ -47,12 +47,7 @@ module Uricp::Strategy
|
|
47
47
|
|
48
48
|
def snap_in_progress?
|
49
49
|
return false if dry_run?
|
50
|
-
|
51
|
-
result = false
|
52
|
-
sh "rbd snap ls --id #{rbd_id} --format json #{rbd_image_spec(from)} 2>/dev/null" do |stdout|
|
53
|
-
result = JSON.parse(stdout).any? { |x| x['name'] == rbd_snapshot_name }
|
54
|
-
end
|
55
|
-
result
|
50
|
+
snap_check(rbd_image_spec(from), rbd_snapshot_name)
|
56
51
|
end
|
57
52
|
end
|
58
53
|
end
|
data/lib/uricp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uricp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.30
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neil Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aruba
|