uricp 0.0.5 → 0.0.6

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.
@@ -28,6 +28,14 @@ Feature: Authenticated download of images from orbit
28
28
  And a file named "/tmp/uricp/cache/img-qcow2" should exist
29
29
  And the file named "/tmp/uricp/cache/img-qcow2" should have a file format of "qcow2v3"
30
30
 
31
+ Scenario: zero download convert to qcow2, cache
32
+ Given a correctly initialised cache at "/tmp/uricp"
33
+ When I retrieve "img-zeroy" with options "--target-format=qcow2 --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-testz"
34
+ Then a file named "/tmp/uricp/srv-testz" should exist
35
+ And the file named "/tmp/uricp/srv-testz" should have a file format of "qcow2"
36
+ And a 0 byte file named "/tmp/uricp/cache/img-zeroy" should exist
37
+ And the file named "/tmp/uricp/cache/img-zeroy" should have a file format of "raw"
38
+
31
39
  Scenario: qcow download convert to raw, cache
32
40
  Given a correctly initialised cache at "/tmp/uricp"
33
41
  When I retrieve "img-qcow2" with options "--target-format=raw --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test4"
@@ -23,8 +23,14 @@ def create_download_file(filetype, name, container)
23
23
  tempfile = '/tmp/fred55322'
24
24
  FileUtils.rm_f(Dir.glob(tempfile+'*'))
25
25
  format = 'raw'
26
- format = 'qcow2' if filetype == 'qcow2'
27
- cmd = "qemu-img create -q -f #{format} #{tempfile} 1G"
26
+ size = '1G'
27
+ case filetype
28
+ when 'qcow2'
29
+ format = 'qcow2'
30
+ when 'zero'
31
+ size = '0'
32
+ end
33
+ cmd = "qemu-img create -q -f #{format} #{tempfile} #{size}"
28
34
  system(unescape(cmd))
29
35
  cmd = "cat #{tempfile}"
30
36
  if filetype == 'lz4'
@@ -32,6 +38,7 @@ def create_download_file(filetype, name, container)
32
38
  end
33
39
  cmd += "| curl --silent --fail -T - -H 'X-Auth-Token: #{@current_auth_token}' #{upload_url} "
34
40
  system(unescape(cmd))
41
+ FileUtils.rm_f(Dir.glob(tempfile+'*'))
35
42
  end
36
43
 
37
44
  def create_container(name)
@@ -180,6 +187,7 @@ Before('@orbitdownloads') do
180
187
  create_container('test')
181
188
  create_download_file('qcow2', 'img-qcow2', 'test')
182
189
  create_download_file('lz4', 'img-lz4cy', 'test')
190
+ create_download_file('zero', 'img-zeroy', 'test')
183
191
  $orbit_setup = true
184
192
  end
185
193
  end
@@ -2,7 +2,7 @@ Then(/^the file named "(.*?)" should have a file format of "(.*?)"$/) do |filena
2
2
  case format
3
3
  when 'lz4'
4
4
  assert_exact_output([0x184D2204].pack('V'),
5
- File.open(filename, 'rb') {|f| f.read(4) })
5
+ File.open(filename, 'rb') {|f| f.read(4) }.to_s)
6
6
  when 'qcow2v3', 'qcow3'
7
7
  steps %{
8
8
  When I successfully run `qemu-img info #{filename}`
@@ -11,7 +11,7 @@ Then(/^the file named "(.*?)" should have a file format of "(.*?)"$/) do |filena
11
11
  }
12
12
  else
13
13
  assert_no_partial_output([0x184D2204].pack('V'),
14
- File.open(filename, 'rb') {|f| f.read(4) })
14
+ File.open(filename, 'rb') {|f| f.read(4) }.to_s)
15
15
  steps(%{
16
16
  When I successfully run `qemu-img info #{filename}`
17
17
  Then the output from "qemu-img info #{filename}" should contain "file format: #{format}"
@@ -21,8 +21,7 @@ module Uricp::Strategy
21
21
  @proposed_options = options.dup
22
22
  @proposed_options['from_uri'] = PIPE_URI
23
23
  if options['target-format']
24
- @proposed_options['source-format'] =
25
- options['from_uri'].open(headers) { |u| encoding(u) }
24
+ @proposed_options['source-format'] = format_peek
26
25
  if @proposed_options['source-format'] == @proposed_options['target-format']
27
26
  @proposed_options.delete('source-format')
28
27
  @proposed_options.delete('target-format')
@@ -31,6 +30,17 @@ module Uricp::Strategy
31
30
  self
32
31
  end
33
32
 
33
+ def format_peek
34
+ options['from_uri'].open(headers) { |u| encoding(u) }
35
+ rescue OpenURI::HTTPError => e
36
+ case e.io.status[0]
37
+ when '416'
38
+ 'raw'
39
+ else
40
+ raise
41
+ end
42
+ end
43
+
34
44
  def headers
35
45
  headers={'Range' => 'bytes=0-7'}
36
46
  headers['X-Auth-Token'] = options['auth-token'] if http_authentication?
data/lib/uricp/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Uricp
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  DEFAULT_SEGMENT_SIZE = "5 GiB"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uricp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-28 00:00:00.000000000 Z
12
+ date: 2015-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler