vagrant-linode 0.2.7 → 0.2.8

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
  SHA1:
3
- metadata.gz: 443c9bd53fdfdbac32073c829fff80089a95b950
4
- data.tar.gz: acac7d5845129390b7d32c5f5067c117db7fe2f0
3
+ metadata.gz: 1de708c156168a1a26ee28dc0cecb4ddefa48b60
4
+ data.tar.gz: f8ca694da438328963e17d14c1364b10a9f6af82
5
5
  SHA512:
6
- metadata.gz: 0445248a9412d7313ffe3c222e9603ddc89d4f8e7b49f9e572ced1557230f555f2cd6ff3a00596119972b6110c5aba7c2df42400cc5524f8d6cb73641cfde49b
7
- data.tar.gz: 21a2e6612a0710227578152f8f0b98ed6189245bf212fcdb0c74056982aec18661b51735a9fcec85adc1c8ab8b34b84b459218e18c0d45e3b31cebf847693dd7
6
+ metadata.gz: 3920d13fbb57a4b1440c1f4dc3d1d82890c273f185a0a3ea81a90b4fd799fd5904bb72b977b3480f3b2d5d01f05d73dce85f3744f2a992c481486b611734a515
7
+ data.tar.gz: 21149e2f5dffd5cc7e3c1439a074b937e50d961197eb3877163572839cc2a7ff9ae965fb298f121ee5e40399e86b154b06493b502a9829a741b93ed20f1d1416
data/.rspec CHANGED
@@ -1,4 +1,7 @@
1
1
  --format
2
- d
3
- --colour
2
+ doc
3
+ --order
4
+ random
5
+ --color
6
+ --fail-fast
4
7
  --backtrace
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  Changelog
2
2
  =========
3
+ v0.2.8 fixes for vagrant 1.9
4
+ v0.2.7 fixes for new Linode plans
5
+ v0.2.6 adds stackscript support
3
6
  v0.2.5 destroy works when linode is already deleted
4
7
  v0.2.4 fixed the box image
5
8
  v0.2.3 fixed rsync before provision on startup
data/Gemfile CHANGED
@@ -1,8 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- group :plugins do
4
- gemspec
5
- end
3
+ gemspec
6
4
 
7
5
  group :development do
8
6
  # We depend on Vagrant for development, but we don't add it as a
@@ -12,3 +10,7 @@ group :development do
12
10
  gem 'coveralls', require: false
13
11
  gem 'pry'
14
12
  end
13
+
14
+ group :plugins do
15
+ gem 'vagrant-linode', path: '.'
16
+ end
data/README.md CHANGED
@@ -36,8 +36,7 @@ Vagrant.configure('2') do |config|
36
36
 
37
37
  config.vm.provider :linode do |provider, override|
38
38
  override.ssh.private_key_path = '~/.ssh/id_rsa'
39
- override.vm.box = 'linode'
40
- override.vm.box_url = "https://github.com/displague/vagrant-linode/raw/master/box/linode.box"
39
+ override.vm.box = 'linode/ubuntu1404'
41
40
 
42
41
  provider.api_key = 'API_KEY'
43
42
  provider.distribution = 'Ubuntu 16.04 LTS'
@@ -103,18 +103,15 @@ module VagrantPlugins
103
103
  end
104
104
 
105
105
  ### Disk Images
106
- xvda_size, swap_size, disk_sanity = @machine.provider_config.xvda_size, @machine.provider_config.swap_size, true
106
+ disk_size = plan['disk'].to_i * 1024
107
+ xvda_size, swap_size, xvdc_size = @machine.provider_config.xvda_size, @machine.provider_config.swap_size, @machine.provider_config.xvdc_size
107
108
 
108
- # Sanity checks for disk size
109
- if xvda_size != true
110
- disk_sanity = false if ( xvda_size.to_i + swap_size.to_i) > ( plan['disk'].to_i * 1024)
111
- end
109
+ swap_size = swap_size.to_i
110
+ xvda_size = xvda_size == true ? disk_size - swap_size : xvda_size.to_i
111
+ xvdc_size = (xvdc_size.is_a?(Vagrant::Config::V2::DummyConfig) or xvdc_size == true) ? (disk_size - swap_size - xvda_size).abs : xvdc_size.to_i
112
112
 
113
- # throw if disk sizes are too large
114
- if xvda_size == true
115
- xvda_size = ( ( plan['disk'].to_i * 1024) - swap_size.to_i)
116
- elsif disk_sanity == false
117
- fail Errors::DiskSize, current: (xvda_size.to_i + swap_size.to_i), max: ( plan['disk'].to_i * 1024)
113
+ if ( xvda_size + swap_size + xvdc_size) > disk_size
114
+ fail Errors::DiskSize, current: (xvda_size + swap_size + xvdc_size), max: disk_size
118
115
  end
119
116
 
120
117
  env[:ui].info I18n.t('vagrant_linode.info.creating')
@@ -131,14 +128,9 @@ module VagrantPlugins
131
128
  # assign the machine id for reference in other commands
132
129
  @machine.id = result['linodeid'].to_s
133
130
 
134
- if stackscript_id
135
- swap = @client.linode.disk.create(
136
- linodeid: result['linodeid'],
137
- label: 'Vagrant swap',
138
- type: 'swap',
139
- size: swap_size
140
- )
131
+ disklist = []
141
132
 
133
+ if stackscript_id
142
134
  disk = @client.linode.disk.createfromstackscript(
143
135
  linodeid: result['linodeid'],
144
136
  stackscriptid: stackscript_id,
@@ -150,14 +142,8 @@ module VagrantPlugins
150
142
  rootsshkey: pubkey,
151
143
  rootpass: root_pass
152
144
  )
145
+ disklist.push(disk['diskid'])
153
146
  elsif distribution_id
154
- swap = @client.linode.disk.create(
155
- linodeid: result['linodeid'],
156
- label: 'Vagrant swap',
157
- type: 'swap',
158
- size: swap_size
159
- )
160
-
161
147
  disk = @client.linode.disk.createfromdistribution(
162
148
  linodeid: result['linodeid'],
163
149
  distributionid: distribution_id,
@@ -167,6 +153,7 @@ module VagrantPlugins
167
153
  rootsshkey: pubkey,
168
154
  rootpass: root_pass
169
155
  )
156
+ disklist.push(disk['diskid'])
170
157
  elsif image_id
171
158
  disk = @client.linode.disk.createfromimage(
172
159
  linodeid: result['linodeid'],
@@ -176,19 +163,40 @@ module VagrantPlugins
176
163
  rootsshkey: pubkey,
177
164
  rootpass: root_pass
178
165
  )
166
+ disklist.push(disk['diskid'])
167
+ else
168
+ disklist.push('')
169
+ end
179
170
 
171
+ if swap_size > 0
180
172
  swap = @client.linode.disk.create(
181
173
  linodeid: result['linodeid'],
182
174
  label: 'Vagrant swap',
183
175
  type: 'swap',
184
176
  size: swap_size
185
177
  )
178
+ disklist.push(swap['diskid'])
179
+ else
180
+ disklist.push('')
181
+ end
182
+
183
+ if xvdc_size > 0
184
+ xvdc_type = @machine.provider_config.xvdc_type.is_a?(Vagrant::Config::V2::DummyConfig) ? "raw" : @machine.provider_config.xvdc_type
185
+ xvdc = @client.linode.disk.create(
186
+ linodeid: result['linodeid'],
187
+ label: 'Vagrant Leftover Disk Linode ' + result['linodeid'].to_s,
188
+ type: xvdc_type,
189
+ size: xvdc_size,
190
+ )
191
+ disklist.push(xvdc['diskid'])
192
+ else
193
+ disklist.push('')
186
194
  end
187
195
 
188
196
  config = @client.linode.config.create(
189
197
  linodeid: result['linodeid'],
190
198
  label: 'Vagrant Config',
191
- disklist: "#{disk['diskid']},#{swap['diskid']}",
199
+ disklist: disklist.join(','),
192
200
  kernelid: kernel_id
193
201
  )
194
202
 
@@ -1,12 +1,13 @@
1
1
  require 'vagrant-linode/helpers/client'
2
2
  require 'vagrant-linode/helpers/waiter'
3
+ require 'vagrant-linode/errors'
3
4
 
4
5
  module VagrantPlugins
5
6
  module Linode
6
7
  module Actions
7
8
  class Rebuild
8
9
  include Vagrant::Util::Retryable
9
- include Helpers::Waiter
10
+ include VagrantPlugins::Linode::Helpers::Waiter
10
11
 
11
12
  def initialize(app, env)
12
13
  @app = app
@@ -16,30 +17,250 @@ module VagrantPlugins
16
17
 
17
18
  def call(env)
18
19
  @client = env[:linode_api]
19
- # @todo find a convenient way to send provider_config back to the create action, reusing the diskid or configid
20
- fail 'not implemented'
21
- # look up image id
22
- image_id = @client
23
- .request('/v2/images')
24
- .find_id(:images, name: @machine.provider_config.image)
20
+ ssh_key_id = env[:machine].config.ssh.private_key_path
21
+ ssh_key_id = ssh_key_id[0] if ssh_key_id.is_a?(Array)
22
+ if ssh_key_id
23
+ pubkey = File.read(File.expand_path("#{ssh_key_id}.pub"))
24
+ end
25
+
26
+ if @machine.provider_config.root_pass
27
+ root_pass = @machine.provider_config.root_pass
28
+ else
29
+ root_pass = Digest::SHA2.new.update(@machine.provider_config.api_key).to_s
30
+ end
31
+
32
+ if @machine.provider_config.stackscript
33
+ stackscripts = @client.stackscript.list + @client.avail.stackscripts
34
+ stackscript = stackscripts.find { |s| s.label.downcase == @machine.provider_config.stackscript.to_s.downcase }
35
+ fail(Errors::StackscriptMatch, stackscript: @machine.provider_config.stackscript.to_s) if stackscript.nil?
36
+ stackscript_id = stackscript.stackscriptid || nil
37
+ else
38
+ stackscript_id = @machine.provider_config.stackscriptid
39
+ end
40
+
41
+ stackscript_udf_responses = @machine.provider_config.stackscript_udf_responses
42
+
43
+ if stackscript_udf_responses and !stackscript_udf_responses.is_a?(Hash)
44
+ fail(Errors::StackscriptUDFFormat, format: stackscript_udf_responses.class.to_s)
45
+ else
46
+ stackscript_udf_responses = @machine.provider_config.stackscript_udf_responses or {}
47
+ end
48
+
49
+ if @machine.provider_config.distribution
50
+ distributions = @client.avail.distributions
51
+ distribution = distributions.find { |d| d.label.downcase.include? @machine.provider_config.distribution.downcase }
52
+ fail(Errors::DistroMatch, distro: @machine.provider_config.distribution.to_s) if distribution.nil?
53
+ distribution_id = distribution.distributionid || nil
54
+ else
55
+ distribution_id = @machine.provider_config.distributionid
56
+ end
25
57
 
26
- # submit rebuild request
27
- result = @client.post("/v2/linodes/#{@machine.id}/actions", type: 'rebuild',
28
- image: image_id)
58
+ if @machine.provider_config.imageid
59
+ distribution_id = nil
60
+ images = @client.image.list
61
+ image = images.find { |i| i.imageid == @machine.provider_config.imageid }
62
+ fail Errors::ImageMatch, image: @machine.provider_config.imageid.to_s if image.nil?
63
+ image_id = image.imageid || nil
64
+ elsif @machine.provider_config.image
65
+ distribution_id = nil
66
+ images = @client.image.list
67
+ image = images.find { |i| i.label.downcase.include? @machine.provider_config.image.downcase }
68
+ fail Errors::ImageMatch, image: @machine.provider_config.image.to_s if image.nil?
69
+ image_id = image.imageid || nil
70
+ end
71
+
72
+ if @machine.provider_config.kernel
73
+ kernels = @client.avail.kernels
74
+ kernel = kernels.find { |k| k.label.downcase.include? @machine.provider_config.kernel.downcase }
75
+ raise( Errors::KernelMatch, kernel: @machine.provider_config.kernel.to_s ) if kernel == nil
76
+ kernel_id = kernel.kernelid || nil
77
+ else
78
+ kernel_id = @machine.provider_config.kernelid
79
+ end
80
+
81
+ if @machine.provider_config.datacenter
82
+ datacenters = @client.avail.datacenters
83
+ datacenter = datacenters.find { |d| d.abbr == @machine.provider_config.datacenter }
84
+ fail Errors::DatacenterMatch, datacenter: @machine.provider_config.datacenter if datacenter.nil?
85
+ datacenter_id = datacenter.datacenterid
86
+ else
87
+ datacenters = @client.avail.datacenters
88
+ datacenter = datacenters.find { |d| d.datacenterid == @machine.provider_config.datacenterid }
89
+ fail Errors::DatacenterMatch, datacenter: @machine.provider_config.datacenter if datacenter.nil?
90
+ datacenter_id = datacenter.datacenterid
91
+ end
29
92
 
30
- # wait for request to complete
31
- env[:ui].info I18n.t('vagrant_linode.info.rebuilding')
32
- wait_for_event(env, result['jobid'])
93
+ if @machine.provider_config.plan
94
+ plans = @client.avail.linodeplans
95
+ plan = plans.find { |p| p.label.include? @machine.provider_config.plan }
96
+ fail Errors::PlanID, plan: @machine.provider_config.plan if plan.nil?
97
+ plan_id = plan.planid
98
+ else
99
+ plans = @client.avail.linodeplans
100
+ plan = plans.find { |p| p.planid.to_i == @machine.provider_config.planid.to_i }
101
+ fail Errors::PlanID, plan: @machine.provider_config.planid if plan.nil?
102
+ plan_id = @machine.provider_config.planid
103
+ end
104
+
105
+ ### Disk Images
106
+ xvda_size, swap_size, disk_sanity = @machine.provider_config.xvda_size, @machine.provider_config.swap_size, true
33
107
 
34
- # refresh linode state with provider
35
- Provider.linode(@machine, refresh: true)
108
+ # Sanity checks for disk size
109
+ if xvda_size != true
110
+ disk_sanity = false if ( xvda_size.to_i + swap_size.to_i) > ( plan['disk'].to_i * 1024)
111
+ end
112
+
113
+ # throw if disk sizes are too large
114
+ if xvda_size == true
115
+ xvda_size = ( ( plan['disk'].to_i * 1024) - swap_size.to_i)
116
+ elsif disk_sanity == false
117
+ fail Errors::DiskSize, current: (xvda_size.to_i + swap_size.to_i), max: ( plan['disk'].to_i * 1024)
118
+ end
119
+
120
+ env[:ui].info I18n.t('vagrant_linode.info.destroying')
121
+
122
+ diskList = @client.linode.disk.list(
123
+ linodeid: @machine.id
124
+ )
125
+
126
+ diskList.each do |diskEntry|
127
+ diskDeleteResult = @client.linode.disk.delete(
128
+ linodeid: @machine.id,
129
+ diskid: diskEntry['diskid']
130
+ )
131
+
132
+ job = diskDeleteResult['jobid']
133
+
134
+ jobStatus = @client.linode.job.list(
135
+ linodeid: @machine.id,
136
+ jobid: job
137
+ )
138
+
139
+ while jobStatus[0]['host_finish_dt'].nil? || jobStatus[0]['host_finish_dt'].empty? do
140
+ sleep(5)
141
+ jobStatus = @client.linode.job.list(
142
+ linodeid: @machine.id,
143
+ jobid: job
144
+ )
145
+ end
146
+ end
147
+
148
+ configList = @client.linode.config.list(
149
+ linodeid: @machine.id
150
+ )
151
+
152
+ configList.each do |configEntry|
153
+ configDeleteResult = @client.linode.config.delete(
154
+ linodeid: @machine.id,
155
+ configid: configEntry['configid']
156
+ )
157
+ end
158
+
159
+ env[:ui].info I18n.t('vagrant_linode.info.creating')
160
+
161
+ if stackscript_id
162
+ swap = @client.linode.disk.create(
163
+ linodeid: @machine.id,
164
+ label: 'Vagrant swap',
165
+ type: 'swap',
166
+ size: swap_size
167
+ )
168
+
169
+ disk = @client.linode.disk.createfromstackscript(
170
+ linodeid: @machine.id,
171
+ stackscriptid: stackscript_id,
172
+ stackscriptudfresponses: JSON.dump(stackscript_udf_responses),
173
+ distributionid: distribution_id,
174
+ label: 'Vagrant Disk Distribution ' + distribution_id.to_s + ' Linode ' + @machine.id.to_s,
175
+ type: 'ext4',
176
+ size: xvda_size,
177
+ rootsshkey: pubkey,
178
+ rootpass: root_pass
179
+ )
180
+ elsif distribution_id
181
+ swap = @client.linode.disk.create(
182
+ linodeid: @machine.id,
183
+ label: 'Vagrant swap',
184
+ type: 'swap',
185
+ size: swap_size
186
+ )
187
+
188
+ disk = @client.linode.disk.createfromdistribution(
189
+ linodeid: @machine.id,
190
+ distributionid: distribution_id,
191
+ label: 'Vagrant Disk Distribution ' + distribution_id.to_s + ' Linode ' + @machine.id.to_s,
192
+ type: 'ext4',
193
+ size: xvda_size,
194
+ rootsshkey: pubkey,
195
+ rootpass: root_pass
196
+ )
197
+ elsif image_id
198
+ disk = @client.linode.disk.createfromimage(
199
+ linodeid: @machine.id,
200
+ imageid: image_id,
201
+ label: 'Vagrant Disk Image (' + image_id.to_s + ') for ' + @machine.id.to_s,
202
+ size: xvda_size,
203
+ rootsshkey: pubkey,
204
+ rootpass: root_pass
205
+ )
206
+
207
+ swap = @client.linode.disk.create(
208
+ linodeid: @machine.id,
209
+ label: 'Vagrant swap',
210
+ type: 'swap',
211
+ size: swap_size
212
+ )
213
+ end
214
+
215
+ config = @client.linode.config.create(
216
+ linodeid: @machine.id,
217
+ label: 'Vagrant Config',
218
+ disklist: "#{disk['diskid']},#{swap['diskid']}",
219
+ kernelid: kernel_id
220
+ )
221
+
222
+ # @todo: allow provisioning to set static configuration for networking
223
+ if @machine.provider_config.private_networking
224
+ private_network = @client.linode.ip.addprivate linodeid: @machine.id
225
+ end
226
+
227
+ label = @machine.provider_config.label
228
+ label = label || @machine.name if @machine.name != 'default'
229
+ label = label || get_server_name
230
+
231
+ group = @machine.provider_config.group
232
+ group = "" if @machine.provider_config.group == false
233
+
234
+ result = @client.linode.update(
235
+ linodeid: @machine.id,
236
+ label: label,
237
+ lpm_displaygroup: group
238
+ )
239
+
240
+ env[:ui].info I18n.t('vagrant_linode.info.booting', linodeid: @machine.id)
241
+
242
+ bootjob = @client.linode.boot linodeid: @machine.id
243
+ # sleep 1 until ! @client.linode.job.list(:linodeid => @machine.id, :jobid => bootjob['jobid'], :pendingonly => 1).length
244
+ wait_for_event(env, bootjob['jobid'])
245
+
246
+ # refresh linode state with provider and output ip address
247
+ linode = Provider.linode(@machine, refresh: true)
248
+ public_network = linode.network.find { |network| network['ispublic'] == 1 }
249
+ env[:ui].info I18n.t('vagrant_linode.info.linode_ip', ip: public_network['ipaddress'])
250
+
251
+ if private_network
252
+ env[:ui].info I18n.t('vagrant_linode.info.linode_private_ip', ip: private_network['ipaddress'])
253
+ end
36
254
 
37
255
  # wait for ssh to be ready
38
256
  switch_user = @machine.provider_config.setup?
39
257
  user = @machine.config.ssh.username
40
- @machine.config.ssh.username = 'root' if switch_user
258
+ if switch_user
259
+ @machine.config.ssh.username = 'root'
260
+ @machine.config.ssh.password = root_pass
261
+ end
41
262
 
42
- retryable(tries: 120, sleep: 10) do
263
+ retryable(tries: 25, sleep: 10) do # @todo bump tries when this is solid
43
264
  next if env[:interrupted]
44
265
  fail 'not ready' unless @machine.communicate.ready?
45
266
  end
@@ -48,6 +269,10 @@ module VagrantPlugins
48
269
 
49
270
  @app.call(env)
50
271
  end
272
+
273
+ def get_server_name
274
+ "vagrant_linode-#{rand.to_s.split('.')[1]}"
275
+ end
51
276
  end
52
277
  end
53
278
  end
@@ -21,6 +21,8 @@ module VagrantPlugins
21
21
  attr_accessor :stackscript
22
22
  attr_accessor :stackscript_udf_responses
23
23
  attr_accessor :xvda_size
24
+ attr_accessor :xvdc_size
25
+ attr_accessor :xvdc_type
24
26
  attr_accessor :swap_size
25
27
  attr_accessor :kernelid
26
28
  attr_accessor :kernel
@@ -52,6 +54,8 @@ module VagrantPlugins
52
54
  @ssh_key_name = UNSET_VALUE
53
55
  @setup = UNSET_VALUE
54
56
  @xvda_size = UNSET_VALUE
57
+ @xvdc_size = UNSET_VALUE
58
+ @xvdc_type = UNSET_VALUE
55
59
  @swap_size = UNSET_VALUE
56
60
  @kernelid = UNSET_VALUE
57
61
  @kernel = UNSET_VALUE
@@ -84,6 +88,8 @@ module VagrantPlugins
84
88
  @ssh_key_name = 'Vagrant' if @ssh_key_name == UNSET_VALUE
85
89
  @setup = true if @setup == UNSET_VALUE
86
90
  @xvda_size = true if @xvda_size == UNSET_VALUE
91
+ @xvdc_size = nil if @xvdc_size == UNSET_VALUE
92
+ @xvdc_type = 'raw' if @xvdc_type == UNSET_VALUE
87
93
  @swap_size = '256' if @swap_size == UNSET_VALUE
88
94
  @kernelid = nil if @kernelid == UNSET_VALUE
89
95
  @kernel = nil if @kernel == UNSET_VALUE
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Linode
3
- VERSION = '0.2.7'
3
+ VERSION = '0.2.8'
4
4
  end
5
5
  end
@@ -13,13 +13,12 @@ Gem::Specification.new do |gem|
13
13
  gem.homepage = 'https://www.github.com/displague/vagrant-linode'
14
14
  gem.summary = gem.description
15
15
 
16
- gem.add_runtime_dependency 'linodeapi', '~> 1.0.0'
17
- gem.add_runtime_dependency 'json', '~> 1.8.3'
18
- gem.add_runtime_dependency 'log4r', '~> 1.1.10'
16
+ gem.add_runtime_dependency 'linodeapi', '~> 1.0'
17
+ gem.add_runtime_dependency 'log4r', '~> 1.1'
19
18
 
20
- gem.add_development_dependency 'rake', '~> 10.4.2'
21
- gem.add_development_dependency 'rspec', '~> 3.4.0'
22
- gem.add_development_dependency 'aruba', '~> 0.12.0'
19
+ gem.add_development_dependency 'rake', '~> 12.0'
20
+ gem.add_development_dependency 'rspec', '~> 3.5'
21
+ gem.add_development_dependency 'aruba', '~> 0.14'
23
22
 
24
23
  gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
25
24
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-linode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marques Johansson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-06-17 00:00:00.000000000 Z
12
+ date: 2016-12-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: linodeapi
@@ -17,84 +17,70 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.0
20
+ version: '1.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 1.0.0
28
- - !ruby/object:Gem::Dependency
29
- name: json
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: 1.8.3
35
- type: :runtime
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: 1.8.3
27
+ version: '1.0'
42
28
  - !ruby/object:Gem::Dependency
43
29
  name: log4r
44
30
  requirement: !ruby/object:Gem::Requirement
45
31
  requirements:
46
32
  - - "~>"
47
33
  - !ruby/object:Gem::Version
48
- version: 1.1.10
34
+ version: '1.1'
49
35
  type: :runtime
50
36
  prerelease: false
51
37
  version_requirements: !ruby/object:Gem::Requirement
52
38
  requirements:
53
39
  - - "~>"
54
40
  - !ruby/object:Gem::Version
55
- version: 1.1.10
41
+ version: '1.1'
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: rake
58
44
  requirement: !ruby/object:Gem::Requirement
59
45
  requirements:
60
46
  - - "~>"
61
47
  - !ruby/object:Gem::Version
62
- version: 10.4.2
48
+ version: '12.0'
63
49
  type: :development
64
50
  prerelease: false
65
51
  version_requirements: !ruby/object:Gem::Requirement
66
52
  requirements:
67
53
  - - "~>"
68
54
  - !ruby/object:Gem::Version
69
- version: 10.4.2
55
+ version: '12.0'
70
56
  - !ruby/object:Gem::Dependency
71
57
  name: rspec
72
58
  requirement: !ruby/object:Gem::Requirement
73
59
  requirements:
74
60
  - - "~>"
75
61
  - !ruby/object:Gem::Version
76
- version: 3.4.0
62
+ version: '3.5'
77
63
  type: :development
78
64
  prerelease: false
79
65
  version_requirements: !ruby/object:Gem::Requirement
80
66
  requirements:
81
67
  - - "~>"
82
68
  - !ruby/object:Gem::Version
83
- version: 3.4.0
69
+ version: '3.5'
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: aruba
86
72
  requirement: !ruby/object:Gem::Requirement
87
73
  requirements:
88
74
  - - "~>"
89
75
  - !ruby/object:Gem::Version
90
- version: 0.12.0
76
+ version: '0.14'
91
77
  type: :development
92
78
  prerelease: false
93
79
  version_requirements: !ruby/object:Gem::Requirement
94
80
  requirements:
95
81
  - - "~>"
96
82
  - !ruby/object:Gem::Version
97
- version: 0.12.0
83
+ version: '0.14'
98
84
  description: Enables Vagrant to manage Linode linodes
99
85
  email:
100
86
  - marques@linode.com