uricp 0.0.18 → 0.0.23

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d9944582044883ff45f3847042ca62016416d06198a0af41751de93ab992c646
4
- data.tar.gz: 19c14777647bb01fec3a4e6214e8183b29432843bf47b8b0c818d0401dafaea1
3
+ metadata.gz: f12b0071b707cd164565e756677d620c77aa4433161b28b4e2aed90e764f2e68
4
+ data.tar.gz: 2a226104ffad1d51b15e6a9ea015d94e058ff7728e66d3f0c708092e1764205b
5
5
  SHA512:
6
- metadata.gz: c157e985f79891ca962fb0b792dab2a4fab89bd651c15b940e75ba4baf0e86a42922b9dc8a0f96fa53b8de4151d3e9b6aeefac256ffe59faa2ed6ad5becfad47
7
- data.tar.gz: 45444dfcbc92079f7221d0f239315db22f6af749843f6a89312e949c1f12068a2254f6ffd8830a4ab00833e3b66d16d259cfcccb9388f24dde9ff23fbad99ee2
6
+ metadata.gz: 420a3273588f2fde0d78b12250be89b0c07fc0f82d9e4101c427780f871f021bba870ff88b14d5adf3dd9ed0c599a944474137040e8ea2f07aaadd326fa6eccc
7
+ data.tar.gz: 6cba1806fed37f14d5dad8402061f639f9d6e32df79caf66bd06c2bbabcbd68d460b71710ba76f676967301a1b878129b8b92bd7796f697f8159cc9a65da3c89
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- uricp (0.0.18)
4
+ uricp (0.0.23)
5
+ childprocess (~> 1.0)
5
6
  filesize (= 0.0.2)
6
- methadone (~> 2.0.0)
7
+ methadone (~> 2.0.2)
7
8
  open4 (~> 1.3.0)
8
9
  sendfile (~> 1.2.0)
9
10
 
data/Jenkinsfile CHANGED
@@ -2,6 +2,8 @@ pipeline {
2
2
  environment {
3
3
  ORBIT = credentials('ced8ecd0-dbe4-4bf6-bdde-101a661565f5')
4
4
  ORBIT_URL = credentials('c0c95c56-b4e9-45c2-85c5-bf292aef7301')
5
+ RBD = credentials('9bfb46f5-65eb-40c3-bfda-7ac5fe469ff4')
6
+ CEPH_MON = credentials('ceph-mon')
5
7
  ORBIT_USER = "${ORBIT_USR}"
6
8
  ORBIT_KEY = "${ORBIT_PSW}"
7
9
  }
@@ -14,100 +16,128 @@ pipeline {
14
16
  }
15
17
  agent none
16
18
  stages {
19
+ stage("AlmaLinux 8") {
20
+ agent {
21
+ dockerfile {
22
+ dir 'almalinux8'
23
+ label "docker"
24
+ additionalBuildArgs '--build-arg CEPH_MON --build-arg RBD_USR --build-arg RBD_PSW'
25
+ }
26
+ }
27
+ steps {
28
+ sh 'rbd --id "${RBD_USR}" ls servers'
29
+ sh 'bundle install --deployment'
30
+ sh 'bundle exec rake features:new_qemu'
31
+ }
32
+ post {
33
+ always {
34
+ sh 'bundle exec rake features:clean'
35
+ }
36
+ failure {
37
+ mail to: 'sysadmin@brightbox.co.uk',
38
+ subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
39
+ body: "${env.BUILD_URL}"
40
+ }
41
+ }
42
+ }
17
43
  stage("CentOS 7") {
18
44
  agent {
19
- dockerfile {
20
- dir 'centos7'
21
- label "docker"
22
- }
45
+ dockerfile {
46
+ dir 'centos7'
47
+ label "docker"
48
+ additionalBuildArgs '--build-arg CEPH_MON --build-arg RBD_USR --build-arg RBD_PSW'
49
+ }
23
50
  }
24
51
  steps {
25
- sh 'bundle install --deployment'
26
- sh 'bundle exec rake features:new_qemu'
52
+ sh 'rbd --id "${RBD_USR}" ls servers'
53
+ sh 'bundle install --deployment'
54
+ sh 'bundle exec rake features:new_qemu'
27
55
  }
28
56
  post {
29
57
  always {
30
- sh 'bundle exec rake features:clean'
31
- }
32
- failure {
33
- mail to: 'sysadmin@brightbox.co.uk',
34
- subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
35
- body: "${env.BUILD_URL}"
36
- }
58
+ sh 'bundle exec rake features:clean'
59
+ }
60
+ failure {
61
+ mail to: 'sysadmin@brightbox.co.uk',
62
+ subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
63
+ body: "${env.BUILD_URL}"
64
+ }
37
65
  }
38
66
  }
39
- stage("Xenial, Ruby 2.3.1") {
67
+ stage("Focal, Ruby 2.7.0") {
40
68
  agent {
41
- dockerfile {
42
- dir 'xenial'
43
- label "docker"
44
- }
69
+ dockerfile {
70
+ dir 'focal'
71
+ label "docker"
72
+ additionalBuildArgs '--build-arg CEPH_MON --build-arg RBD_USR --build-arg RBD_PSW'
73
+ }
45
74
  }
46
75
  steps {
47
- sh 'bundle install --deployment'
48
- sh 'bundle exec rake features:new_qemu'
76
+ sh 'rbd --id "${RBD_USR}" ls servers'
77
+ sh 'bundle install --deployment'
78
+ sh 'bundle exec rake features:new_qemu'
49
79
  }
50
80
  post {
51
81
  always {
52
- sh 'bundle exec rake features:clean'
53
- }
54
- failure {
55
- mail to: 'sysadmin@brightbox.co.uk',
56
- subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
57
- body: "${env.BUILD_URL}"
58
- }
82
+ sh 'bundle exec rake features:clean'
83
+ }
84
+ failure {
85
+ mail to: 'sysadmin@brightbox.co.uk',
86
+ subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
87
+ body: "${env.BUILD_URL}"
88
+ }
59
89
  }
60
90
  }
61
- stage("Bionic, Ruby 2.5.1") {
91
+ stage("Xenial, Ruby 2.3.1") {
62
92
  agent {
63
- dockerfile {
64
- dir 'bionic'
65
- label "docker"
66
- }
93
+ dockerfile {
94
+ dir 'xenial'
95
+ label "docker"
96
+ }
67
97
  }
68
98
  steps {
69
- sh 'bundle install --deployment'
70
- sh 'bundle exec rake features:new_qemu'
99
+ sh 'bundle install --deployment'
100
+ sh 'bundle exec rake features:new_qemu'
71
101
  }
72
102
  post {
73
103
  always {
74
- sh 'bundle exec rake features:clean'
75
- }
76
- failure {
77
- mail to: 'sysadmin@brightbox.co.uk',
78
- subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
79
- body: "${env.BUILD_URL}"
80
- }
104
+ sh 'bundle exec rake features:clean'
105
+ }
106
+ failure {
107
+ mail to: 'sysadmin@brightbox.co.uk',
108
+ subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
109
+ body: "${env.BUILD_URL}"
110
+ }
81
111
  }
82
112
  }
83
- stage("Focal, Ruby 2.7.0") {
113
+ stage("Bionic, Ruby 2.5.1") {
84
114
  agent {
85
- dockerfile {
86
- dir 'focal'
87
- label "docker"
88
- }
115
+ dockerfile {
116
+ dir 'bionic'
117
+ label "docker"
118
+ }
89
119
  }
90
120
  steps {
91
- sh 'bundle install --deployment'
92
- sh 'bundle exec rake features:new_qemu'
121
+ sh 'bundle install --deployment'
122
+ sh 'bundle exec rake features:new_qemu'
93
123
  }
94
124
  post {
95
125
  always {
96
- sh 'bundle exec rake features:clean'
97
- }
98
- failure {
99
- mail to: 'sysadmin@brightbox.co.uk',
100
- subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
101
- body: "${env.BUILD_URL}"
102
- }
126
+ sh 'bundle exec rake features:clean'
127
+ }
128
+ failure {
129
+ mail to: 'sysadmin@brightbox.co.uk',
130
+ subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
131
+ body: "${env.BUILD_URL}"
132
+ }
103
133
  }
104
134
  }
105
135
  }
106
136
  post {
107
137
  failure {
108
- mail to: 'sysadmin@brightbox.co.uk',
109
- subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
110
- body: "${env.BUILD_URL}"
138
+ mail to: 'sysadmin@brightbox.co.uk',
139
+ subject: "Uricp Tests Failed: ${currentBuild.fullDisplayName}",
140
+ body: "${env.BUILD_URL}"
111
141
  }
112
142
  }
113
143
  }
data/Rakefile CHANGED
@@ -48,6 +48,11 @@ namespace(:features) do
48
48
  t.fork = false
49
49
  t.profile = 'old-qemu-image'
50
50
  end
51
+ Cucumber::Rake::Task.new(:rbd) do |t|
52
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty --no-source -x"
53
+ t.fork = false
54
+ t.profile = 'rbd'
55
+ end
51
56
 
52
57
  task(:clean) do
53
58
  if ENV['ORBIT_USER'] && ENV['ORBIT_KEY']
@@ -0,0 +1,26 @@
1
+ FROM almalinux:8
2
+ MAINTAINER support@brightbox.co.uk
3
+
4
+ RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
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
7
+ RUN dnf -y update
8
+ RUN dnf config-manager --set-enabled powertools,devel
9
+ 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
+ RUN dnf -y install https://www.rdoproject.org/repos/rdo-release.el8.rpm
12
+ RUN dnf -y install \
13
+ git \
14
+ lz4 \
15
+ qemu-img \
16
+ ruby-devel \
17
+ rubygems \
18
+ rubygem-bundler \
19
+ python3-swiftclient \
20
+ ceph-common
21
+ RUN mkdir -p /etc/ceph
22
+ ARG RBD_USR=libvirt
23
+ ARG RBD_PSW
24
+ ARG CEPH_MON
25
+ RUN echo -e "[client.$RBD_USR]\nkey = $RBD_PSW\n" > /etc/ceph/ceph.client.$RBD_USR.keyring
26
+ RUN echo -e "[global]\nmon_host = $CEPH_MON\n" > /etc/ceph/ceph.conf
data/bin/uricp CHANGED
@@ -4,7 +4,8 @@ require 'optparse'
4
4
  require 'uri'
5
5
  require 'methadone'
6
6
  require 'filesize'
7
- require 'uricp.rb'
7
+ require 'securerandom'
8
+ require 'uricp'
8
9
 
9
10
  class App
10
11
  include Methadone::Main
@@ -52,20 +53,32 @@ class App
52
53
  def self.build_command
53
54
  command_sequence = Uricp::UriStrategy.choose_strategy(options)
54
55
  debug "#{self.name} Command sequence is #{command_sequence.inspect}"
55
- command_sequence.map{|c| c.command}.join('')
56
+ command_sequence.map do |c|
57
+ debug c.class.name
58
+ c.command
59
+ end.join('')
56
60
  end
57
61
 
58
62
  def self.validate_options
59
- unless options['cache']
60
- case
61
- when options['target-format']
62
- raise ::OptionParser::MissingArgument,
63
- "'target-format' requires 'cache' option"
64
- when options['max-cache']
65
- raise ::OptionParser::MissingArgument,
66
- "'max-cache' requires 'cache' option"
67
- end
63
+ case
64
+ when options['from_uri'].path.nil?
65
+ raise ::OptionParser::InvalidArgument,
66
+ "'from_uri' has missing path"
67
+ when options['to_uri'].path.nil?
68
+ raise ::OptionParser::InvalidArgument,
69
+ "'to_uri' has missing path"
68
70
  end
71
+ return if options['cache']
72
+
73
+ case
74
+ when options['target-format']
75
+ raise ::OptionParser::MissingArgument,
76
+ "'target-format' requires 'cache' option"
77
+ when options['max-cache']
78
+ raise ::OptionParser::MissingArgument,
79
+ "'max-cache' requires 'cache' option"
80
+ end
81
+
69
82
  end
70
83
 
71
84
  def self.add_cache_name
@@ -109,6 +122,8 @@ class App
109
122
  "Compress output")
110
123
  on("--[no-]dry-run",
111
124
  "Show what would be run,", "but don't run the command")
125
+ on("--dry-cache DRY_CACHE",[:rbd, :partial_rbd],
126
+ "On dry runs assume the cache is populated", "[rbd, partial_rbd]")
112
127
  on("--[no-]force",
113
128
  "Always write sparsely")
114
129
  #Arguments
data/bionic/Dockerfile CHANGED
@@ -1,6 +1,8 @@
1
1
  FROM ubuntu:bionic
2
2
  MAINTAINER support@brightbox.co.uk
3
3
 
4
+ RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
5
+
4
6
  RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq software-properties-common
5
7
 
6
8
  #RUN apt-add-repository ppa:brightbox/ruby-ng
@@ -16,5 +18,4 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
16
18
  python-swiftclient \
17
19
  ruby-bundler
18
20
 
19
- RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
20
21
 
data/centos7/Dockerfile CHANGED
@@ -1,18 +1,25 @@
1
1
  FROM centos:7
2
2
  MAINTAINER support@brightbox.co.uk
3
3
 
4
- RUN yum update -y && yum -y install \
5
- epel-release \
4
+ RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
5
+ RUN yum update -y
6
+ RUN yum -y install \
7
+ centos-release-openstack-train \
8
+ epel-release
9
+ RUN yum -y install \
6
10
  gcc \
7
11
  make \
8
12
  git \
9
13
  qemu-img \
14
+ lz4 \
10
15
  ruby-devel \
11
16
  rubygems \
12
- rubygem-bundler
13
-
14
- RUN yum -y install centos-release-openstack-train && \
15
- yum -y install python-swiftclient
16
-
17
- RUN echo "gem: --no-ri --no-rdoc" >> "$HOME/.gemrc"
18
-
17
+ rubygem-bundler \
18
+ ceph-common \
19
+ python-swiftclient
20
+ RUN mkdir -p /etc/ceph
21
+ ARG RBD_USR=libvirt
22
+ ARG RBD_PSW
23
+ ARG CEPH_MON
24
+ RUN echo -e "[client.$RBD_USR]\nkey = $RBD_PSW\n" > /etc/ceph/ceph.client.$RBD_USR.keyring
25
+ RUN echo -e "[global]\nmon_host = $CEPH_MON\n" > /etc/ceph/ceph.conf
data/cucumber.yml CHANGED
@@ -1,3 +1,4 @@
1
1
  default: --profile new-qemu-image
2
2
  new-qemu-image: --tags ~@old-qemu-image
3
3
  old-qemu-image: --tags ~@new-qemu-image
4
+ rbd: --tags @rbd
@@ -0,0 +1,14 @@
1
+ Feature: Check URI paths
2
+ In order to ensure reliable uricp usage
3
+ As a command line user
4
+ I want to reject badly formed URIs
5
+
6
+ Scenario: source URI is incorrectly formatted
7
+ When I run `uricp --dry-run file:fred rbd:///servers/fred`
8
+ Then the exit status should not be 0
9
+ And the stderr should contain "invalid argument: 'from_uri' has missing path"
10
+
11
+ Scenario: target URI is incorrectly formatted
12
+ When I run `uricp --dry-run file:///fred rbd:servers/fred`
13
+ Then the exit status should not be 0
14
+ And the stderr should contain "invalid argument: 'to_uri' has missing path"
@@ -0,0 +1,248 @@
1
+ @rbd
2
+ Feature: Manipulate file images in ceph
3
+ in order to manipulate file images in ceph
4
+ as a command line user
5
+ I want to retrieve the uri via an optional cache and copy correctly to target in the right format
6
+
7
+ background:
8
+ given an empty directory named "/tmp/uricp"
9
+ and the default aruba timeout is 15 seconds
10
+
11
+ Scenario: HTTP URI qcow2 to rbd - no cache
12
+ When I successfully run `uricp --dry-run http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 rbd:///servers/srv-testy`
13
+ And the output should contain:
14
+ """
15
+ rbd import --no-progress --id libvirt - 'servers/srv-testy'
16
+ """
17
+
18
+ Scenario: HTTP URI qcow2 to raw via unpopulated rbd cache
19
+ Given a correctly initialised cache at "/tmp/uricp"
20
+ When I successfully run `uricp --dry-run --target-format=raw --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 rbd:///servers/srv-testy`
21
+ And the output should contain:
22
+ """
23
+ rbd import --no-progress --id libvirt - 'servers/freedos.qcow2'
24
+ """
25
+ And the output should contain:
26
+ """
27
+ rbd snap create --id libvirt 'servers/freedos.qcow2@base'
28
+ """
29
+ And the output should contain:
30
+ """
31
+ rbd snap protect --id libvirt 'servers/freedos.qcow2@base'
32
+ """
33
+ And the output should contain:
34
+ """
35
+ rbd clone --id libvirt 'servers/freedos.qcow2@base' 'servers/srv-testy'
36
+ """
37
+
38
+ Scenario: HTTP URI from file cache via unpopulated rbd cache
39
+ Given a correctly initialised cache at "/tmp/uricp"
40
+ And a 102400 byte file named "/tmp/uricp/cache/freedos.qcow2"
41
+ When I successfully run `uricp --dry-run --target-format=raw --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 rbd:///servers/srv-testy`
42
+ And the output should contain:
43
+ """
44
+ rbd import --no-progress --id libvirt '/tmp/uricp/cache/freedos.qcow2' 'servers/freedos.qcow2'
45
+ """
46
+ And the output should contain:
47
+ """
48
+ rbd snap create --id libvirt 'servers/freedos.qcow2@base'
49
+ """
50
+ And the output should contain:
51
+ """
52
+ rbd snap protect --id libvirt 'servers/freedos.qcow2@base'
53
+ """
54
+ And the output should contain:
55
+ """
56
+ rbd clone --id libvirt 'servers/freedos.qcow2@base' 'servers/srv-testy'
57
+ """
58
+
59
+ Scenario: HTTP URI to rbd via partial rbd caches
60
+ Given a correctly initialised cache at "/tmp/uricp"
61
+ When I successfully run `uricp --dry-run --dry-cache=partial_rbd --target-format=raw --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 rbd:///servers/srv-testy`
62
+ And the output should not contain:
63
+ """
64
+ snap create
65
+ """
66
+ And the output should contain:
67
+ """
68
+ rbd import --no-progress --id libvirt - 'servers/srv-testy'
69
+ """
70
+
71
+ Scenario: HTTP URI to rbd via populated cache
72
+ Given a correctly initialised cache at "/tmp/uricp"
73
+ When I successfully run `uricp --dry-run --dry-cache=rbd --target-format=raw --cache=/tmp/uricp http://orbit.brightbox.com/v1/acc-tqs4c/downloads/freedos.qcow2 rbd:///servers/srv-testy`
74
+ And the output should not contain:
75
+ """
76
+ snap create
77
+ """
78
+ And the output should contain:
79
+ """
80
+ rbd clone --id libvirt 'servers/freedos.qcow2@base' 'servers/srv-testy'
81
+ """
82
+
83
+ Scenario: rbd to rbd - no cache
84
+ Given a correctly initialised cache at "/tmp/uricp"
85
+ When I successfully run `uricp --dry-run rbd:///servers/img-testy rbd:///servers/srv-testy`
86
+ And the output should contain:
87
+ """
88
+ rbd snap create --id libvirt 'servers/img-testy@uricp_snap'
89
+ """
90
+ And the output should contain:
91
+ """
92
+ rbd snap protect --id libvirt 'servers/img-testy@uricp_snap'
93
+ """
94
+ And the output should not contain:
95
+ """
96
+ rbd snap unprotect --id libvirt 'servers/img-testy@uricp_snap'
97
+ """
98
+ And the output should not contain:
99
+ """
100
+ rbd snap rm --id libvirt 'servers/img-testy@uricp_snap'
101
+ """
102
+ And the output should contain:
103
+ """
104
+ rbd clone --id libvirt 'servers/img-testy@uricp_snap' 'servers/srv-testy'
105
+ """
106
+
107
+ Scenario: rbd to rbd - unpopulated cache
108
+ Given a correctly initialised cache at "/tmp/uricp"
109
+ When I successfully run `uricp --dry-run --cache=/tmp/uricp rbd:///servers/srv-testy rbd:///servers/img-testy`
110
+ And the output should contain:
111
+ """
112
+ rbd snap create --id libvirt 'servers/srv-testy@uricp_snap'
113
+ """
114
+ And the output should contain:
115
+ """
116
+ rbd snap protect --id libvirt 'servers/srv-testy@uricp_snap'
117
+ """
118
+ And the output should not contain:
119
+ """
120
+ rbd snap unprotect --id libvirt 'servers/srv-testy@uricp_snap'
121
+ """
122
+ And the output should not contain:
123
+ """
124
+ rbd snap rm --id libvirt 'servers/srv-testy@uricp_snap'
125
+ """
126
+ And the output should not contain:
127
+ """
128
+ rbd export --no-progress --id libvirt 'servers/srv-testy@uricp_snap' -
129
+ """
130
+ And the output should contain:
131
+ """
132
+ rbd clone --id libvirt 'servers/srv-testy@uricp_snap' 'servers/img-testy'
133
+ """
134
+ And the output should not contain:
135
+ """
136
+ rbd export --no-progress --id libvirt 'servers/img-testy@base' -
137
+ """
138
+ And the output should contain:
139
+ """
140
+ rbd snap create --id libvirt 'servers/img-testy@base'
141
+ """
142
+ And the output should contain:
143
+ """
144
+ rbd snap protect --id libvirt 'servers/img-testy@base'
145
+ """
146
+
147
+ Scenario: rbd to rbd - partial cache
148
+ Given a correctly initialised cache at "/tmp/uricp"
149
+ When I run `uricp --dry-run --dry-cache=partial_rbd --cache=/tmp/uricp rbd:///servers/srv-testy rbd:///servers/img-testy`
150
+ Then the exit status should be 70
151
+ And the output should contain:
152
+ """
153
+ Unsupported transfer
154
+ """
155
+
156
+ Scenario: rbd to rbd - populated cache
157
+ Given a correctly initialised cache at "/tmp/uricp"
158
+ When I successfully run `uricp --dry-run --dry-cache=rbd --cache=/tmp/uricp rbd:///servers/img-testy rbd:///servers/srv-testy`
159
+ And the output should not contain:
160
+ """
161
+ snap create
162
+ """
163
+ And the output should contain:
164
+ """
165
+ rbd clone --id libvirt 'servers/img-testy@base' 'servers/srv-testy'
166
+ """
167
+
168
+ Scenario: RBD export.
169
+ Given a correctly initialised cache at "/tmp/uricp"
170
+ When I successfully run `uricp --dry-run --compress rbd:///servers/srv-testy file:///tmp/img-testy`
171
+ And the output should contain:
172
+ """
173
+ rbd snap create --id libvirt 'servers/srv-testy@uricp_snap'
174
+ """
175
+ And the output should contain:
176
+ """
177
+ rbd snap protect --id libvirt 'servers/srv-testy@uricp_snap'
178
+ """
179
+ And the output should contain:
180
+ """
181
+ rbd snap unprotect --id libvirt 'servers/srv-testy@uricp_snap'
182
+ """
183
+ And the output should contain:
184
+ """
185
+ rbd snap rm --id libvirt 'servers/srv-testy@uricp_snap'
186
+ """
187
+ And the output should contain:
188
+ """
189
+ rbd export --no-progress --id libvirt 'servers/srv-testy@uricp_snap' -
190
+ """
191
+
192
+ Scenario: RBD export with cacheing - populated cache
193
+ Given a correctly initialised cache at "/tmp/uricp"
194
+ When I run `uricp --dry-run --dry-cache=rbd --compress --cache=/tmp/uricp rbd:///servers/srv-testy file:///tmp/img-testy`
195
+ Then the exit status should be 70
196
+ And the output should contain:
197
+ """
198
+ Unsupported transfer
199
+ """
200
+
201
+ Scenario: RBD export with cacheing - partial cache
202
+ Given a correctly initialised cache at "/tmp/uricp"
203
+ When I run `uricp --dry-run --dry-cache=partial_rbd --compress --cache=/tmp/uricp rbd:///servers/srv-testy file:///tmp/img-testy`
204
+ Then the exit status should be 70
205
+ And the output should contain:
206
+ """
207
+ Unsupported transfer
208
+ """
209
+
210
+ Scenario: RBD export with cacheing - empty cache
211
+ Given a correctly initialised cache at "/tmp/uricp"
212
+ When I successfully run `uricp --dry-run --compress --cache=/tmp/uricp rbd:///servers/srv-testy file:///tmp/img-testy`
213
+ And the output should contain:
214
+ """
215
+ rbd snap create --id libvirt 'servers/srv-testy@uricp_snap'
216
+ """
217
+ And the output should contain:
218
+ """
219
+ rbd snap protect --id libvirt 'servers/srv-testy@uricp_snap'
220
+ """
221
+ And the output should not contain:
222
+ """
223
+ rbd snap unprotect --id libvirt 'servers/srv-testy@uricp_snap'
224
+ """
225
+ And the output should not contain:
226
+ """
227
+ rbd snap rm --id libvirt 'servers/srv-testy@uricp_snap'
228
+ """
229
+ And the output should not contain:
230
+ """
231
+ rbd export --no-progress --id libvirt 'servers/srv-testy@uricp_snap' -
232
+ """
233
+ And the output should contain:
234
+ """
235
+ rbd clone --id libvirt 'servers/srv-testy@uricp_snap' 'servers/img-testy'
236
+ """
237
+ And the output should contain:
238
+ """
239
+ rbd export --no-progress --id libvirt 'servers/img-testy@base' -
240
+ """
241
+ And the output should contain:
242
+ """
243
+ rbd snap create --id libvirt 'servers/img-testy@base'
244
+ """
245
+ And the output should contain:
246
+ """
247
+ rbd snap protect --id libvirt 'servers/img-testy@base'
248
+ """
@@ -0,0 +1,8 @@
1
+ Then(/^a ceph entry named "(.*?)" should exist$/) do |arg1|
2
+ pending # express the regexp above with the code you wish you had
3
+ end
4
+
5
+ Then(/^a ceph snapshot named "(.*?)" should exist$/) do |arg1|
6
+ pending # express the regexp above with the code you wish you had
7
+ end
8
+