vagrant-linode 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/README.md +7 -6
- data/lib/vagrant-linode/actions/create.rb +26 -4
- data/lib/vagrant-linode/actions/read_state.rb +1 -2
- data/lib/vagrant-linode/actions.rb +2 -2
- data/lib/vagrant-linode/config.rb +50 -6
- data/lib/vagrant-linode/errors.rb +8 -0
- data/lib/vagrant-linode/version.rb +1 -1
- data/locales/en.yml +14 -2
- metadata +2 -3
- data/lib/vagrant-linode/actions/halt.rb +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18251b22d7c4b04762d22da9cb2d724604345a71
|
4
|
+
data.tar.gz: a4b9cd21684c90388fb3f81a745bc3a911bb643e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16753c736f94bbbe79f16f15f6d9274b0dc76f5f86549ecedf96ec847447f2e95b47e6ea3e20a8a7b35c82028ac56fd7b68dfb4fd2655742486e7422c605cb62
|
7
|
+
data.tar.gz: a26d05de5eea17ae1d966590d588ea8116643744900cba9c74be9d8b29e44989b9bea1414a5be10a7d2063441ed6c10369aab9ef06e81822a168f5b4d55c4d17
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -29,7 +29,7 @@ Configure
|
|
29
29
|
---------
|
30
30
|
Once the provider has been installed, you will need to configure your project
|
31
31
|
to use it. The most basic `Vagrantfile` to create a linode on Linode
|
32
|
-
is shown below:
|
32
|
+
is shown below (with most of the available options included but commented out):
|
33
33
|
|
34
34
|
```ruby
|
35
35
|
Vagrant.configure('2') do |config|
|
@@ -51,8 +51,8 @@ Vagrant.configure('2') do |config|
|
|
51
51
|
# provider.kernel = <string>
|
52
52
|
# provider.kernelid = <int>
|
53
53
|
# provider.private_networking = <boolean>
|
54
|
-
# provider.stackscript = <string>
|
55
|
-
# provider.stackscriptid = <int>
|
54
|
+
# provider.stackscript = <string> # Not Supported Yet
|
55
|
+
# provider.stackscriptid = <int> # Not Supported Yet
|
56
56
|
# provider.distributionid = <int>
|
57
57
|
end
|
58
58
|
end
|
@@ -113,17 +113,17 @@ Current Plan-ID table follows:
|
|
113
113
|
|
114
114
|
This can be obtained through vagrant with:
|
115
115
|
```
|
116
|
-
vagrant linode
|
116
|
+
vagrant linode plans
|
117
117
|
```
|
118
118
|
|
119
119
|
Or using curl:
|
120
120
|
```
|
121
|
-
curl -X POST "https://api.linode.com/?api_action=avail.
|
121
|
+
curl -X POST "https://api.linode.com/?api_action=avail.linodeplans" \
|
122
122
|
--data-ascii api_key="$LINODE_API_KEY" \
|
123
123
|
2>/dev/null | jq '.DATA [] | .PLANID,.LABEL'
|
124
124
|
```
|
125
125
|
|
126
|
-
More detail: [Linode API - Plans](https://www.linode.com/api/utility/avail.
|
126
|
+
More detail: [Linode API - Plans](https://www.linode.com/api/utility/avail.linodeplans)
|
127
127
|
|
128
128
|
### provider.datacenter
|
129
129
|
|
@@ -139,6 +139,7 @@ Current Region-ID table is:
|
|
139
139
|
| 6 | newark | Newark, NJ, USA |
|
140
140
|
| 8 | tokyo | Tokyo, JP |
|
141
141
|
| 9 | singapore | Singapore, SGP |
|
142
|
+
| 10 | frankfurt | Frankfurt, DE |
|
142
143
|
|
143
144
|
You can find latest datacenter ID number using Vagrant subcommands:
|
144
145
|
|
@@ -38,6 +38,20 @@ module VagrantPlugins
|
|
38
38
|
distribution_id = @machine.provider_config.distributionid
|
39
39
|
end
|
40
40
|
|
41
|
+
if @machine.provider_config.imageid
|
42
|
+
distribution_id = nil
|
43
|
+
images = @client.image.list
|
44
|
+
image = images.find { |i| i.imageid == @machine.provider_config.imageid }
|
45
|
+
fail Errors::ImageMatch, image: @machine.provider_config.imageid.to_s if image.nil?
|
46
|
+
image_id = image.imageid || nil
|
47
|
+
elsif @machine.provider_config.image
|
48
|
+
distribution_id = nil
|
49
|
+
images = @client.image.list
|
50
|
+
image = images.find { |i| i.label.downcase.include? @machine.provider_config.image.downcase }
|
51
|
+
fail Errors::ImageMatch, image: @machine.provider_config.image.to_s if image.nil?
|
52
|
+
image_id = image.imageid || nil
|
53
|
+
end
|
54
|
+
|
41
55
|
if @machine.provider_config.kernel
|
42
56
|
kernels = @client.avail.kernels
|
43
57
|
kernel = kernels.find { |k| k.label.downcase.include? @machine.provider_config.kernel.downcase }
|
@@ -50,17 +64,24 @@ module VagrantPlugins
|
|
50
64
|
if @machine.provider_config.datacenter
|
51
65
|
datacenters = @client.avail.datacenters
|
52
66
|
datacenter = datacenters.find { |d| d.abbr == @machine.provider_config.datacenter }
|
53
|
-
|
67
|
+
fail Errors::DatacenterMatch, datacenter: @machine.provider_config.datacenter if datacenter.nil?
|
68
|
+
datacenter_id = datacenter.datacenterid
|
54
69
|
else
|
55
|
-
|
70
|
+
datacenters = @client.avail.datacenters
|
71
|
+
datacenter = datacenters.find { |d| d.datacenterid == @machine.provider_config.datacenterid }
|
72
|
+
fail Errors::DatacenterMatch, datacenter: @machine.provider_config.datacenter if datacenter.nil?
|
73
|
+
datacenter_id = datacenter.datacenterid
|
56
74
|
end
|
57
75
|
|
58
76
|
if @machine.provider_config.plan
|
59
77
|
plans = @client.avail.linodeplans
|
60
78
|
plan = plans.find { |p| p.label.include? @machine.provider_config.plan }
|
61
79
|
fail Errors::PlanID, plan: @machine.provider_config.plan if plan.nil?
|
62
|
-
plan_id = plan.planid
|
80
|
+
plan_id = plan.planid
|
63
81
|
else
|
82
|
+
plans = @client.avail.linodeplans
|
83
|
+
plan = plans.find { |p| p.planid == @machine.provider_config.planid }
|
84
|
+
fail Errors::PlanID, plan: @machine.provider_config.plan if plan.nil?
|
64
85
|
plan_id = @machine.provider_config.planid
|
65
86
|
end
|
66
87
|
|
@@ -114,6 +135,7 @@ module VagrantPlugins
|
|
114
135
|
disk = @client.linode.disk.createfromimage(
|
115
136
|
linodeid: result['linodeid'],
|
116
137
|
imageid: image_id,
|
138
|
+
label: 'Vagrant Disk Image (' + image_id.to_s + ') for ' + result['linodeid'].to_s,
|
117
139
|
size: xvda_size,
|
118
140
|
rootsshkey: pubkey,
|
119
141
|
rootpass: root_pass
|
@@ -197,7 +219,7 @@ module VagrantPlugins
|
|
197
219
|
|
198
220
|
# generate a random name if server name is empty
|
199
221
|
def get_server_name
|
200
|
-
|
222
|
+
"vagrant_linode-#{rand.to_s.split('.')[1]}"
|
201
223
|
end
|
202
224
|
|
203
225
|
def terminate(env)
|
@@ -17,9 +17,8 @@ module VagrantPlugins
|
|
17
17
|
def read_state(_linode, machine)
|
18
18
|
return :not_created if machine.id.nil?
|
19
19
|
server = Provider.linode(machine)
|
20
|
-
|
21
20
|
return :not_created if server.nil?
|
22
|
-
|
21
|
+
status = server[:status]
|
23
22
|
return :not_created if status.nil?
|
24
23
|
states = {
|
25
24
|
'' => :not_created,
|
@@ -111,22 +111,22 @@ module VagrantPlugins
|
|
111
111
|
if env[:result]
|
112
112
|
b.use Call, IsStopped do |env2, b2|
|
113
113
|
if env2[:result]
|
114
|
+
b2.use Provision
|
114
115
|
b2.use MessageOff
|
115
116
|
b2.use ConnectLinode
|
116
117
|
b2.use PowerOn
|
117
|
-
b2.use Provision
|
118
118
|
else
|
119
119
|
b2.use MessageAlreadyActive
|
120
120
|
end
|
121
121
|
end
|
122
122
|
else
|
123
|
+
b.use Provision
|
123
124
|
b.use MessageNotCreated
|
124
125
|
b.use ConnectLinode
|
125
126
|
b.use Create
|
126
127
|
b.use SetupSudo
|
127
128
|
b.use SetupUser
|
128
129
|
b.use SetupHostname
|
129
|
-
b.use Provision
|
130
130
|
end
|
131
131
|
end
|
132
132
|
end
|
@@ -4,8 +4,13 @@ module VagrantPlugins
|
|
4
4
|
attr_accessor :token # deprecated
|
5
5
|
attr_accessor :api_key
|
6
6
|
attr_accessor :api_url
|
7
|
+
attr_accessor :distributionid
|
7
8
|
attr_accessor :distribution
|
9
|
+
attr_accessor :imageid
|
10
|
+
attr_accessor :image
|
11
|
+
attr_accessor :datacenterid
|
8
12
|
attr_accessor :datacenter
|
13
|
+
attr_accessor :planid
|
9
14
|
attr_accessor :plan
|
10
15
|
attr_accessor :paymentterm
|
11
16
|
attr_accessor :private_networking
|
@@ -14,7 +19,7 @@ module VagrantPlugins
|
|
14
19
|
attr_accessor :setup
|
15
20
|
attr_accessor :xvda_size
|
16
21
|
attr_accessor :swap_size
|
17
|
-
attr_accessor :
|
22
|
+
attr_accessor :kernelid
|
18
23
|
attr_accessor :kernel
|
19
24
|
attr_accessor :label
|
20
25
|
attr_accessor :group
|
@@ -27,8 +32,13 @@ module VagrantPlugins
|
|
27
32
|
@token = UNSET_VALUE
|
28
33
|
@api_key = UNSET_VALUE
|
29
34
|
@api_url = UNSET_VALUE
|
35
|
+
@distributionid = UNSET_VALUE
|
30
36
|
@distribution = UNSET_VALUE
|
37
|
+
@imageid = UNSET_VALUE
|
38
|
+
@image = UNSET_VALUE
|
39
|
+
@datacenterid = UNSET_VALUE
|
31
40
|
@datacenter = UNSET_VALUE
|
41
|
+
@planid = UNSET_VALUE
|
32
42
|
@plan = UNSET_VALUE
|
33
43
|
@paymentterm = UNSET_VALUE
|
34
44
|
@private_networking = UNSET_VALUE
|
@@ -37,7 +47,7 @@ module VagrantPlugins
|
|
37
47
|
@setup = UNSET_VALUE
|
38
48
|
@xvda_size = UNSET_VALUE
|
39
49
|
@swap_size = UNSET_VALUE
|
40
|
-
@
|
50
|
+
@kernelid = UNSET_VALUE
|
41
51
|
@kernel = UNSET_VALUE
|
42
52
|
@label = UNSET_VALUE
|
43
53
|
@group = UNSET_VALUE
|
@@ -48,9 +58,17 @@ module VagrantPlugins
|
|
48
58
|
@token = ENV['LINODE_TOKEN'] if @token == UNSET_VALUE
|
49
59
|
@api_key = @token if ((@api_key == nil) and (@token != nil))
|
50
60
|
@api_url = ENV['LINODE_URL'] if @api_url == UNSET_VALUE
|
51
|
-
@
|
52
|
-
@
|
53
|
-
@
|
61
|
+
@imageid = nil if @imageid == UNSET_VALUE
|
62
|
+
@image = nil if @image == UNSET_VALUE
|
63
|
+
@distributionid = nil if @distributionid == UNSET_VALUE
|
64
|
+
@distribution = nil if @distribution == UNSET_VALUE
|
65
|
+
@distribution = 'Ubuntu 14.04 LTS' if @distribution.nil? and @distributionid.nil? and @imageid.nil? and @image.nil?
|
66
|
+
@datacenterid = nil if @datacenterid == UNSET_VALUE
|
67
|
+
@datacenter = nil if @datacenter == UNSET_VALUE
|
68
|
+
@datacenter = 'dallas' if @datacenter.nil? and @datacenterid.nil?
|
69
|
+
@planid = nil if @planid == UNSET_VALUE
|
70
|
+
@plan = nil if @plan == UNSET_VALUE
|
71
|
+
@plan = 'Linode 1024' if @plan.nil? and @planid.nil?
|
54
72
|
@paymentterm = '1' if @paymentterm == UNSET_VALUE
|
55
73
|
@private_networking = false if @private_networking == UNSET_VALUE
|
56
74
|
@ca_path = nil if @ca_path == UNSET_VALUE
|
@@ -58,7 +76,9 @@ module VagrantPlugins
|
|
58
76
|
@setup = true if @setup == UNSET_VALUE
|
59
77
|
@xvda_size = true if @xvda_size == UNSET_VALUE
|
60
78
|
@swap_size = '256' if @swap_size == UNSET_VALUE
|
61
|
-
@
|
79
|
+
@kernelid = nil if @kernelid == UNSET_VALUE
|
80
|
+
@kernel = nil if @kernel == UNSET_VALUE
|
81
|
+
@kernel = 'Latest 64 bit' if @kernel.nil? and @kernelid.nil?
|
62
82
|
@label = false if @label == UNSET_VALUE
|
63
83
|
@group = false if @group == UNSET_VALUE
|
64
84
|
end
|
@@ -77,6 +97,30 @@ module VagrantPlugins
|
|
77
97
|
errors << I18n.t('vagrant_linode.config.public_key', key: "#{key}.pub")
|
78
98
|
end
|
79
99
|
|
100
|
+
if @distributionid and @distribution
|
101
|
+
errors << I18n.t('vagrant_linode.config.distributionid_or_distribution')
|
102
|
+
end
|
103
|
+
|
104
|
+
if @datacenterid and @datacenter
|
105
|
+
errors << I18n.t('vagrant_linode.config.datacenterid_or_datacenter')
|
106
|
+
end
|
107
|
+
|
108
|
+
if @kernelid and @kernel
|
109
|
+
errors << I18n.t('vagrant_linode.config.kernelid_or_kernel')
|
110
|
+
end
|
111
|
+
|
112
|
+
if @planid and @plan
|
113
|
+
errors << I18n.t('vagrant_linode.config.planid_or_plan')
|
114
|
+
end
|
115
|
+
|
116
|
+
if @imageid and @image
|
117
|
+
errors << I18n.t('vagrant_linode.config.imageid_or_image')
|
118
|
+
end
|
119
|
+
|
120
|
+
if (@distribution or @distributionid) and (@imageid or @image)
|
121
|
+
errors << I18n.t('vagrant_linode.config.distribution_or_image')
|
122
|
+
end
|
123
|
+
|
80
124
|
{ 'Linode Provider' => errors }
|
81
125
|
end
|
82
126
|
end
|
@@ -16,7 +16,15 @@ module VagrantPlugins
|
|
16
16
|
class DistroMatch < LinodeError
|
17
17
|
error_key(:distro_match)
|
18
18
|
end
|
19
|
+
|
20
|
+
class DatacenterMatch < LinodeError
|
21
|
+
error_key(:datacenter_match)
|
22
|
+
end
|
19
23
|
|
24
|
+
class ImageMatch < LinodeError
|
25
|
+
error_key(:image_match)
|
26
|
+
end
|
27
|
+
|
20
28
|
class KernelMatch < LinodeError
|
21
29
|
error_key(:kernel_match)
|
22
30
|
end
|
data/locales/en.yml
CHANGED
@@ -44,6 +44,12 @@ en:
|
|
44
44
|
private_key: "SSH private key path is required"
|
45
45
|
public_key: "SSH public key not found: %{key}"
|
46
46
|
disk_too_large: "Disk Images use more drive space than plan allocates"
|
47
|
+
planid_or_plan: "Use either planid or plan, not both"
|
48
|
+
distributionid_or_distribution: "Use either distributionid or distribution, not both"
|
49
|
+
datacenterid_or_datacenter: "Use either datacenterid or datacenter, not both"
|
50
|
+
kernelid_or_kernel: "Use either kernelid or kernel, not both"
|
51
|
+
imageid_or_image: "Use either imageid or image, not both"
|
52
|
+
distribution_or_image: "Distribution can not be specified with Image options"
|
47
53
|
errors:
|
48
54
|
public_key: |-
|
49
55
|
There was an issue reading the public key at:
|
@@ -102,11 +108,17 @@ en:
|
|
102
108
|
certs.
|
103
109
|
local_ip: |-
|
104
110
|
The Linode provider was unable to determine the host's IP.
|
111
|
+
datacenter_match: !-
|
112
|
+
The provider does not support your configurations chosen Datacenter ( %{datacenter} ).
|
113
|
+
Supported datacenters can be found at the following url - https://www.linode.com/api/utility/avail.datacenters
|
105
114
|
distro_match: !-
|
106
|
-
The provider does not support your configurations chosen Distribution %{distro}.
|
115
|
+
The provider does not support your configurations chosen Distribution ( %{distro} ).
|
107
116
|
Supported distributions can be found at the following url - https://www.linode.com/distributions
|
117
|
+
image_match: !-
|
118
|
+
The provider does not support your configurations chosen Image ( %{image} ).
|
119
|
+
Available images can be found at https://manager.linode.com/images/ or with "vagrant linode image list"
|
108
120
|
kernel_match: !-
|
109
|
-
The provider does not support your configurations chosen Kernel %{kernel}.
|
121
|
+
The provider does not support your configurations chosen Kernel ( %{kernel} ).
|
110
122
|
Supported kernels can be found at the following url - https://www.linode.com/kernels
|
111
123
|
disk_size: !-
|
112
124
|
The space which you have specified for your Disk Images is too large for your
|
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.
|
4
|
+
version: 0.2.2
|
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: 2015-
|
12
|
+
date: 2015-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: linodeapi
|
@@ -129,7 +129,6 @@ files:
|
|
129
129
|
- lib/vagrant-linode/actions/create.rb
|
130
130
|
- lib/vagrant-linode/actions/create_image.rb
|
131
131
|
- lib/vagrant-linode/actions/destroy.rb
|
132
|
-
- lib/vagrant-linode/actions/halt.rb
|
133
132
|
- lib/vagrant-linode/actions/is_created.rb
|
134
133
|
- lib/vagrant-linode/actions/is_stopped.rb
|
135
134
|
- lib/vagrant-linode/actions/list_datacenters.rb
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'vagrant-linode/helpers/client'
|
2
|
-
require 'vagrant-linode/helpers/waiter'
|
3
|
-
|
4
|
-
module VagrantPlugins
|
5
|
-
module Linode
|
6
|
-
module Actions
|
7
|
-
|
8
|
-
class Reload
|
9
|
-
include Helpers::Waiter
|
10
|
-
def initialize(app, env)
|
11
|
-
@app = app
|
12
|
-
@machine = env[:machine]
|
13
|
-
@logger = Log4r::Logger.new('vagrant::linode::reload')
|
14
|
-
end
|
15
|
-
|
16
|
-
def call(env)
|
17
|
-
@client = env[:linode_api]
|
18
|
-
# submit reboot linode request
|
19
|
-
result = @client.linode.reboot(linodeid: @machine.id)
|
20
|
-
|
21
|
-
# wait for request to complete
|
22
|
-
env[:ui].info I18n.t('vagrant_linode.info.reloading')
|
23
|
-
wait_for_event(env, result['jobid'])
|
24
|
-
@app.call(env)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|