vagrant-proxmox 0.0.8 → 0.0.9

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
  SHA1:
3
- metadata.gz: 50fcfd510ddb0e1f43e6a95d0247c236ea42fdec
4
- data.tar.gz: 9b92370c07abe2d0d97d8fec096e375ec30ef29b
3
+ metadata.gz: 4565859e642abb0c27f2447e318af6947fa1c1a1
4
+ data.tar.gz: 2d1c4fbf9d77a08728d95a83d2acf818e422b82d
5
5
  SHA512:
6
- metadata.gz: d40ea752d5c8bf0e8ef6b9386c9a17805e48d84b8118654fd601dc6c64768fdbeceda58014f9eca43fc87282d87a1b9591e2d4fdaa9794a5ad79d174e01936b5
7
- data.tar.gz: 95c7d2f1e2d4c429f75389500962d6a3640f91ea351dc6b47aafac3f9401105f8193abd8bd4ec16a62177ec8f8ff4b83725d73a2f5d0dd7b0e79571797ec9518
6
+ metadata.gz: b8e544f6029a57e4c13d2a6b9cf56269879defcce1d8fa34b2f45bbf64bb13d7baad5777f8be94c4b0d5a40fd69cfba29c8d55b2f62ca8cee28db1fd1dfbd2a1
7
+ data.tar.gz: a9f4ef692d5f8eeaa0d11292e1804bda3f3dbad3bc62c3d1c97af5365f0cb4c07761f23e65f1417c36119580e3a2e1d8f31cde880098c625a1a500e08a1c1f75
@@ -9,7 +9,7 @@ module VagrantPlugins
9
9
  end
10
10
 
11
11
  def call env
12
- env[:ui].info I18n.t('vagrant_proxmox.errors.upload_server_error')
12
+ env[:ui].info I18n.t('vagrant_proxmox.errors.server_upload_error')
13
13
  next_action env
14
14
  end
15
15
 
@@ -14,16 +14,16 @@ module VagrantPlugins
14
14
  env[:result] = :ok
15
15
  config = env[:machine].provider_config
16
16
  if config.qemu_iso_file
17
- env[:result] = upload_file env, config.qemu_iso_file
17
+ env[:result] = upload_file env, config.qemu_iso_file, config.replace_qemu_iso_file
18
18
  end
19
19
  next_action env
20
20
  end
21
21
 
22
22
  private
23
- def upload_file env, filename
23
+ def upload_file env, filename, replace
24
24
  if File.exist? filename
25
25
  begin
26
- connection(env).upload_file(filename, content_type: 'iso', node: env[:proxmox_selected_node], storage: 'local')
26
+ connection(env).upload_file(filename, content_type: 'iso', node: env[:proxmox_selected_node], storage: 'local', replace: replace)
27
27
  :ok
28
28
  rescue
29
29
  :server_upload_error
@@ -14,16 +14,16 @@ module VagrantPlugins
14
14
  env[:result] = :ok
15
15
  config = env[:machine].provider_config
16
16
  if config.openvz_template_file
17
- env[:result] = upload_file env, config.openvz_template_file
17
+ env[:result] = upload_file env, config.openvz_template_file, config.replace_openvz_template_file
18
18
  end
19
19
  next_action env
20
20
  end
21
21
 
22
22
  private
23
- def upload_file env, filename
23
+ def upload_file env, filename, replace
24
24
  if File.exist? filename
25
25
  begin
26
- connection(env).upload_file(filename, content_type: 'vztmpl', node: env[:proxmox_selected_node], storage: 'local')
26
+ connection(env).upload_file(filename, content_type: 'vztmpl', node: env[:proxmox_selected_node], storage: 'local', replace: replace)
27
27
  :ok
28
28
  rescue
29
29
  :server_upload_error
@@ -37,6 +37,11 @@ module VagrantPlugins
37
37
  # @return [String]
38
38
  attr_accessor :openvz_template_file
39
39
 
40
+ # Should the openvz os template be replaced (deleted before upload)?
41
+ #
42
+ # @return [Boolean]
43
+ attr_accessor :replace_openvz_template_file
44
+
40
45
  # The id range to use for the virtual machines
41
46
  #
42
47
  # @return [Range]
@@ -102,6 +107,11 @@ module VagrantPlugins
102
107
  # @return [String]
103
108
  attr_accessor :qemu_iso_file
104
109
 
110
+ # Should the qemu iso file replaced (deleted before upload)?
111
+ #
112
+ # @return [Boolean]
113
+ attr_accessor :replace_qemu_iso_file
114
+
105
115
  # The qemu disk size to use for the virtual machine, e.g. '30G'
106
116
  #
107
117
  # @return [String]
@@ -133,6 +143,7 @@ module VagrantPlugins
133
143
  @vm_type = UNSET_VALUE
134
144
  @openvz_os_template = UNSET_VALUE
135
145
  @openvz_template_file = UNSET_VALUE
146
+ @replace_openvz_template_file = false
136
147
  @vm_id_range = 900..999
137
148
  @vm_name_prefix = 'vagrant_'
138
149
  @vm_memory = 512
@@ -146,6 +157,7 @@ module VagrantPlugins
146
157
  @qemu_sockets = 1
147
158
  @qemu_iso = UNSET_VALUE
148
159
  @qemu_iso_file = UNSET_VALUE
160
+ @replace_qemu_iso_file = false
149
161
  @qemu_disk_size = UNSET_VALUE
150
162
  @qemu_storage = 'raid'
151
163
  @qemu_nic_model = 'e1000'
@@ -126,7 +126,8 @@ module VagrantPlugins
126
126
  free_vm_ids.empty? ? raise(VagrantPlugins::Proxmox::Errors::NoVmIdAvailable) : free_vm_ids.first
127
127
  end
128
128
 
129
- def upload_file file, content_type: required('content_type'), node: required('node'), storage: required('storage')
129
+ def upload_file file, content_type: required('content_type'), node: required('node'), storage: required('storage'), replace: false
130
+ delete_file(filename: file, content_type: content_type, node: node, storage: storage) if replace
130
131
  unless is_file_in_storage? filename: file, node: node, storage: storage
131
132
  res = post "/nodes/#{node}/storage/#{storage}/upload", content: content_type,
132
133
  filename: File.new(file, 'rb'), node: node, storage: storage
@@ -134,6 +135,10 @@ module VagrantPlugins
134
135
  end
135
136
  end
136
137
 
138
+ def delete_file filename: required('filename'), content_type: required('content_type'), node: required('node'), storage: required('storage')
139
+ delete "/nodes/#{node}/storage/#{storage}/content/#{content_type}/#{File.basename filename}"
140
+ end
141
+
137
142
  def list_storage_files node: required('node'), storage: required('storage')
138
143
  res = get "/nodes/#{node}/storage/#{storage}/content"
139
144
  res[:data].map { |e| e[:volid] }
@@ -146,9 +151,9 @@ module VagrantPlugins
146
151
  def get_vm_info vm_id
147
152
  response = get '/cluster/resources?type=vm'
148
153
  response[:data]
149
- .select { |m| m[:id] =~ /^[a-z]*\/#{vm_id}$/ }
150
- .map { |m| {id: vm_id, type: /^(.*)\/(.*)$/.match(m[:id])[1], node: m[:node]} }
151
- .first
154
+ .select { |m| m[:id] =~ /^[a-z]*\/#{vm_id}$/ }
155
+ .map { |m| {id: vm_id, type: /^(.*)\/(.*)$/.match(m[:id])[1], node: m[:node]} }
156
+ .first
152
157
  end
153
158
 
154
159
  private
@@ -175,7 +180,7 @@ module VagrantPlugins
175
180
  end
176
181
 
177
182
  private
178
- def delete path
183
+ def delete path, params = {}
179
184
  begin
180
185
  response = RestClient.delete "#{api_url}#{path}", headers
181
186
  JSON.parse response.to_s, symbolize_names: true
@@ -1,7 +1,7 @@
1
1
  module VagrantPlugins
2
2
  module Proxmox
3
3
 
4
- VERSION = '0.0.8'
4
+ VERSION = '0.0.9'
5
5
 
6
6
  end
7
7
  end
data/locales/en.yml CHANGED
@@ -40,6 +40,8 @@ en:
40
40
  stop_vm_timeout: |-
41
41
  Stopping the vm on the proxmox server timed out.
42
42
  timeout: 'Timeout error'
43
+ upload_timeout: |-
44
+ Uploading a file to the proxmox server timed out.
43
45
  vm_create_error: |-
44
46
  Unable to create the virtual machine!
45
47
 
@@ -64,7 +66,7 @@ en:
64
66
  VM must be running to execute this command. Run `vagrant up`
65
67
  to start the virtual machine.
66
68
  file_not_found: "File for upload not found"
67
- upload_server_error: "Error during upload"
69
+ server_upload_error: "Error during upload"
68
70
  ssh_error: Unable to establish an ssh connection to the virtual machine...
69
71
  no_vm_type_specified: "No vm_type specified"
70
72
  no_qemu_iso_or_qemu_iso_file_specified_for_vm_type_openvz: "No qemu_iso or qemu_iso_file specified for vm_type=:qemu"
@@ -11,29 +11,41 @@ module VagrantPlugins::Proxmox
11
11
  proxmox_connection: connection, proxmox_selected_node: node} }
12
12
  let(:iso_file) { 'some_iso.iso' }
13
13
  let(:iso_file_exists) { true }
14
+ let(:replace_iso_file) { false }
14
15
  let(:node) { 'node1' }
15
16
 
16
17
  subject(:action) { described_class.new(-> (_) {}, environment) }
17
18
 
18
19
  before do
19
20
  env[:machine].provider_config.qemu_iso_file = iso_file
21
+ env[:machine].provider_config.replace_qemu_iso_file = replace_iso_file
20
22
  allow(File).to receive(:exist?).with(iso_file).and_return(iso_file_exists)
21
23
  end
22
24
 
23
25
  context 'with a specified iso file' do
24
26
 
25
27
  it 'should upload the iso file into the local storage of the selected node' do
26
- expect(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local')
28
+ expect(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local', replace: replace_iso_file)
27
29
  action.call env
28
30
  end
29
31
  end
30
32
 
31
33
  it 'should return :ok after a successful upload' do
32
- allow(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local')
34
+ allow(connection).to receive(:upload_file).with(iso_file, content_type: 'iso', node: node, storage: 'local', replace: replace_iso_file)
33
35
  action.call env
34
36
  expect(env[:result]).to eq(:ok)
35
37
  end
36
38
 
39
+ context 'The iso file should be replaced' do
40
+
41
+ let(:replace_iso_file) { true }
42
+
43
+ it 'should delete the iso file on the server' do
44
+ expect(connection).to receive(:delete_file).with(filename: iso_file, content_type: 'iso', node: node, storage: 'local')
45
+ action.call env
46
+ end
47
+ end
48
+
37
49
  context 'when a server error occurs' do
38
50
 
39
51
  before do
@@ -67,4 +79,4 @@ module VagrantPlugins::Proxmox
67
79
  end
68
80
  end
69
81
  end
70
- end
82
+ end
@@ -11,29 +11,41 @@ module VagrantPlugins::Proxmox
11
11
  proxmox_connection: connection, proxmox_selected_node: node} }
12
12
  let(:template_file) { 'template.tar.gz' }
13
13
  let(:template_file_exists) { true }
14
+ let(:replace_template_file) { false }
14
15
  let(:node) { 'node1' }
15
16
 
16
17
  subject(:action) { described_class.new(-> (_) {}, environment) }
17
18
 
18
19
  before do
19
20
  env[:machine].provider_config.openvz_template_file = template_file
21
+ env[:machine].provider_config.replace_openvz_template_file = replace_template_file
20
22
  allow(File).to receive(:exist?).with(template_file).and_return(template_file_exists)
21
23
  end
22
24
 
23
25
  context 'with a specified template file' do
24
26
 
25
27
  it 'should upload the template file into the local storage of the selected node' do
26
- expect(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local')
28
+ expect(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local', replace: replace_template_file)
27
29
  action.call env
28
30
  end
29
31
  end
30
32
 
31
33
  it 'should return :ok after a successful upload' do
32
- allow(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local')
34
+ allow(connection).to receive(:upload_file).with(template_file, content_type: 'vztmpl', node: node, storage: 'local', replace: replace_template_file)
33
35
  action.call env
34
36
  expect(env[:result]).to eq(:ok)
35
37
  end
36
38
 
39
+ context 'the template file should be replaced' do
40
+
41
+ let(:replace_template_file) { true }
42
+
43
+ it 'should delete the template file on the server' do
44
+ expect(connection).to receive(:delete_file).with(filename: template_file, content_type: 'vztmpl', node: node, storage: 'local')
45
+ action.call env
46
+ end
47
+ end
48
+
37
49
  context 'when a server error occurs' do
38
50
 
39
51
  before do
@@ -67,4 +79,4 @@ module VagrantPlugins::Proxmox
67
79
  end
68
80
  end
69
81
  end
70
- end
82
+ end
data/spec/config_spec.rb CHANGED
@@ -36,6 +36,11 @@ describe VagrantPlugins::Proxmox::Config do
36
36
  it { is_expected.to be_nil }
37
37
  end
38
38
 
39
+ describe '#replace_openvz_template_file' do
40
+ subject { super().replace_openvz_template_file }
41
+ it { is_expected.to eq(false) }
42
+ end
43
+
39
44
  describe '#vm_id_range' do
40
45
  subject { super().vm_id_range }
41
46
  it { is_expected.to eq(900..999) }
@@ -91,6 +96,11 @@ describe VagrantPlugins::Proxmox::Config do
91
96
  it { is_expected.to be_nil }
92
97
  end
93
98
 
99
+ describe '#replace_qemu_iso_file' do
100
+ subject { super().replace_qemu_iso_file }
101
+ it { is_expected.to eq(false) }
102
+ end
103
+
94
104
  describe '#qemu_disk_size' do
95
105
  subject { super().qemu_disk_size }
96
106
  it { is_expected.to be_nil }
@@ -103,8 +113,10 @@ describe VagrantPlugins::Proxmox::Config do
103
113
  let(:proxmox_qemu_iso) { '' }
104
114
  let(:proxmox_openvz_os_template) { "proxmox.openvz_os_template = 'local:vztmpl/template.tar.gz'" }
105
115
  let(:proxmox_openvz_template_file) { '' }
116
+ let(:proxmox_replace_openvz_template_file) { '' }
106
117
  let(:proxmox_vm_type) { 'proxmox.vm_type = :openvz' }
107
118
  let(:proxmox_qemu_iso_file) { '' }
119
+ let(:proxmox_replace_qemu_iso_file) { '' }
108
120
  let(:proxmox_qemu_disk_size) { '' }
109
121
  let(:vagrantfile_content) { "
110
122
  Vagrant.configure('2') do |config|
@@ -115,8 +127,10 @@ Vagrant.configure('2') do |config|
115
127
  #{proxmox_vm_type}
116
128
  #{proxmox_openvz_os_template}
117
129
  #{proxmox_openvz_template_file}
130
+ #{proxmox_replace_openvz_template_file}
118
131
  #{proxmox_qemu_iso}
119
132
  #{proxmox_qemu_iso_file}
133
+ #{proxmox_replace_qemu_iso_file}
120
134
  #{proxmox_qemu_disk_size}
121
135
  proxmox.vm_id_range = 900..910
122
136
  proxmox.vm_name_prefix = 'vagrant_test_'
@@ -183,6 +197,17 @@ end
183
197
  end
184
198
  end
185
199
 
200
+ context 'with a new template file to be overwritten' do
201
+ let(:proxmox_replace_openvz_template_file) { 'proxmox.replace_openvz_template_file = true' }
202
+
203
+ describe '#openvz_template_file' do
204
+ before do
205
+ end
206
+ subject { super().replace_openvz_template_file }
207
+ it { is_expected.to eq(true) }
208
+ end
209
+ end
210
+
186
211
  describe '#vm_id_range' do
187
212
  subject { super().vm_id_range }
188
213
  it { is_expected.to eq(900..910) }
@@ -338,7 +363,7 @@ end
338
363
 
339
364
  context 'when the disk size contains a unit' do
340
365
 
341
- let (:proxmox_qemu_disk_size) {"proxmox.qemu_disk_size = '15G' "}
366
+ let (:proxmox_qemu_disk_size) { "proxmox.qemu_disk_size = '15G' " }
342
367
 
343
368
  it 'should be converted into gigabytes' do
344
369
  expect(config.qemu_disk_size).to eq('15')
@@ -611,6 +611,7 @@ module VagrantPlugins::Proxmox
611
611
  describe '#upload_file' do
612
612
 
613
613
  let (:file) { '/my/dir/template.tar.gz' }
614
+ let (:replace_openvz_template_file) { false }
614
615
  let (:storage_file_list) { [] }
615
616
 
616
617
  before do
@@ -640,11 +641,57 @@ module VagrantPlugins::Proxmox
640
641
 
641
642
  let (:storage_file_list) { [{volid: 'local:vztmpl/template.tar.gz'}] }
642
643
 
643
- it 'should not upload the file' do
644
- expect(connection).not_to receive(:post).with('/nodes/localhost/storage/local/upload', anything())
645
- connection.upload_file file, content_type: 'vztmpl', node: 'localhost', storage: 'local'
644
+ context 'when the file is not set to be replaced' do
645
+
646
+ it 'should not upload the file' do
647
+ expect(connection).not_to receive(:post).with('/nodes/localhost/storage/local/upload', anything())
648
+ connection.upload_file file, content_type: 'vztmpl', node: 'localhost', storage: 'local'
649
+ end
650
+ end
651
+
652
+ context 'when the file is set to be replaced' do
653
+
654
+ let (:replace_openvz_template_file) { true }
655
+
656
+ it 'should delete the file before upload' do
657
+ expect(connection).to receive(:delete_file).with(filename: file, content_type: 'vztmpl', node: 'localhost', storage: 'local')
658
+ connection.upload_file file, content_type: 'vztmpl', node: 'localhost', storage: 'local', replace: true
659
+ end
660
+ end
661
+ end
662
+ end
663
+
664
+ describe '#delete_file' do
665
+
666
+ let (:file) { '/my/dir/template.tar.gz' }
667
+ let (:replace_openvz_template_file) { true }
668
+ let (:storage_file_list) { [] }
669
+
670
+ before do
671
+ allow(connection).to receive_messages :post => {data: 'task_id'}.to_json
672
+ allow(connection).to receive_messages :wait_for_completion => 'OK'
673
+ allow(connection).to receive_messages :get_vm_info => vm_info
674
+ end
675
+
676
+ it 'waits for completion of the server task' do
677
+ expect(connection).to receive(:wait_for_completion)
678
+ connection.stop_vm '100'
679
+ end
680
+
681
+ it 'should return the task exit status' do
682
+ expect(connection.stop_vm('100')).to eq('OK')
683
+ end
684
+
685
+ context 'the file exists in the storage' do
686
+
687
+ let (:storage_file_list) { [{volid: 'local:vztmpl/template.tar.gz'}] }
688
+
689
+ it 'should delete the file from the storage' do
690
+ expect(connection).to receive(:delete).with("/nodes/localhost/storage/local/content/iso/template.tar.gz")
691
+ connection.delete_file filename: file, content_type: 'iso', node: 'localhost', storage: 'local'
646
692
  end
647
693
  end
694
+
648
695
  end
649
696
 
650
697
  describe '#list_storage_files' do
@@ -659,4 +706,4 @@ module VagrantPlugins::Proxmox
659
706
  end
660
707
  end
661
708
  end
662
- end
709
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-proxmox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dirk Grappendorf
@@ -10,118 +10,118 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-05-26 00:00:00.000000000 Z
13
+ date: 2015-06-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ~>
19
+ - - "~>"
20
20
  - !ruby/object:Gem::Version
21
21
  version: 1.6.7
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ~>
26
+ - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: 1.6.7
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: retryable
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ~>
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
35
  version: 1.3.3
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.3.3
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: activesupport
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ~>
47
+ - - "~>"
48
48
  - !ruby/object:Gem::Version
49
49
  version: 4.0.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ~>
54
+ - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: 4.0.0
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: rake
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - '>='
61
+ - - ">="
62
62
  - !ruby/object:Gem::Version
63
63
  version: '0'
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - '>='
68
+ - - ">="
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rspec
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ~>
75
+ - - "~>"
76
76
  - !ruby/object:Gem::Version
77
77
  version: 3.0.0
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - ~>
82
+ - - "~>"
83
83
  - !ruby/object:Gem::Version
84
84
  version: 3.0.0
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: simplecov
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ~>
89
+ - - "~>"
90
90
  - !ruby/object:Gem::Version
91
91
  version: 0.9.0
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - ~>
96
+ - - "~>"
97
97
  - !ruby/object:Gem::Version
98
98
  version: 0.9.0
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: simplecov-rcov
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - ~>
103
+ - - "~>"
104
104
  - !ruby/object:Gem::Version
105
105
  version: 0.2.3
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - ~>
110
+ - - "~>"
111
111
  - !ruby/object:Gem::Version
112
112
  version: 0.2.3
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: geminabox
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ~>
117
+ - - "~>"
118
118
  - !ruby/object:Gem::Version
119
119
  version: 0.11.1
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - ~>
124
+ - - "~>"
125
125
  - !ruby/object:Gem::Version
126
126
  version: 0.11.1
127
127
  - !ruby/object:Gem::Dependency
@@ -142,70 +142,70 @@ dependencies:
142
142
  name: libnotify
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - ~>
145
+ - - "~>"
146
146
  - !ruby/object:Gem::Version
147
147
  version: 0.8.3
148
148
  type: :development
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - ~>
152
+ - - "~>"
153
153
  - !ruby/object:Gem::Version
154
154
  version: 0.8.3
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: timecop
157
157
  requirement: !ruby/object:Gem::Requirement
158
158
  requirements:
159
- - - ~>
159
+ - - "~>"
160
160
  - !ruby/object:Gem::Version
161
161
  version: 0.7.1
162
162
  type: :development
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
- - - ~>
166
+ - - "~>"
167
167
  - !ruby/object:Gem::Version
168
168
  version: 0.7.1
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: cucumber
171
171
  requirement: !ruby/object:Gem::Requirement
172
172
  requirements:
173
- - - ~>
173
+ - - "~>"
174
174
  - !ruby/object:Gem::Version
175
175
  version: 1.3.15
176
176
  type: :development
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
- - - ~>
180
+ - - "~>"
181
181
  - !ruby/object:Gem::Version
182
182
  version: 1.3.15
183
183
  - !ruby/object:Gem::Dependency
184
184
  name: webmock
185
185
  requirement: !ruby/object:Gem::Requirement
186
186
  requirements:
187
- - - ~>
187
+ - - "~>"
188
188
  - !ruby/object:Gem::Version
189
189
  version: 1.18.0
190
190
  type: :development
191
191
  prerelease: false
192
192
  version_requirements: !ruby/object:Gem::Requirement
193
193
  requirements:
194
- - - ~>
194
+ - - "~>"
195
195
  - !ruby/object:Gem::Version
196
196
  version: 1.18.0
197
197
  - !ruby/object:Gem::Dependency
198
198
  name: awesome_print
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
- - - ~>
201
+ - - "~>"
202
202
  - !ruby/object:Gem::Version
203
203
  version: 1.2.0
204
204
  type: :development
205
205
  prerelease: false
206
206
  version_requirements: !ruby/object:Gem::Requirement
207
207
  requirements:
208
- - - ~>
208
+ - - "~>"
209
209
  - !ruby/object:Gem::Version
210
210
  version: 1.2.0
211
211
  description: Enables Vagrant to manage virtual machines on a Proxmox server.
@@ -302,17 +302,17 @@ require_paths:
302
302
  - lib
303
303
  required_ruby_version: !ruby/object:Gem::Requirement
304
304
  requirements:
305
- - - '>='
305
+ - - ">="
306
306
  - !ruby/object:Gem::Version
307
307
  version: '2'
308
308
  required_rubygems_version: !ruby/object:Gem::Requirement
309
309
  requirements:
310
- - - '>='
310
+ - - ">="
311
311
  - !ruby/object:Gem::Version
312
312
  version: '0'
313
313
  requirements: []
314
314
  rubyforge_project:
315
- rubygems_version: 2.2.2
315
+ rubygems_version: 2.4.6
316
316
  signing_key:
317
317
  specification_version: 4
318
318
  summary: Enables Vagrant to manage virtual machines on a Proxmox server.