vagrant-linode 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rspec +4 -0
  4. data/.rubocop.yml +1 -0
  5. data/.rubocop_todo.yml +164 -0
  6. data/Gemfile +9 -6
  7. data/README.md +21 -9
  8. data/Rakefile +21 -1
  9. data/Vagrantfile.multi +18 -0
  10. data/box/linode-debian-7.5.box +0 -0
  11. data/box/linode.box +0 -0
  12. data/box/metadata-debian-7.5.json +12 -0
  13. data/box/metadata.json +2 -2
  14. data/features/provision.feature +34 -0
  15. data/features/steps/sdk_steps.rb +13 -0
  16. data/features/steps/server_steps.rb +25 -0
  17. data/features/support/env.rb +34 -0
  18. data/features/support/fog_mock.rb +16 -0
  19. data/features/vagrant-linode.feature +68 -0
  20. data/lib/vagrant-linode.rb +44 -5
  21. data/lib/vagrant-linode/actions.rb +201 -87
  22. data/lib/vagrant-linode/actions/connect_linode.rb +36 -0
  23. data/lib/vagrant-linode/actions/create.rb +9 -9
  24. data/lib/vagrant-linode/actions/create_image.rb +23 -0
  25. data/lib/vagrant-linode/actions/destroy.rb +1 -3
  26. data/lib/vagrant-linode/actions/halt.rb +29 -0
  27. data/lib/vagrant-linode/actions/is_created.rb +16 -0
  28. data/lib/vagrant-linode/actions/is_stopped.rb +17 -0
  29. data/lib/vagrant-linode/actions/list_datacenters.rb +20 -0
  30. data/lib/vagrant-linode/actions/list_distributions.rb +20 -0
  31. data/lib/vagrant-linode/actions/list_images.rb +20 -0
  32. data/lib/vagrant-linode/actions/list_plans.rb +20 -0
  33. data/lib/vagrant-linode/actions/list_servers.rb +20 -0
  34. data/lib/vagrant-linode/actions/message_already_active.rb +16 -0
  35. data/lib/vagrant-linode/actions/message_already_off.rb +16 -0
  36. data/lib/vagrant-linode/actions/message_not_created.rb +16 -0
  37. data/lib/vagrant-linode/actions/message_off.rb +16 -0
  38. data/lib/vagrant-linode/actions/power_off.rb +4 -3
  39. data/lib/vagrant-linode/actions/power_on.rb +3 -2
  40. data/lib/vagrant-linode/actions/read_ssh_info.rb +48 -0
  41. data/lib/vagrant-linode/actions/read_state.rb +38 -0
  42. data/lib/vagrant-linode/actions/rebuild.rb +3 -2
  43. data/lib/vagrant-linode/actions/reload.rb +3 -2
  44. data/lib/vagrant-linode/commands/create_image.rb +21 -0
  45. data/lib/vagrant-linode/commands/datacenters.rb +21 -0
  46. data/lib/vagrant-linode/commands/distributions.rb +21 -0
  47. data/lib/vagrant-linode/commands/images.rb +59 -0
  48. data/lib/vagrant-linode/commands/list_images.rb +21 -0
  49. data/lib/vagrant-linode/commands/networks.rb +21 -0
  50. data/lib/vagrant-linode/commands/plans.rb +21 -0
  51. data/lib/vagrant-linode/commands/root.rb +81 -0
  52. data/lib/vagrant-linode/commands/servers.rb +21 -0
  53. data/lib/vagrant-linode/config.rb +11 -3
  54. data/lib/vagrant-linode/helpers/client.rb +21 -79
  55. data/lib/vagrant-linode/helpers/waiter.rb +21 -0
  56. data/lib/vagrant-linode/plugin.rb +20 -0
  57. data/lib/vagrant-linode/provider.rb +27 -32
  58. data/lib/vagrant-linode/version.rb +1 -1
  59. data/locales/en.yml +17 -1
  60. data/spec/spec_helper.rb +20 -0
  61. data/spec/vagrant-linode/actions/list_distributions_spec.rb +47 -0
  62. data/spec/vagrant-linode/actions/list_plans_spec.rb +47 -0
  63. data/spec/vagrant-linode/config_spec.rb +189 -0
  64. data/test/Vagrantfile +4 -9
  65. data/vagrant-linode.gemspec +1 -1
  66. metadata +70 -20
  67. data/lib/vagrant-linode/actions/check_state.rb +0 -19
  68. data/lib/vagrant-linode/actions/setup_key.rb +0 -52
data/test/Vagrantfile CHANGED
@@ -1,12 +1,7 @@
1
1
  # -*- mode: ruby -*-
2
2
  # vi: set ft=ruby :
3
3
 
4
- Vagrant.require_plugin('vagrant-linode')
5
- Vagrant.require_plugin('vagrant-omnibus')
6
-
7
4
  Vagrant.configure('2') do |config|
8
- config.omnibus.chef_version = :latest
9
-
10
5
  config.ssh.username = 'tester'
11
6
  config.ssh.private_key_path = './test_id_rsa'
12
7
 
@@ -15,9 +10,9 @@ Vagrant.configure('2') do |config|
15
10
  config.vm.provider :linode do |provider, override|
16
11
  override.vm.box = 'linode'
17
12
  override.vm.box_url = 'https://github.com/displague/vagrant-linode/raw/master/box/linode.box'
18
- provider.token = ENV['LINODE_TOKEN']
13
+ provider.api_key = ENV['LINODE_API_KEY']
19
14
  provider.ssh_key_name = 'Test Key'
20
- provider.distribution = 'Ubuntu 14.04 LTS'
15
+ provider.distribution = 'Debian 8'
21
16
  provider.datacenter = 'newark'
22
17
  provider.plan = '1024'
23
18
  provider.label = 'vagrant-'+Time.new.strftime("%F%T").gsub(/[^0-9]/,'')
@@ -26,7 +21,7 @@ Vagrant.configure('2') do |config|
26
21
 
27
22
  # Main Disk Image Size
28
23
  # [str] ( Full Allocation - Swap ) if nil
29
- provider.xvda_size = '1024'
24
+ provider.xvda_size = '2048'
30
25
 
31
26
  # Swap Image Size
32
27
  # [str] 256 if nil
@@ -41,7 +36,7 @@ Vagrant.configure('2') do |config|
41
36
 
42
37
  # Enable private networking
43
38
  # [boolean] disabled if nil
44
- #provider.private_networking = true
39
+ # provider.private_networking = true
45
40
  end
46
41
 
47
42
  config.vm.provision :shell, path: 'scripts/provision.sh'
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency 'aruba', '~> 0.5.4'
23
23
 
24
24
  gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
25
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
25
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
26
26
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
27
27
  gem.require_paths = ['lib']
28
28
  end
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.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marques Johansson
@@ -9,90 +9,90 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-29 00:00:00.000000000 Z
12
+ date: 2015-07-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: linodeapi
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: 0.1.1
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
27
  version: 0.1.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: json
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ~>
33
33
  - !ruby/object:Gem::Version
34
34
  version: 1.8.3
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  version: 1.8.3
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: log4r
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ~>
47
47
  - !ruby/object:Gem::Version
48
48
  version: 1.1.10
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ~>
54
54
  - !ruby/object:Gem::Version
55
55
  version: 1.1.10
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ~>
61
61
  - !ruby/object:Gem::Version
62
62
  version: 10.4.2
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ~>
68
68
  - !ruby/object:Gem::Version
69
69
  version: 10.4.2
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - "~>"
74
+ - - ~>
75
75
  - !ruby/object:Gem::Version
76
76
  version: 2.14.0
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
81
+ - - ~>
82
82
  - !ruby/object:Gem::Version
83
83
  version: 2.14.0
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: aruba
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - "~>"
88
+ - - ~>
89
89
  - !ruby/object:Gem::Version
90
90
  version: 0.5.4
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - "~>"
95
+ - - ~>
96
96
  - !ruby/object:Gem::Version
97
97
  version: 0.5.4
98
98
  description: Enables Vagrant to manage Linode linodes
@@ -103,39 +103,79 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
- - ".gitignore"
106
+ - .gitignore
107
+ - .rspec
108
+ - .rubocop.yml
109
+ - .rubocop_todo.yml
107
110
  - CHANGELOG.md
108
111
  - Gemfile
109
112
  - LICENSE.txt
110
113
  - README.md
111
114
  - Rakefile
115
+ - Vagrantfile.multi
112
116
  - box/README.md
117
+ - box/linode-debian-7.5.box
113
118
  - box/linode.box
119
+ - box/metadata-debian-7.5.json
114
120
  - box/metadata.json
121
+ - features/provision.feature
122
+ - features/steps/sdk_steps.rb
123
+ - features/steps/server_steps.rb
124
+ - features/support/env.rb
125
+ - features/support/fog_mock.rb
126
+ - features/vagrant-linode.feature
115
127
  - lib/vagrant-linode.rb
116
128
  - lib/vagrant-linode/actions.rb
117
- - lib/vagrant-linode/actions/check_state.rb
129
+ - lib/vagrant-linode/actions/connect_linode.rb
118
130
  - lib/vagrant-linode/actions/create.rb
131
+ - lib/vagrant-linode/actions/create_image.rb
119
132
  - lib/vagrant-linode/actions/destroy.rb
133
+ - lib/vagrant-linode/actions/halt.rb
134
+ - lib/vagrant-linode/actions/is_created.rb
135
+ - lib/vagrant-linode/actions/is_stopped.rb
136
+ - lib/vagrant-linode/actions/list_datacenters.rb
137
+ - lib/vagrant-linode/actions/list_distributions.rb
138
+ - lib/vagrant-linode/actions/list_images.rb
139
+ - lib/vagrant-linode/actions/list_plans.rb
140
+ - lib/vagrant-linode/actions/list_servers.rb
141
+ - lib/vagrant-linode/actions/message_already_active.rb
142
+ - lib/vagrant-linode/actions/message_already_off.rb
143
+ - lib/vagrant-linode/actions/message_not_created.rb
144
+ - lib/vagrant-linode/actions/message_off.rb
120
145
  - lib/vagrant-linode/actions/modify_provision_path.rb
121
146
  - lib/vagrant-linode/actions/power_off.rb
122
147
  - lib/vagrant-linode/actions/power_on.rb
148
+ - lib/vagrant-linode/actions/read_ssh_info.rb
149
+ - lib/vagrant-linode/actions/read_state.rb
123
150
  - lib/vagrant-linode/actions/rebuild.rb
124
151
  - lib/vagrant-linode/actions/reload.rb
125
152
  - lib/vagrant-linode/actions/setup_hostname.rb
126
- - lib/vagrant-linode/actions/setup_key.rb
127
153
  - lib/vagrant-linode/actions/setup_sudo.rb
128
154
  - lib/vagrant-linode/actions/setup_user.rb
129
155
  - lib/vagrant-linode/actions/sync_folders.rb
156
+ - lib/vagrant-linode/commands/create_image.rb
157
+ - lib/vagrant-linode/commands/datacenters.rb
158
+ - lib/vagrant-linode/commands/distributions.rb
159
+ - lib/vagrant-linode/commands/images.rb
160
+ - lib/vagrant-linode/commands/list_images.rb
161
+ - lib/vagrant-linode/commands/networks.rb
162
+ - lib/vagrant-linode/commands/plans.rb
130
163
  - lib/vagrant-linode/commands/rebuild.rb
164
+ - lib/vagrant-linode/commands/root.rb
165
+ - lib/vagrant-linode/commands/servers.rb
131
166
  - lib/vagrant-linode/config.rb
132
167
  - lib/vagrant-linode/errors.rb
133
168
  - lib/vagrant-linode/helpers/client.rb
134
169
  - lib/vagrant-linode/helpers/result.rb
170
+ - lib/vagrant-linode/helpers/waiter.rb
135
171
  - lib/vagrant-linode/plugin.rb
136
172
  - lib/vagrant-linode/provider.rb
137
173
  - lib/vagrant-linode/version.rb
138
174
  - locales/en.yml
175
+ - spec/spec_helper.rb
176
+ - spec/vagrant-linode/actions/list_distributions_spec.rb
177
+ - spec/vagrant-linode/actions/list_plans_spec.rb
178
+ - spec/vagrant-linode/config_spec.rb
139
179
  - test/Vagrantfile
140
180
  - test/cookbooks/test/recipes/default.rb
141
181
  - test/scripts/provision.sh
@@ -153,21 +193,31 @@ require_paths:
153
193
  - lib
154
194
  required_ruby_version: !ruby/object:Gem::Requirement
155
195
  requirements:
156
- - - ">="
196
+ - - '>='
157
197
  - !ruby/object:Gem::Version
158
198
  version: '0'
159
199
  required_rubygems_version: !ruby/object:Gem::Requirement
160
200
  requirements:
161
- - - ">="
201
+ - - '>='
162
202
  - !ruby/object:Gem::Version
163
203
  version: '0'
164
204
  requirements: []
165
205
  rubyforge_project:
166
- rubygems_version: 2.2.2
206
+ rubygems_version: 2.0.14
167
207
  signing_key:
168
208
  specification_version: 4
169
209
  summary: Enables Vagrant to manage Linode linodes
170
210
  test_files:
211
+ - features/provision.feature
212
+ - features/steps/sdk_steps.rb
213
+ - features/steps/server_steps.rb
214
+ - features/support/env.rb
215
+ - features/support/fog_mock.rb
216
+ - features/vagrant-linode.feature
217
+ - spec/spec_helper.rb
218
+ - spec/vagrant-linode/actions/list_distributions_spec.rb
219
+ - spec/vagrant-linode/actions/list_plans_spec.rb
220
+ - spec/vagrant-linode/config_spec.rb
171
221
  - test/Vagrantfile
172
222
  - test/cookbooks/test/recipes/default.rb
173
223
  - test/scripts/provision.sh
@@ -1,19 +0,0 @@
1
- module VagrantPlugins
2
- module Linode
3
- module Actions
4
- class CheckState
5
- def initialize(app, env)
6
- @app = app
7
- @machine = env[:machine]
8
- @logger = Log4r::Logger.new('vagrant::linode::check_state')
9
- end
10
-
11
- def call(env)
12
- env[:machine_state] = @machine.state.id
13
- @logger.info "Machine state is '#{@machine.state.id}'"
14
- @app.call(env)
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,52 +0,0 @@
1
- require 'vagrant-linode/helpers/client'
2
-
3
- module VagrantPlugins
4
- module Linode
5
- module Actions
6
- class SetupKey
7
- include Helpers::Client
8
-
9
- def initialize(app, env)
10
- @app = app
11
- @machine = env[:machine]
12
- @client = client
13
- @logger = Log4r::Logger.new('vagrant::linode::setup_key')
14
- end
15
-
16
- # TODO check the content of the key to see if it has changed
17
- def call(env)
18
- ssh_key_name = @machine.provider_config.ssh_key_name
19
-
20
- begin
21
- # assigns existing ssh key id to env for use by other commands
22
- env[:ssh_key_id] = @client
23
- .request('/v2/account/keys')
24
- .find_id(:ssh_keys, name: ssh_key_name)
25
-
26
- env[:ui].info I18n.t('vagrant_linode.info.using_key', name: ssh_key_name)
27
- rescue Errors::ResultMatchError
28
- env[:ssh_key_id] = create_ssh_key(ssh_key_name, env)
29
- end
30
-
31
- @app.call(env)
32
- end
33
-
34
- private
35
-
36
- def create_ssh_key(name, env)
37
- # assumes public key exists on the same path as private key with .pub ext
38
- path = @machine.config.ssh.private_key_path
39
- path = path[0] if path.is_a?(Array)
40
- path = File.expand_path(path, @machine.env.root_path)
41
- pub_key = Linode.public_key(path)
42
-
43
- env[:ui].info I18n.t('vagrant_linode.info.creating_key', name: name)
44
-
45
- result = @client.post('/v2/account/keys', name: name,
46
- public_key: pub_key)
47
- result['ssh_key']['id']
48
- end
49
- end
50
- end
51
- end
52
- end