vagrant-linode 0.2.7 → 0.2.8

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: 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