vagrant-nitrousio 0.0.1

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.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.env-example +4 -0
  3. data/.gitignore +17 -0
  4. data/.rspec +1 -0
  5. data/Gemfile +7 -0
  6. data/LICENSE +10 -0
  7. data/README.md +97 -0
  8. data/Rakefile +26 -0
  9. data/example_box/README.md +13 -0
  10. data/example_box/metadata.json +3 -0
  11. data/lib/vagrant-nitrousio/action/add_pub_key.rb +44 -0
  12. data/lib/vagrant-nitrousio/action/connect_nitrousio.rb +31 -0
  13. data/lib/vagrant-nitrousio/action/create.rb +79 -0
  14. data/lib/vagrant-nitrousio/action/is_created.rb +18 -0
  15. data/lib/vagrant-nitrousio/action/is_running.rb +18 -0
  16. data/lib/vagrant-nitrousio/action/is_stopped.rb +18 -0
  17. data/lib/vagrant-nitrousio/action/is_terminated.rb +18 -0
  18. data/lib/vagrant-nitrousio/action/message_already_created.rb +16 -0
  19. data/lib/vagrant-nitrousio/action/message_already_terminated.rb +16 -0
  20. data/lib/vagrant-nitrousio/action/message_cannot_halt.rb +16 -0
  21. data/lib/vagrant-nitrousio/action/message_cannot_terminate.rb +16 -0
  22. data/lib/vagrant-nitrousio/action/message_not_created.rb +16 -0
  23. data/lib/vagrant-nitrousio/action/message_not_running.rb +16 -0
  24. data/lib/vagrant-nitrousio/action/message_provisioning_not_yet_supported.rb +16 -0
  25. data/lib/vagrant-nitrousio/action/read_ssh_info.rb +60 -0
  26. data/lib/vagrant-nitrousio/action/read_state.rb +36 -0
  27. data/lib/vagrant-nitrousio/action/remove_machine_id.rb +19 -0
  28. data/lib/vagrant-nitrousio/action/start.rb +31 -0
  29. data/lib/vagrant-nitrousio/action/stop.rb +31 -0
  30. data/lib/vagrant-nitrousio/action/sync_folders.rb +57 -0
  31. data/lib/vagrant-nitrousio/action/terminate.rb +34 -0
  32. data/lib/vagrant-nitrousio/action/timed_provision.rb +21 -0
  33. data/lib/vagrant-nitrousio/action/warn_networks.rb +19 -0
  34. data/lib/vagrant-nitrousio/action.rb +166 -0
  35. data/lib/vagrant-nitrousio/client.rb +57 -0
  36. data/lib/vagrant-nitrousio/config.rb +94 -0
  37. data/lib/vagrant-nitrousio/errors.rb +55 -0
  38. data/lib/vagrant-nitrousio/plugin.rb +73 -0
  39. data/lib/vagrant-nitrousio/provider.rb +50 -0
  40. data/lib/vagrant-nitrousio/util/env.rb +12 -0
  41. data/lib/vagrant-nitrousio/util/timer.rb +17 -0
  42. data/lib/vagrant-nitrousio/version.rb +5 -0
  43. data/lib/vagrant-nitrousio.rb +18 -0
  44. data/locales/en.yml +139 -0
  45. data/nitrousio.box +0 -0
  46. data/sample/cookbooks/test/recipes/default.rb +1 -0
  47. data/sample/provision.sh +3 -0
  48. data/sample/puppet/manifests/site.pp +2 -0
  49. data/sample/puppet/modules/baseconfig/files/bashrc +107 -0
  50. data/sample/puppet/modules/baseconfig/manifests/init.pp +21 -0
  51. data/sample/test/hello.txt +1 -0
  52. data/spec/vagrant-nitrousio/action/create_spec.rb +36 -0
  53. data/spec/vagrant-nitrousio/action/read_ssh_info_spec.rb +59 -0
  54. data/spec/vagrant-nitrousio/action/read_state_spec.rb +46 -0
  55. data/spec/vagrant-nitrousio/action/start_spec.rb +32 -0
  56. data/spec/vagrant-nitrousio/action/stop_spec.rb +20 -0
  57. data/spec/vagrant-nitrousio/action/terminate_spec.rb +20 -0
  58. data/spec/vagrant-nitrousio/client_spec.rb +209 -0
  59. data/spec/vagrant-nitrousio/config_spec.rb +48 -0
  60. data/vagrant-nitrousio.gemspec +59 -0
  61. metadata +193 -0
@@ -0,0 +1,209 @@
1
+ require 'vagrant-nitrousio/client'
2
+ require 'oauth2'
3
+
4
+ describe VagrantPlugins::NitrousIO::Client do
5
+ describe 'constructor' do
6
+ it 'initializes oauth2 client' do
7
+ client = VagrantPlugins::NitrousIO::Client.new
8
+ expect(client.connection).to be_an OAuth2::Client
9
+ end
10
+ end
11
+
12
+ describe 'connect' do
13
+ let(:client) { VagrantPlugins::NitrousIO::Client.new }
14
+
15
+ context 'when server grants access' do
16
+ before do
17
+ client.connection.connection.build do |b|
18
+ b.adapter :test do |stub|
19
+ stub.post('api/v0/oauth/token') do |env|
20
+ [200, {'Content-Type' => 'application/json'}, '{"token_type":"Bearer","access_token":"salmon"}']
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ it 'stores the access token' do
27
+ client.authorize("foo", "bar")
28
+ expect(client.access.token).to eq "salmon"
29
+ expect(client.access.client).to eq client.connection
30
+ end
31
+ end
32
+
33
+ context 'when responds with invalid grant' do
34
+ before do
35
+ client.connection.connection.build do |b|
36
+ b.adapter :test do |stub|
37
+ stub.post('api/v0/oauth/token') do |env|
38
+ [400, {'Content-Type' => 'application/json'}, '{"error":"invalid_grant","error_description":"incorrect username or password"}']
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ it 'raises authentication failed error' do
45
+ expect {
46
+ client.authorize("foo", "bar")
47
+ }.to raise_error(VagrantPlugins::NitrousIO::Errors::AuthenticationFailedError)
48
+ end
49
+ end
50
+
51
+ context 'when some other error occurrs' do
52
+ before do
53
+ client.connection.connection.build do |b|
54
+ b.adapter :test do |stub|
55
+ stub.post('api/v0/oauth/token') do |env|
56
+ [500, {'Content-Type' => 'application/json'}, '{"error":"internal_server_error","error_description":"some error occurred"}']
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ it 'raises API error' do
63
+ expect {
64
+ client.authorize("foo", "bar")
65
+ }.to raise_error(VagrantPlugins::NitrousIO::Errors::APIError)
66
+ end
67
+ end
68
+ end
69
+
70
+ describe '#request' do
71
+ let(:client) { VagrantPlugins::NitrousIO::Client.new }
72
+
73
+ it 'delegates request to the connection object' do
74
+ client.connection.connection.build do |b|
75
+ b.adapter :test do |stub|
76
+ stub.post('api/v0/oauth/token') do |env|
77
+ [200, {'Content-Type' => 'application/json'}, '{"token_type":"Bearer","access_token":"salmon"}']
78
+ end
79
+ end
80
+ end
81
+
82
+ client.authorize('foo', 'bar')
83
+
84
+ client.access.should_receive(:request).with :post,
85
+ "#{described_class::API_PATH_PREFIX}/public_keys", parse: :json,
86
+ params: {
87
+ name: 'some-name',
88
+ key: 'some-key'
89
+ },
90
+ headers: { 'User-Agent' => described_class::USER_AGENT }
91
+
92
+ client.request :post, '/public_keys',
93
+ params: {
94
+ name: 'some-name', key: 'some-key'
95
+ }
96
+ end
97
+
98
+ it 'returns a proper exception when a host is not found' do
99
+ client.connection.connection.build do |b|
100
+ b.adapter :test do |stub|
101
+ stub.post('api/v0/oauth/token') do |env|
102
+ [200, {'Content-Type' => 'application/json'}, '{"token_type":"Bearer","access_token":"salmon"}']
103
+ end
104
+
105
+ stub.get('api/v0/hosts/1') do |env|
106
+ [404, {'Content-Type' => 'application/json'}, '{"error":"host_not_found","error_description":"host does not exist"}']
107
+ end
108
+ end
109
+ end
110
+
111
+ client.authorize('foo', 'bar')
112
+ expect { client.request :get, '/hosts/1' }.to raise_error VagrantPlugins::NitrousIO::Errors::HostNotFoundError
113
+ end
114
+
115
+ it 'returns a proper exception when a container is not found' do
116
+ client.connection.connection.build do |b|
117
+ b.adapter :test do |stub|
118
+ stub.post('api/v0/oauth/token') do |env|
119
+ [200, {'Content-Type' => 'application/json'}, '{"token_type":"Bearer","access_token":"salmon"}']
120
+ end
121
+
122
+ stub.get('api/v0/containers/1') do |env|
123
+ [404, {'Content-Type' => 'application/json'}, '{"error":"container_not_found","error_description":"container does not exist"}']
124
+ end
125
+ end
126
+ end
127
+
128
+ client.authorize('foo', 'bar')
129
+ expect { client.request :get, '/containers/1' }.to raise_error VagrantPlugins::NitrousIO::Errors::ContainerNotFoundError
130
+ end
131
+
132
+ it 'returns a proper exception when an image is not found' do
133
+ client.connection.connection.build do |b|
134
+ b.adapter :test do |stub|
135
+ stub.post('api/v0/oauth/token') do |env|
136
+ [200, {'Content-Type' => 'application/json'}, '{"token_type":"Bearer","access_token":"salmon"}']
137
+ end
138
+
139
+ stub.get('api/v0/images/1') do |env|
140
+ [404, {'Content-Type' => 'application/json'}, '{"error":"image_not_found","error_description":"image does not exist"}']
141
+ end
142
+ end
143
+ end
144
+
145
+ client.authorize('foo', 'bar')
146
+ expect { client.request :get, '/images/1' }.to raise_error VagrantPlugins::NitrousIO::Errors::ImageNotFoundError
147
+ end
148
+
149
+ it 'returns an API exception when some other error occurrs' do
150
+ client.connection.connection.build do |b|
151
+ b.adapter :test do |stub|
152
+ stub.post('api/v0/oauth/token') do |env|
153
+ [200, {'Content-Type' => 'application/json'}, '{"token_type":"Bearer","access_token":"salmon"}']
154
+ end
155
+
156
+ stub.post('api/v0/containers') do |env|
157
+ [400, {'Content-Type' => 'application/json'}, '{"error":"invalid_request","error_description":"missing params"}']
158
+ end
159
+ end
160
+ end
161
+
162
+ client.authorize('foo', 'bar')
163
+ expect { client.request :post, '/containers' }.to raise_error VagrantPlugins::NitrousIO::Errors::APIError
164
+ end
165
+ end
166
+
167
+ describe '#fetch_box_state' do
168
+ let(:client) { VagrantPlugins::NitrousIO::Client.new }
169
+
170
+ before do
171
+ client.connection.connection.build do |b|
172
+ b.adapter :test do |stub|
173
+ stub.post('api/v0/oauth/token') do |env|
174
+ [200, {'Content-Type' => 'application/json'}, '{"token_type":"Bearer","access_token":"salmon"}']
175
+ end
176
+ end
177
+ end
178
+
179
+ client.authorize('foo', 'bar')
180
+ end
181
+
182
+ context 'when request is successful' do
183
+ before do
184
+ json = '{"container":{"id":123,"state":"running"}}'
185
+ response = double 'response', stats: 200, body: json, parsed: JSON.parse(json)
186
+ client.should_receive(:request).with(:get, '/containers/123').and_return response
187
+ end
188
+
189
+ it "returns the box's state" do
190
+ state = client.fetch_box_state(123)
191
+ expect(state).to eq :running
192
+ end
193
+ end
194
+
195
+ context 'when request returns 404' do
196
+ before do
197
+ response = double 'response', status: 404
198
+ error = VagrantPlugins::NitrousIO::Errors::ContainerNotFoundError.new('request error')
199
+ error.stub(:response) { response }
200
+ client.should_receive(:request).with(:get, '/containers/123').and_raise error
201
+ end
202
+
203
+ it 'returns nil' do
204
+ state = client.fetch_box_state(123)
205
+ expect(state).to be_nil
206
+ end
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,48 @@
1
+ require 'vagrant-nitrousio/config'
2
+
3
+ describe VagrantPlugins::NitrousIO::Config do
4
+ let(:instance) { described_class.new }
5
+
6
+ describe 'defaults' do
7
+ subject do
8
+ instance.tap do |o|
9
+ o.finalize!
10
+ end
11
+ end
12
+
13
+ its('username') { should be_nil }
14
+ its('password') { should be_nil }
15
+ its('host') { should be_nil }
16
+ its('image') { should eq 'nitrousio/vagrant:latest' }
17
+ its("ssh_private_key_path") { should be_nil }
18
+ end
19
+
20
+ describe 'overriding defaults' do
21
+ [:username, :password, :host, :image, :ssh_private_key_path].each do |attribute|
22
+ it "does not set default #{attribute} if overridden" do
23
+ instance.send("#{attribute}=".to_sym, 'foo')
24
+ instance.finalize!
25
+ expect(instance.send(attribute)).to eq 'foo'
26
+ end
27
+ end
28
+ end
29
+
30
+ describe 'validation' do
31
+ before do
32
+ instance.username = nil
33
+ instance.password = nil
34
+ instance.host = nil
35
+ instance.ssh_private_key_path = nil
36
+
37
+ machine = double 'machine'
38
+ machine.stub_chain(:env, :root_path).and_return nil
39
+ @errors = instance.validate(machine)['Nitrous.IO Provider']
40
+ end
41
+
42
+ [:username, :password, :host, :ssh_private_key_path].each do |attribute|
43
+ it "requires #{attribute} to be specified" do
44
+ expect(@errors).to include I18n.t("vagrant_nitrousio.config.#{attribute}_required")
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,59 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vagrant-nitrousio/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'vagrant-nitrousio'
8
+ s.version = VagrantPlugins::NitrousIO::VERSION
9
+ s.platform = Gem::Platform::RUBY
10
+ s.authors = ['Irrational Industries Inc.', 'Peter Jihoon Kim', 'Arun Thampi', 'Mitchell Hashimoto']
11
+ s.email = ['hello@nitrous.io', 'raingrove@gmail.com', 'arun.thampi@gmail.com', 'mitchell.hashimoto@gmail.com']
12
+ s.homepage = 'https://www.nitrous.io/'
13
+ s.summary = 'Enables Vagrant to manage boxes in Nitrous.IO.'
14
+ s.description = 'Enables Vagrant to manage boxes in Nitrous.IO.'
15
+ s.license = 'MIT'
16
+
17
+ s.add_runtime_dependency 'oauth2', '~> 0.9.1'
18
+
19
+ s.add_development_dependency 'bundler', '~> 1.3'
20
+ s.add_development_dependency 'rake'
21
+ s.add_development_dependency "rspec-core", "~> 2.13.0"
22
+ s.add_development_dependency "rspec-expectations", "~> 2.13.0"
23
+ s.add_development_dependency "rspec-mocks", "~> 2.13.0"
24
+
25
+ # The following block of code determines the files that should be included
26
+ # in the gem. It does this by reading all the files in the directory where
27
+ # this gemspec is, and parsing out the ignored files from the gitignore.
28
+ # Note that the entire gitignore(5) syntax is not supported, specifically
29
+ # the "!" syntax, but it should mostly work correctly.
30
+ root_path = File.dirname(__FILE__)
31
+ all_files = Dir.chdir(root_path) { Dir.glob("**/{*,.*}") }
32
+ all_files.reject! { |file| [".", ".."].include?(File.basename(file)) }
33
+ gitignore_path = File.join(root_path, ".gitignore")
34
+ gitignore = File.readlines(gitignore_path)
35
+ gitignore.map! { |line| line.chomp.strip }
36
+ gitignore.reject! { |line| line.empty? || line =~ /^(#|!)/ }
37
+
38
+ unignored_files = all_files.reject do |file|
39
+ # Ignore any directories, the gemspec only cares about files
40
+ next true if File.directory?(file)
41
+
42
+ # Ignore any paths that match anything in the gitignore. We do
43
+ # two tests here:
44
+ #
45
+ # - First, test to see if the entire path matches the gitignore.
46
+ # - Second, match if the basename does, this makes it so that things
47
+ # like '.DS_Store' will match sub-directories too (same behavior
48
+ # as git).
49
+ #
50
+ gitignore.any? do |ignore|
51
+ File.fnmatch(ignore, file, File::FNM_PATHNAME) ||
52
+ File.fnmatch(ignore, File.basename(file), File::FNM_PATHNAME)
53
+ end
54
+ end
55
+
56
+ s.files = unignored_files
57
+ s.executables = unignored_files.map { |f| f[/^bin\/(.*)/, 1] }.compact
58
+ s.require_path = 'lib'
59
+ end
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-nitrousio
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Irrational Industries Inc.
8
+ - Peter Jihoon Kim
9
+ - Arun Thampi
10
+ - Mitchell Hashimoto
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2014-10-27 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: oauth2
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: 0.9.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: '1.3'
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.3'
44
+ - !ruby/object:Gem::Dependency
45
+ name: rake
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec-core
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: 2.13.0
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: 2.13.0
72
+ - !ruby/object:Gem::Dependency
73
+ name: rspec-expectations
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: 2.13.0
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: 2.13.0
86
+ - !ruby/object:Gem::Dependency
87
+ name: rspec-mocks
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: 2.13.0
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 2.13.0
100
+ description: Enables Vagrant to manage boxes in Nitrous.IO.
101
+ email:
102
+ - hello@nitrous.io
103
+ - raingrove@gmail.com
104
+ - arun.thampi@gmail.com
105
+ - mitchell.hashimoto@gmail.com
106
+ executables: []
107
+ extensions: []
108
+ extra_rdoc_files: []
109
+ files:
110
+ - ".env-example"
111
+ - ".gitignore"
112
+ - ".rspec"
113
+ - Gemfile
114
+ - LICENSE
115
+ - README.md
116
+ - Rakefile
117
+ - example_box/README.md
118
+ - example_box/metadata.json
119
+ - lib/vagrant-nitrousio.rb
120
+ - lib/vagrant-nitrousio/action.rb
121
+ - lib/vagrant-nitrousio/action/add_pub_key.rb
122
+ - lib/vagrant-nitrousio/action/connect_nitrousio.rb
123
+ - lib/vagrant-nitrousio/action/create.rb
124
+ - lib/vagrant-nitrousio/action/is_created.rb
125
+ - lib/vagrant-nitrousio/action/is_running.rb
126
+ - lib/vagrant-nitrousio/action/is_stopped.rb
127
+ - lib/vagrant-nitrousio/action/is_terminated.rb
128
+ - lib/vagrant-nitrousio/action/message_already_created.rb
129
+ - lib/vagrant-nitrousio/action/message_already_terminated.rb
130
+ - lib/vagrant-nitrousio/action/message_cannot_halt.rb
131
+ - lib/vagrant-nitrousio/action/message_cannot_terminate.rb
132
+ - lib/vagrant-nitrousio/action/message_not_created.rb
133
+ - lib/vagrant-nitrousio/action/message_not_running.rb
134
+ - lib/vagrant-nitrousio/action/message_provisioning_not_yet_supported.rb
135
+ - lib/vagrant-nitrousio/action/read_ssh_info.rb
136
+ - lib/vagrant-nitrousio/action/read_state.rb
137
+ - lib/vagrant-nitrousio/action/remove_machine_id.rb
138
+ - lib/vagrant-nitrousio/action/start.rb
139
+ - lib/vagrant-nitrousio/action/stop.rb
140
+ - lib/vagrant-nitrousio/action/sync_folders.rb
141
+ - lib/vagrant-nitrousio/action/terminate.rb
142
+ - lib/vagrant-nitrousio/action/timed_provision.rb
143
+ - lib/vagrant-nitrousio/action/warn_networks.rb
144
+ - lib/vagrant-nitrousio/client.rb
145
+ - lib/vagrant-nitrousio/config.rb
146
+ - lib/vagrant-nitrousio/errors.rb
147
+ - lib/vagrant-nitrousio/plugin.rb
148
+ - lib/vagrant-nitrousio/provider.rb
149
+ - lib/vagrant-nitrousio/util/env.rb
150
+ - lib/vagrant-nitrousio/util/timer.rb
151
+ - lib/vagrant-nitrousio/version.rb
152
+ - locales/en.yml
153
+ - nitrousio.box
154
+ - sample/cookbooks/test/recipes/default.rb
155
+ - sample/provision.sh
156
+ - sample/puppet/manifests/site.pp
157
+ - sample/puppet/modules/baseconfig/files/bashrc
158
+ - sample/puppet/modules/baseconfig/manifests/init.pp
159
+ - sample/test/hello.txt
160
+ - spec/vagrant-nitrousio/action/create_spec.rb
161
+ - spec/vagrant-nitrousio/action/read_ssh_info_spec.rb
162
+ - spec/vagrant-nitrousio/action/read_state_spec.rb
163
+ - spec/vagrant-nitrousio/action/start_spec.rb
164
+ - spec/vagrant-nitrousio/action/stop_spec.rb
165
+ - spec/vagrant-nitrousio/action/terminate_spec.rb
166
+ - spec/vagrant-nitrousio/client_spec.rb
167
+ - spec/vagrant-nitrousio/config_spec.rb
168
+ - vagrant-nitrousio.gemspec
169
+ homepage: https://www.nitrous.io/
170
+ licenses:
171
+ - MIT
172
+ metadata: {}
173
+ post_install_message:
174
+ rdoc_options: []
175
+ require_paths:
176
+ - lib
177
+ required_ruby_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ requirements: []
188
+ rubyforge_project:
189
+ rubygems_version: 2.2.2
190
+ signing_key:
191
+ specification_version: 4
192
+ summary: Enables Vagrant to manage boxes in Nitrous.IO.
193
+ test_files: []