uricp 0.0.6 → 0.0.7

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.
data/.gitignore CHANGED
@@ -1,6 +1,7 @@
1
1
  .DS_Store
2
2
  results.html
3
+ coverage
3
4
  pkg
4
5
  html
5
- Gemfile.lock
6
6
  *.swp
7
+ Dockerfile
@@ -0,0 +1,39 @@
1
+ FROM centos:6.6
2
+ MAINTAINER support@brightbox.co.uk
3
+
4
+ RUN yum update -y && yum -y install \
5
+ epel-release \
6
+ gcc \
7
+ git \
8
+ make \
9
+ qemu-img \
10
+ ruby-devel \
11
+ rubygems
12
+
13
+ RUN yum update -y && yum -y install \
14
+ python-setuptools \
15
+ python-requests \
16
+ python-devel \
17
+ python-simplejson \
18
+ python-futures \
19
+ lz4
20
+
21
+ RUN easy_install pip
22
+ RUN pip install --upgrade setuptools
23
+ RUN pip install python-swiftclient
24
+
25
+ RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
26
+ RUN gem install bundler
27
+
28
+ RUN mkdir /app
29
+ WORKDIR /app
30
+
31
+ COPY Gemfile /app/Gemfile
32
+ COPY Gemfile.lock /app/Gemfile.lock
33
+ COPY uricp.gemspec /app/uricp.gemspec
34
+ COPY lib/uricp/version.rb /app/lib/uricp/version.rb
35
+ RUN bundle install --deployment
36
+
37
+ COPY . /app
38
+
39
+ CMD bundle exec rake features:old_qemu
@@ -0,0 +1,39 @@
1
+ FROM centos:7
2
+ MAINTAINER support@brightbox.co.uk
3
+
4
+ RUN yum update -y && yum -y install \
5
+ epel-release \
6
+ gcc \
7
+ make \
8
+ git \
9
+ qemu-img \
10
+ ruby-devel \
11
+ rubygems \
12
+
13
+ RUN yum update -y && yum -y install \
14
+ python-setuptools \
15
+ python-requests \
16
+ python-devel \
17
+ python-simplejson \
18
+ python-futures \
19
+ lz4
20
+
21
+ RUN easy_install pip
22
+ RUN pip install --upgrade setuptools
23
+ RUN pip install python-swiftclient
24
+
25
+ RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
26
+ RUN gem install bundler
27
+
28
+ RUN mkdir /app
29
+ WORKDIR /app
30
+
31
+ COPY Gemfile /app/Gemfile
32
+ COPY Gemfile.lock /app/Gemfile.lock
33
+ COPY uricp.gemspec /app/uricp.gemspec
34
+ COPY lib/uricp/version.rb /app/lib/uricp/version.rb
35
+ RUN bundle install --deployment
36
+
37
+ COPY . /app
38
+
39
+ CMD bundle exec rake features:new_qemu
@@ -0,0 +1,32 @@
1
+ FROM ubuntu:trusty
2
+ MAINTAINER support@brightbox.co.uk
3
+
4
+ RUN apt-get update && apt-get install -y -qq software-properties-common
5
+
6
+ RUN apt-add-repository ppa:brightbox/ruby-ng
7
+
8
+ RUN apt-get update && apt-get install -y -qq \
9
+ build-essential \
10
+ git \
11
+ qemu-utils \
12
+ liblz4-tool \
13
+ curl \
14
+ ruby1.9.3 \
15
+ ruby-dev \
16
+ python-swiftclient
17
+
18
+ RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
19
+ RUN gem install bundler
20
+
21
+ RUN mkdir /app
22
+ WORKDIR /app
23
+
24
+ COPY Gemfile /app/Gemfile
25
+ COPY Gemfile.lock /app/Gemfile.lock
26
+ COPY uricp.gemspec /app/uricp.gemspec
27
+ COPY lib/uricp/version.rb /app/lib/uricp/version.rb
28
+ RUN bundle install --deployment
29
+
30
+ COPY . /app
31
+
32
+ CMD bundle exec rake features:new_qemu
data/Gemfile.lock ADDED
@@ -0,0 +1,62 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ uricp (0.0.7)
5
+ filesize (= 0.0.2)
6
+ methadone (~> 1.8.0)
7
+ open4 (~> 1.3.0)
8
+ sendfile (~> 1.2.0)
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ aruba (0.6.2)
14
+ childprocess (>= 0.3.6)
15
+ cucumber (>= 1.1.1)
16
+ rspec-expectations (>= 2.7.0)
17
+ builder (3.2.2)
18
+ childprocess (0.5.5)
19
+ ffi (~> 1.0, >= 1.0.11)
20
+ cucumber (1.3.19)
21
+ builder (>= 2.1.2)
22
+ diff-lcs (>= 1.1.3)
23
+ gherkin (~> 2.12)
24
+ multi_json (>= 1.7.5, < 2.0)
25
+ multi_test (>= 0.1.2)
26
+ diff-lcs (1.2.5)
27
+ ffi (1.9.8)
28
+ filesize (0.0.2)
29
+ gherkin (2.12.2)
30
+ multi_json (~> 1.3)
31
+ inifile (1.1.0)
32
+ json (1.8.2)
33
+ methadone (1.8.0)
34
+ bundler
35
+ multi_json (1.11.0)
36
+ multi_test (0.1.2)
37
+ open4 (1.3.4)
38
+ rake (10.4.2)
39
+ rdoc (4.2.0)
40
+ json (~> 1.4)
41
+ rspec (2.99.0)
42
+ rspec-core (~> 2.99.0)
43
+ rspec-expectations (~> 2.99.0)
44
+ rspec-mocks (~> 2.99.0)
45
+ rspec-core (2.99.2)
46
+ rspec-expectations (2.99.2)
47
+ diff-lcs (>= 1.1.3, < 2.0)
48
+ rspec-mocks (2.99.3)
49
+ sendfile (1.2.2)
50
+
51
+ PLATFORMS
52
+ ruby
53
+
54
+ DEPENDENCIES
55
+ aruba
56
+ bundler (~> 1.7)
57
+ cucumber (~> 1.3)
58
+ inifile (~> 1.1)
59
+ rake
60
+ rdoc
61
+ rspec (~> 2.99)
62
+ uricp!
data/Rakefile CHANGED
@@ -50,9 +50,17 @@ end
50
50
 
51
51
  CUKE_RESULTS = 'results.html'
52
52
  CLEAN << CUKE_RESULTS
53
- Cucumber::Rake::Task.new(:features) do |t|
54
- t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty --no-source -x"
55
- t.fork = false
53
+ namespace(:features) do
54
+ Cucumber::Rake::Task.new(:new_qemu) do |t|
55
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty --no-source -x"
56
+ t.fork = false
57
+ t.profile = 'new-qemu-image'
58
+ end
59
+ Cucumber::Rake::Task.new(:old_qemu) do |t|
60
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty --no-source -x"
61
+ t.fork = false
62
+ t.profile = 'old-qemu-image'
63
+ end
56
64
  end
57
65
 
58
66
  Rake::RDocTask.new do |rd|
@@ -62,5 +70,5 @@ Rake::RDocTask.new do |rd|
62
70
  rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
63
71
  end
64
72
 
65
- task :default => [:spec,:features]
73
+ task :default => [:spec,"features:new_qemu"]
66
74
 
data/bin/segment_upload CHANGED
@@ -11,7 +11,7 @@ class App
11
11
  include Methadone::SH
12
12
  include Methadone::CLILogging
13
13
 
14
- main do |to_uri|
14
+ main do |to_uri,|
15
15
  options['auth_uri'] = options['to_uri'] = URI(to_uri)
16
16
  options['segment-size'] = Filesize.from(options['segment-size'])
17
17
  Uricp::OrbitAuth.validate_options(options)
data/bin/uricp CHANGED
@@ -11,7 +11,7 @@ class App
11
11
  include Methadone::SH
12
12
  include Methadone::CLILogging
13
13
 
14
- main do |from_uri, to_uri|
14
+ main do |from_uri, to_uri,|
15
15
  options['from_uri'] = URI(from_uri)
16
16
  options['to_uri'] = URI(to_uri)
17
17
  options['auth_uri'] = select_auth_url
data/cucumber.yml ADDED
@@ -0,0 +1,3 @@
1
+ default: --profile new-qemu-image
2
+ new-qemu-image: --tags ~@old-qemu-image
3
+ old-qemu-image: --tags ~@new-qemu-image
@@ -1,5 +1,6 @@
1
1
  @orbit
2
2
  @orbitdownloads
3
+ @new-qemu-image
3
4
  Feature: Authenticated download of images from orbit
4
5
  In order to download images from orbit
5
6
  As a command line user
@@ -8,13 +8,13 @@ Feature: Download Public VM images
8
8
  And the default aruba timeout is 15 seconds
9
9
 
10
10
  Scenario: HTTP URI qcow2 to qcow2
11
- When I successfully run `uricp https://foss-lab-manual.googlecode.com/files/freedos.qcow2 file:///tmp/uricp/srv-testy`
11
+ When I successfully run `uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 file:///tmp/uricp/srv-testy`
12
12
  Then a file named "/tmp/uricp/srv-testy" should exist
13
13
  And the file named "/tmp/uricp/srv-testy" should have a file format of "qcow2"
14
14
 
15
15
  Scenario: HTTP URI qcow2 via cache
16
16
  Given a correctly initialised cache at "/tmp/uricp"
17
- When I successfully run `uricp --cache=/tmp/uricp https://foss-lab-manual.googlecode.com/files/freedos.qcow2 file:///tmp/uricp/srv-testy`
17
+ When I successfully run `uricp --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 file:///tmp/uricp/srv-testy`
18
18
  Then a file named "/tmp/uricp/srv-testy" should exist
19
19
  And the file named "/tmp/uricp/srv-testy" should have a file format of "qcow2"
20
20
  And a file named "/tmp/uricp/cache/freedos.qcow2" should exist
@@ -22,15 +22,16 @@ Feature: Download Public VM images
22
22
 
23
23
  Scenario: HTTP URI qcow2 to qcow2 via cache
24
24
  Given a correctly initialised cache at "/tmp/uricp"
25
- When I successfully run `uricp --target-format=qcow2 --cache=/tmp/uricp https://foss-lab-manual.googlecode.com/files/freedos.qcow2 file:///tmp/uricp/srv-testy`
25
+ When I successfully run `uricp --target-format=qcow2 --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 file:///tmp/uricp/srv-testy`
26
26
  Then a file named "/tmp/uricp/srv-testy" should exist
27
27
  And the file named "/tmp/uricp/srv-testy" should have a file format of "qcow2"
28
28
  And a file named "/tmp/uricp/cache/freedos.qcow2" should exist
29
29
  And the file named "/tmp/uricp/cache/freedos.qcow2" should have a file format of "qcow2"
30
30
 
31
+ @new-qemu-image
31
32
  Scenario: HTTP URI qcow2 to qcow2v3 via cache
32
33
  Given a correctly initialised cache at "/tmp/uricp"
33
- When I successfully run `uricp --target-format=qcow2v3 --cache=/tmp/uricp https://foss-lab-manual.googlecode.com/files/freedos.qcow2 file:///tmp/uricp/srv-testy`
34
+ When I successfully run `uricp --target-format=qcow2v3 --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 file:///tmp/uricp/srv-testy`
34
35
  Then a file named "/tmp/uricp/srv-testy" should exist
35
36
  And the file named "/tmp/uricp/srv-testy" should have a file format of "qcow2v3"
36
37
  And a file named "/tmp/uricp/cache/freedos.qcow2" should exist
@@ -38,7 +39,7 @@ Feature: Download Public VM images
38
39
 
39
40
  Scenario: HTTP URI qcow2 to raw via cache
40
41
  Given a correctly initialised cache at "/tmp/uricp"
41
- When I successfully run `uricp --target-format=raw --cache=/tmp/uricp https://foss-lab-manual.googlecode.com/files/freedos.qcow2 file:///tmp/uricp/srv-testy`
42
+ When I successfully run `uricp --target-format=raw --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 file:///tmp/uricp/srv-testy`
42
43
  Then a file named "/tmp/uricp/srv-testy" should exist
43
44
  And the file named "/tmp/uricp/srv-testy" should have a file format of "raw"
44
45
  And a file named "/tmp/uricp/cache/freedos.qcow2" should exist
@@ -48,7 +49,7 @@ Feature: Download Public VM images
48
49
  Scenario: HTTP URI from cache
49
50
  Given a correctly initialised cache at "/tmp/uricp"
50
51
  And a 102400 byte file named "/tmp/uricp/cache/freedos.qcow2"
51
- When I successfully run `uricp --cache=/tmp/uricp https://foss-lab-manual.googlecode.com/files/freedos.qcow2 file:///tmp/uricp/srv-testy`
52
+ When I successfully run `uricp --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 file:///tmp/uricp/srv-testy`
52
53
  Then a 102400 byte file named "/tmp/uricp/srv-testy" should exist
53
54
  And a 102400 byte file named "/tmp/uricp/cache/freedos.qcow2" should exist
54
55
 
@@ -60,7 +61,7 @@ Feature: Download Public VM images
60
61
 
61
62
  Scenario: Unsupported target URI should error
62
63
  Given a correctly initialised cache at "/tmp/uricp"
63
- When I run `uricp --target-format=raw --cache=/tmp/uricp https://foss-lab-manual.googlecode.com/files/freedos.qcow2 http://foss-lab-manual.googlecode.com/files/freedos.qcow2`
64
+ When I run `uricp --target-format=raw --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2`
64
65
  Then the exit status should not be 0
65
66
  And the stderr should contain "Unsupported transfer"
66
67
 
@@ -58,7 +58,7 @@ Feature: Documented Help
58
58
  And the stderr should contain "needless argument"
59
59
 
60
60
  Scenario: authentication with normal http should fail
61
- When I run `uricp --auth-user cli-xxxxx --auth-key fred https://foss-lab-manual.googlecode.com/files file://tmp/temp`
61
+ When I run `uricp --auth-user cli-xxxxx --auth-key fred http://orbit.brightbox.com/v1/acc-tqc4c/downloads/freedos.qcow2 file://tmp/temp`
62
62
  Then the exit status should not be 0
63
63
  And the stderr should contain "Cannot authenticate"
64
64
 
@@ -0,0 +1,115 @@
1
+ @orbit
2
+ @orbitdownloads
3
+ @old-qemu-image
4
+ Feature: Authenticated download of images from orbit
5
+ In order to download images from orbit
6
+ As a command line user
7
+ I want to retrieve the URI via an optional cache and copy correctly to target in the right format
8
+
9
+ Background:
10
+ Given an empty directory named "/tmp/uricp"
11
+ And the default aruba timeout is 15 seconds
12
+ And a container called "test"
13
+
14
+ Scenario: qcow download no conversion, no cache
15
+ When I retrieve "img-qcow2" from container "test" into "file:///tmp/uricp/srv-test1"
16
+ Then a file named "/tmp/uricp/srv-test1" should exist
17
+ And the file named "/tmp/uricp/srv-test1" should have a file format of "qcow2"
18
+
19
+ Scenario: lz4 download no conversion, no cache
20
+ When I retrieve "img-lz4cy" from container "test" into "file:///tmp/uricp/srv-test2"
21
+ Then a file named "/tmp/uricp/srv-test2" should exist
22
+ And the file named "/tmp/uricp/srv-test2" should have a file format of "lz4"
23
+
24
+ Scenario: qcow download no conversion, cache
25
+ Given a correctly initialised cache at "/tmp/uricp"
26
+ When I retrieve "img-qcow2" with options "--cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test3"
27
+ Then a file named "/tmp/uricp/srv-test3" should exist
28
+ And the file named "/tmp/uricp/srv-test3" should have a file format of "qcow2"
29
+ And a file named "/tmp/uricp/cache/img-qcow2" should exist
30
+ And the file named "/tmp/uricp/cache/img-qcow2" should have a file format of "qcow2"
31
+
32
+ Scenario: zero download convert to qcow2, cache
33
+ Given a correctly initialised cache at "/tmp/uricp"
34
+ When I retrieve "img-zeroy" with options "--target-format=qcow2 --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-testz"
35
+ Then a file named "/tmp/uricp/srv-testz" should exist
36
+ And the file named "/tmp/uricp/srv-testz" should have a file format of "qcow2"
37
+ And a 0 byte file named "/tmp/uricp/cache/img-zeroy" should exist
38
+ And the file named "/tmp/uricp/cache/img-zeroy" should have a file format of "raw"
39
+
40
+ Scenario: qcow download convert to raw, cache
41
+ Given a correctly initialised cache at "/tmp/uricp"
42
+ When I retrieve "img-qcow2" with options "--target-format=raw --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test4"
43
+ Then a file named "/tmp/uricp/srv-test4" should exist
44
+ And the file named "/tmp/uricp/srv-test4" should have a file format of "raw"
45
+ And a file named "/tmp/uricp/cache/img-qcow2" should exist
46
+ And the file named "/tmp/uricp/cache/img-qcow2" should have a file format of "qcow2"
47
+
48
+ Scenario: qcow download convert to qcow2, cache
49
+ Given a correctly initialised cache at "/tmp/uricp"
50
+ When I retrieve "img-qcow2" with options "--target-format=qcow2 --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test5"
51
+ Then a file named "/tmp/uricp/srv-test5" should exist
52
+ And the file named "/tmp/uricp/srv-test5" should have a file format of "qcow2"
53
+ And a file named "/tmp/uricp/cache/img-qcow2" should exist
54
+ And the file named "/tmp/uricp/cache/img-qcow2" should have a file format of "qcow2"
55
+
56
+ Scenario: qcow download no conversion, from cache
57
+ Given a correctly initialised cache at "/tmp/uricp"
58
+ And a cache of "img-qcow2" from container "test" at "/tmp/uricp"
59
+ When I retrieve "img-qcow2" with options "--cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test6"
60
+ Then a file named "/tmp/uricp/srv-test6" should exist
61
+ And the file named "/tmp/uricp/srv-test6" should have a file format of "qcow2"
62
+ And a file named "/tmp/uricp/cache/img-qcow2" should exist
63
+ And the file named "/tmp/uricp/cache/img-qcow2" should have a file format of "qcow2"
64
+
65
+ Scenario: qcow download convert to raw from cache
66
+ Given a correctly initialised cache at "/tmp/uricp"
67
+ And a cache of "img-qcow2" from container "test" at "/tmp/uricp"
68
+ When I retrieve "img-qcow2" with options "--target-format=raw --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test7"
69
+ Then a file named "/tmp/uricp/srv-test7" should exist
70
+ And the file named "/tmp/uricp/srv-test7" should have a file format of "raw"
71
+ And a file named "/tmp/uricp/cache/img-qcow2" should exist
72
+ And the file named "/tmp/uricp/cache/img-qcow2" should have a file format of "qcow2"
73
+
74
+ Scenario: qcow download convert to qcow2 from cache
75
+ Given a correctly initialised cache at "/tmp/uricp"
76
+ And a cache of "img-qcow2" from container "test" at "/tmp/uricp"
77
+ When I retrieve "img-qcow2" with options "--target-format=qcow2 --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test8"
78
+ Then a file named "/tmp/uricp/srv-test8" should exist
79
+ And the file named "/tmp/uricp/srv-test8" should have a file format of "qcow2"
80
+ And a file named "/tmp/uricp/cache/img-qcow2" should exist
81
+ And the file named "/tmp/uricp/cache/img-qcow2" should have a file format of "qcow2"
82
+
83
+ Scenario: lz4 download convert to raw, cache
84
+ Given a correctly initialised cache at "/tmp/uricp"
85
+ When I retrieve "img-lz4cy" with options "--target-format=raw --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-test9"
86
+ Then a file named "/tmp/uricp/srv-test9" should exist
87
+ And the file named "/tmp/uricp/srv-test9" should have a file format of "raw"
88
+ And a file named "/tmp/uricp/cache/img-lz4cy" should exist
89
+ And the file named "/tmp/uricp/cache/img-lz4cy" should have a file format of "lz4"
90
+
91
+ Scenario: lz4 download convert to raw, from cache
92
+ Given a correctly initialised cache at "/tmp/uricp"
93
+ And a cache of "img-lz4cy" from container "test" at "/tmp/uricp"
94
+ When I retrieve "img-lz4cy" with options "--target-format=raw --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-testa"
95
+ Then a file named "/tmp/uricp/srv-testa" should exist
96
+ And the file named "/tmp/uricp/srv-testa" should have a file format of "raw"
97
+ And a file named "/tmp/uricp/cache/img-lz4cy" should exist
98
+ And the file named "/tmp/uricp/cache/img-lz4cy" should have a file format of "lz4"
99
+
100
+ Scenario: lz4 download convert to qcow2, cache
101
+ Given a correctly initialised cache at "/tmp/uricp"
102
+ When I retrieve "img-lz4cy" with options "--target-format=qcow2 --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-testb"
103
+ Then a file named "/tmp/uricp/srv-testb" should exist
104
+ And the file named "/tmp/uricp/srv-testb" should have a file format of "qcow2"
105
+ And a file named "/tmp/uricp/cache/img-lz4cy" should exist
106
+ And the file named "/tmp/uricp/cache/img-lz4cy" should have a file format of "lz4"
107
+
108
+ Scenario: lz4 download convert to qcow2, from cache
109
+ Given a correctly initialised cache at "/tmp/uricp"
110
+ And a cache of "img-lz4cy" from container "test" at "/tmp/uricp"
111
+ When I retrieve "img-lz4cy" with options "--target-format=qcow2 --cache=/tmp/uricp" from container "test" into "file:///tmp/uricp/srv-testa"
112
+ Then a file named "/tmp/uricp/srv-testa" should exist
113
+ And the file named "/tmp/uricp/srv-testa" should have a file format of "qcow2"
114
+ And a file named "/tmp/uricp/cache/img-lz4cy" should exist
115
+ And the file named "/tmp/uricp/cache/img-lz4cy" should have a file format of "lz4"
@@ -37,6 +37,7 @@ Feature: Upload VM images with authentication
37
37
 
38
38
  Scenario: Direct segmented Upload with userid in qcow2 format
39
39
  Given a 102400 byte file named "/tmp/uricp/srv-testd"
40
+ And the default aruba timeout is 60 seconds
40
41
  And a correctly initialised cache at "/tmp/uricp"
41
42
  When I store "img-testd" with segment size "10kiB" and options "--target-format 'qcow2' --cache /tmp/uricp" into container "test_upload" from "file:///tmp/uricp/srv-testd" with a userid
42
43
  Then a qcow2 entry should exist in container "test_upload" called "img-testd"
@@ -50,6 +51,7 @@ Feature: Upload VM images with authentication
50
51
 
51
52
  Scenario: Direct upload with userid of zero byte file.
52
53
  Given an empty file named "/tmp/uricp/srv-zerob"
54
+ And the default aruba timeout is 60 seconds
53
55
  And a correctly initialised cache at "/tmp/uricp"
54
56
  When I store "img-zerob" with segment size "10kiB" and options "--target-format 'qcow2' --cache /tmp/uricp" into container "test_upload" from "file:///tmp/uricp/srv-zerob" with a userid
55
57
  Then a qcow2 entry should exist in container "test_upload" called "img-zerob"
@@ -25,3 +25,4 @@ Feature: Segmented Upload Command
25
25
  When I upload "img-testb" with segment size "10kib" into container "temp_dlo" from "/tmp/uricp/srv-testb" as a stream
26
26
  Then a 102400 byte entry should exist in container "temp_dlo" called "img-testb"
27
27
  And the container "temp_dlo" should contain 11 entries
28
+
@@ -20,7 +20,7 @@ Feature: Documented Help for Segmented Upload
20
20
  |to_uri|which is required|
21
21
 
22
22
  Scenario: auth token and auth-user are mutually exclusive
23
- When I run `segment_upload --auth-token abcdef --auth-user xyz --auth-key abc http://source file:///target`
23
+ When I run `segment_upload --auth-token abcdef --auth-user xyz --auth-key abc http://source`
24
24
  Then the exit status should not be 0
25
25
  And the stderr should contain "needless argument"
26
26
 
@@ -45,7 +45,7 @@ Feature: Documented Help for Segmented Upload
45
45
  And the stderr should contain "unsupported url"
46
46
 
47
47
  Scenario: authentication with normal http should fail
48
- When I run `segment_upload --auth-user cli-xxxxx --auth-key fred https://foss-lab-manual.googlecode.com/files`
48
+ When I run `segment_upload --auth-user cli-xxxxx --auth-key fred http://orbit.brightbox.com/v1/acc-tqs4c/downloads`
49
49
  Then the exit status should not be 0
50
50
  And the stderr should contain "Cannot authenticate"
51
51
 
@@ -1,21 +1,29 @@
1
1
  require 'inifile'
2
2
 
3
3
  def obtain_credentials
4
- config = IniFile.load(ENV['HOME']+ '/.brightbox/config') ||
5
- raise(RuntimeError, "No brightbox config in home directory. Can't obtain auth token for tests")
6
- section = config.sections.first
7
- [config[section]['client_id'], config[section]['secret']]
4
+ if ENV['ORBIT_USER'] && ENV['ORBIT_KEY']
5
+ [ENV['ORBIT_USER'], ENV['ORBIT_KEY']]
6
+ else
7
+ config = IniFile.load(ENV['HOME']+ '/.brightbox/config')
8
+ if config.nil? || config.sections.empty?
9
+ raise(RuntimeError, "No brightbox config in home directory. Can't obtain auth token for tests")
10
+ end
11
+ section = config.sections.first
12
+ [config[section]['client_id'], config[section]['secret']]
13
+ end
8
14
  end
9
15
 
10
16
  def fetch_orbit_token
11
17
  @clientid, @key = obtain_credentials
12
- cmd = "curl -I https://orbit.brightbox.com/v1 -H 'X-Auth-User: #{@clientid}' -H 'X-Auth-Key: #{@key}'"
18
+ @current_url_target = ENV['ORBIT_URL'] || 'https://orbit.brightbox.com/v1'
19
+ cmd = "curl -I #{@current_url_target} -H 'X-Auth-User: #{@clientid}' -H 'X-Auth-Key: #{@key}'"
13
20
  run_simple(unescape(cmd))
14
21
  stdout_from(cmd).each_line do |line|
15
22
  key, value = line.strip.split(/\s*:\s*/,2)
16
23
  @current_auth_token = value if key == 'X-Auth-Token'
17
24
  @current_storage_url = value if key == 'X-Storage-Url'
18
25
  end
26
+ raise(RuntimeError, "Credentials not accepted. Can't obtain auth token for tests.") unless @current_auth_token && @current_storage_url
19
27
  end
20
28
 
21
29
  def create_download_file(filetype, name, container)
@@ -30,7 +38,7 @@ def create_download_file(filetype, name, container)
30
38
  when 'zero'
31
39
  size = '0'
32
40
  end
33
- cmd = "qemu-img create -q -f #{format} #{tempfile} #{size}"
41
+ cmd = "qemu-img create -f #{format} #{tempfile} #{size} >/dev/null 2>&1"
34
42
  system(unescape(cmd))
35
43
  cmd = "cat #{tempfile}"
36
44
  if filetype == 'lz4'
@@ -60,9 +68,10 @@ Given(/^a cache of "(.*?)" from container "(.*?)" at "(.*?)"$/) do |name, contai
60
68
  end
61
69
 
62
70
  Given /^a (\d+) byte lz4 file named "([^"]*)"$/ do |file_size, file_name|
71
+ lz4_target=file_name+'.lz4'
63
72
  write_fixed_size_file(file_name, file_size.to_i)
64
- system("lz4c #{file_name}")
65
- File.rename file_name+'.lz4', file_name
73
+ system("lz4c #{file_name} #{lz4_target}")
74
+ File.rename lz4_target, file_name
66
75
  end
67
76
 
68
77
  When(/^I store "([^"]*)" into container "([^"]*)" from "([^"]*)"$/) do |name, container, source|
@@ -179,6 +188,11 @@ end
179
188
 
180
189
  Before('@orbit') do
181
190
  fetch_orbit_token
191
+ unless $orbit_setup
192
+ system("swift --quiet --insecure --os-storage-url=#{@current_storage_url} --os-auth-token=#{@current_auth_token} delete test")
193
+ system("swift --quiet --insecure --os-storage-url=#{@current_storage_url} --os-auth-token=#{@current_auth_token} delete temp_dlo")
194
+ system("swift --quiet --insecure --os-storage-url=#{@current_storage_url} --os-auth-token=#{@current_auth_token} delete test_upload")
195
+ end
182
196
  end
183
197
 
184
198
  Before('@orbitdownloads') do
@@ -194,9 +208,7 @@ end
194
208
 
195
209
  After('@orbit') do
196
210
  if @current_auth_token && @current_container
197
- steps %{
198
- When I successfully run `swift --os-storage-url=#{@current_storage_url} --os-auth-token=#{@current_auth_token} delete #{@current_container} #{@current_name}`
199
- }
211
+ system("swift --quiet --insecure --os-storage-url=#{@current_storage_url} --os-auth-token=#{@current_auth_token} delete #{@current_container} #{@current_name}")
200
212
  @current_container = @current_name = nil
201
213
  end
202
214
  end
@@ -10,11 +10,18 @@ Feature: User authenticated download of images from orbit
10
10
  And the default aruba timeout is 15 seconds
11
11
  And a container called "test"
12
12
 
13
- Scenario: qcow download no conversion, no cache with userid
13
+ @new-qemu-image
14
+ Scenario: qcow2v3 download no conversion, no cache with userid
14
15
  When I retrieve "img-qcow2" from container "test" into "file:///tmp/uricp/srv-test1" with a userid
15
16
  Then a file named "/tmp/uricp/srv-test1" should exist
16
17
  And the file named "/tmp/uricp/srv-test1" should have a file format of "qcow2v3"
17
18
 
19
+ @old-qemu-image
20
+ Scenario: qcow2 download no conversion, no cache with userid
21
+ When I retrieve "img-qcow2" from container "test" into "file:///tmp/uricp/srv-test1" with a userid
22
+ Then a file named "/tmp/uricp/srv-test1" should exist
23
+ And the file named "/tmp/uricp/srv-test1" should have a file format of "qcow2"
24
+
18
25
  Scenario: direct upload with userid
19
26
  Given a 102400 byte file named "/tmp/uricp/srv-testy"
20
27
  When I store "img-usrid" into container "test" from "file:///tmp/uricp/srv-testy" with a userid
@@ -21,7 +21,7 @@ unless IO.respond_to? :copy_stream
21
21
  return count
22
22
  else
23
23
  amount = copy_length.to_i
24
- buf_size = 2**16
24
+ buf_size = [amount, 2**16].min
25
25
  buffer=""
26
26
  while amount > 0 do
27
27
  src.read(buf_size, buffer)
data/lib/uricp/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Uricp
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  DEFAULT_SEGMENT_SIZE = "5 GiB"
4
4
  end
data/uricp.gemspec CHANGED
@@ -22,11 +22,12 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency('rdoc')
24
24
  spec.add_development_dependency('aruba')
25
+ spec.add_development_dependency('cucumber', '~> 1.3')
25
26
  spec.add_development_dependency('rake')
26
27
  spec.add_dependency('methadone', '~> 1.8.0')
27
28
  spec.add_dependency('open4', '~> 1.3.0')
28
29
  spec.add_dependency('filesize', '= 0.0.2')
29
30
  spec.add_dependency('sendfile', '~> 1.2.0')
30
31
  spec.add_development_dependency('rspec', '~> 2.99')
31
- spec.add_development_dependency('inifile', '~> 3.0')
32
+ spec.add_development_dependency('inifile', '~> 1.1')
32
33
  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.6
4
+ version: 0.0.7
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-03-17 00:00:00.000000000 Z
12
+ date: 2015-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -75,6 +75,22 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: cucumber
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '1.3'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.3'
78
94
  - !ruby/object:Gem::Dependency
79
95
  name: rake
80
96
  requirement: !ruby/object:Gem::Requirement
@@ -178,7 +194,7 @@ dependencies:
178
194
  requirements:
179
195
  - - ~>
180
196
  - !ruby/object:Gem::Version
181
- version: '3.0'
197
+ version: '1.1'
182
198
  type: :development
183
199
  prerelease: false
184
200
  version_requirements: !ruby/object:Gem::Requirement
@@ -186,7 +202,7 @@ dependencies:
186
202
  requirements:
187
203
  - - ~>
188
204
  - !ruby/object:Gem::Version
189
- version: '3.0'
205
+ version: '1.1'
190
206
  description: Copy one URL to another with optional cacheing
191
207
  email:
192
208
  - neil@aldur.co.uk
@@ -197,16 +213,22 @@ extensions: []
197
213
  extra_rdoc_files: []
198
214
  files:
199
215
  - .gitignore
216
+ - Dockerfile_centos6.6
217
+ - Dockerfile_centos7
218
+ - Dockerfile_trusty-ruby193
200
219
  - Gemfile
220
+ - Gemfile.lock
201
221
  - LICENSE.txt
202
222
  - README.md
203
223
  - README.rdoc
204
224
  - Rakefile
205
225
  - bin/segment_upload
206
226
  - bin/uricp
227
+ - cucumber.yml
207
228
  - features/auth_download.feature
208
229
  - features/cacheable_from_uri.feature
209
230
  - features/documented_options.feature
231
+ - features/qcow2_auth_download.feature
210
232
  - features/remote_upload.feature
211
233
  - features/segmented_upload.feature
212
234
  - features/segmented_upload_options.feature
@@ -269,6 +291,7 @@ test_files:
269
291
  - features/auth_download.feature
270
292
  - features/cacheable_from_uri.feature
271
293
  - features/documented_options.feature
294
+ - features/qcow2_auth_download.feature
272
295
  - features/remote_upload.feature
273
296
  - features/segmented_upload.feature
274
297
  - features/segmented_upload_options.feature