uricp 0.0.29 → 0.0.31

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
  SHA256:
3
- metadata.gz: 9e24fdb3944db682f49ca90b6eb4639885389d689610e76cbcbf5d83e5619208
4
- data.tar.gz: 99eeabde06d5f28aa9c33b1faa9306bf9fb65cba504c68359968388515061d8b
3
+ metadata.gz: a4895addf1e14cf9a918d89e471fe0f30e12189bd942303806590aff1368a294
4
+ data.tar.gz: 97be8b34f73e4e0070cd6a0f6878a5f7dd9db465d7b5fd236c4497e72f5b83cd
5
5
  SHA512:
6
- metadata.gz: ef6450ea82fe52174ec0037e4e62711c35da6c2c746ecab02d123ec00df35f5bf3697f3b55b595c509274b9446e7a7446f2167401793d17a1f6c00c88cba6186
7
- data.tar.gz: 7b9d798e540f9f3e4418e7c7facd08120c1c889320baf8b7d707464aafdd89ad2f492ec7c0233e4537e05027ff6de7eb25fe79444ce753a11600c610cb9a9682
6
+ metadata.gz: fb45da786826b356a2a95b0764eb7e3d117d0933da0f0729e3473ee4715266217fe642fbe819a87f7b7330809bded5d1f7a92cc39c5c27c8766776577bec19e8
7
+ data.tar.gz: edc045ffc50f615a1f40ef8d4700c541658095ecef4eee84bbf196071a1e233c165eab0f8dd5c237d56aacbfe30ca7722db8398fd45de5fb46a6718356229368
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- uricp (0.0.29)
4
+ uricp (0.0.31)
5
5
  childprocess (~> 1.0)
6
6
  filesize (= 0.0.2)
7
7
  methadone (~> 2.0.2)
@@ -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.4/devel/almalinux-devel.repo
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 \
@@ -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
+ """
@@ -24,22 +24,26 @@ module Uricp::CurlPrimitives
24
24
  end
25
25
 
26
26
  def authentication
27
- "-H X-Auth-Token:#{options['authenticator'].call}" if http_authentication?
27
+ "-H 'X-Auth-Token:#{options['authenticator'].call}'" if http_authentication?
28
28
  end
29
29
 
30
30
  def http_authentication?
31
31
  options['authenticator']
32
32
  end
33
33
 
34
+ def temp_url?
35
+ from && from.query.to_s.include?('temp_url')
36
+ end
37
+
34
38
  def curl_upload_from(source, destination = to)
35
- "#{curl_command} #{authentication} -T #{source} #{destination};"
39
+ "#{curl_command} #{authentication} -T '#{source}' '#{destination}';"
36
40
  end
37
41
 
38
42
  def curl_download_to_pipe
39
- "#{curl_command} #{authentication} #{from} |"
43
+ "#{curl_command} #{authentication unless temp_url?} '#{from}' |"
40
44
  end
41
45
 
42
46
  def curl_manifest(object_manifest, destination = to)
43
- "#{curl_command} #{authentication} -X PUT -H 'X-Object-Manifest: #{object_manifest}' #{destination} --data-binary ''"
47
+ "#{curl_command} #{authentication} -X PUT -H 'X-Object-Manifest: #{object_manifest}' '#{destination}' --data-binary ''"
44
48
  end
45
49
  end
@@ -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'] !~ /srv-...../
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'
@@ -193,7 +195,7 @@ module Uricp::Strategy
193
195
  def in_rbd_cache(target)
194
196
  result =
195
197
  if dry_run?
196
- options['dry-cache'] == :rbd && options['cache_name'] !~ /srv-...../
198
+ options['dry-cache'] == :rbd && options['cache_name'] !~ VOL_REGEX
197
199
  else
198
200
  snap_check(target, rbd_base_name)
199
201
  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
- return proposal unless sequence_complete?
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
@@ -75,7 +75,8 @@ module Uricp::Strategy
75
75
 
76
76
  def headers
77
77
  headers = { 'Range' => 'bytes=0-7' }
78
- headers['X-Auth-Token'] = options['authenticator'].call if http_authentication?
78
+ return headers if !http_authentication? || temp_url?
79
+ headers['X-Auth-Token'] = options['authenticator'].call
79
80
  headers
80
81
  end
81
82
  end
data/lib/uricp/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uricp
4
- VERSION = '0.0.29'
4
+ VERSION = '0.0.31'
5
5
  DEFAULT_SEGMENT_SIZE = '5 GiB'
6
6
  end
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.29
4
+ version: 0.0.31
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-03-11 00:00:00.000000000 Z
11
+ date: 2022-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aruba