vagrant-brightbox 0.2.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fc94646eff27be3d9d076707b26a2cac32387813
4
+ data.tar.gz: e623ba8c109814ffee2a0d469f6442e2961f943f
5
+ SHA512:
6
+ metadata.gz: 0fe15959ed570d6f942dce526a39d4de05190407f550eff4c4f6823efc4bffffc15180bd70dd8f8b46c66efba629b1e45b24765d75e1d57d1567bf7497318e5b
7
+ data.tar.gz: e259b28cf12dbca51ed73ee24b95d6ee27207ae414f2c3c2fa5a974756ca3ae434452b5839e28fb45e2b50bf403ffe62b8b09b31aa2ec708aefb65cb81e67c0d
@@ -1,3 +1,17 @@
1
+ # 0.3.1 (July 2, 2015)
2
+ * Gem FUBAR
3
+
4
+ # 0.3.0 (July 2, 2015)
5
+ * Refresh dependencies
6
+ * Merge from upstream 'vagrant-aws' v0.6.0
7
+ * Don't sync folders on a provision
8
+ * Check for outdated box file
9
+
10
+ # 0.2.1 (unreleased)
11
+
12
+ * Confirm before destroying server
13
+ * Handle BoxURL before validate on box startup.
14
+
1
15
  # 0.2.0 (April 19, 2013)
2
16
 
3
17
  * Merge from upstream 'vagrant-aws' v0.2.2
data/Gemfile CHANGED
@@ -6,5 +6,9 @@ group :development do
6
6
  # We depend on Vagrant for development, but we don't add it as a
7
7
  # gem dependency because we expect to be installed within the
8
8
  # Vagrant environment itself using `vagrant plugin`.
9
- gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
9
+ gem "vagrant", :git => "https://github.com/mitchellh/vagrant.git"
10
+ end
11
+
12
+ group :plugins do
13
+ gem "vagrant-brightbox", path: "."
10
14
  end
data/README.md CHANGED
@@ -209,6 +209,26 @@ the remote machine over SSH.
209
209
  This is good enough for all built-in Vagrant provisioners (shell,
210
210
  chef, and puppet) to work!
211
211
 
212
+ ## Other Examples
213
+
214
+ ### User data
215
+
216
+ You can specify user data for the server being booted.
217
+
218
+ ```ruby
219
+ Vagrant.configure("2") do |config|
220
+ # ... other stuff
221
+
222
+ config.vm.provider "brightbox" do |brightbox|
223
+ # Option 1: a single string
224
+ brightbox.user_data = "#!/bin/bash\necho 'got user data' > /tmp/user_data.log\necho"
225
+
226
+ # Option 2: use a file
227
+ brightbox.user_data = File.read("user_data.txt")
228
+ end
229
+ end
230
+ ```
231
+
212
232
  ## Development
213
233
 
214
234
  To work on the `vagrant-brightbox` plugin, clone this repository out, and use
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
+ Bundler::GemHelper.install_tasks
3
4
  require 'rspec/core/rake_task'
4
5
 
5
6
  # Immediately sync all stdout so that tools like buildbot can
@@ -1,7 +1,6 @@
1
1
  # -*- mode: ruby -*-
2
2
  # vi: set ft=ruby :
3
3
 
4
- Vagrant.require_plugin "vagrant-brightbox"
5
4
 
6
5
  Vagrant.configure("2") do |config|
7
6
  config.vm.box = "dummy"
@@ -8,53 +8,56 @@ module VagrantPlugins
8
8
  # Include the built-in modules so we can use them as top-level things.
9
9
  include Vagrant::Action::Builtin
10
10
 
11
- # This action is called to destroy the remote machine.
12
- def self.action_destroy
11
+ def self.action_package
12
+ Vagrant::Action::Builder.new.tap do |b|
13
+ b.use Unsupported
14
+ end
15
+ end
16
+
17
+ class << self
18
+ alias action_resume action_package
19
+ alias action_suspend action_package
20
+ end
21
+
22
+ # This action is called to halt the server - gracefully or by force.
23
+ def self.action_halt
13
24
  Vagrant::Action::Builder.new.tap do |b|
14
25
  b.use ConfigValidate
15
26
  b.use Call, IsCreated do |env, b2|
16
27
  if env[:result]
17
- b2.use ConnectBrightbox
18
- b2.use DeleteServer
19
- else
28
+ b2.use Call, GracefulHalt, :inactive, :active do |env2, b3|
29
+ if !env2[:result]
30
+ b3.use ConnectBrightbox
31
+ b3.use ForcedHalt
32
+ end
33
+ end
34
+ else
20
35
  b2.use MessageNotCreated
21
36
  end
22
37
  end
23
38
  end
24
39
  end
25
40
 
26
- # This action is called to halt the server - gracefully or by force.
27
- def self.action_halt
28
- Vagrant::Action::Builder.new.tap do |b|
29
- b.use ConfigValidate
30
- b.use Call, IsCreated do |env, b2|
31
- if env[:result]
32
- b2.use Call, GracefulHalt, :inactive, :active do |env2, b3|
33
- if !env2[:result]
34
- b3.use ConnectBrightbox
35
- b3.use ForcedHalt
36
- end
37
- end
38
- else
39
- b2.use MessageNotCreated
40
- end
41
- end
42
- end
43
- end
44
-
45
- # This action reloads the machine - essentially shutting it down
46
- # and bringing it back up again in the new configuration.
47
- def self.action_reload
41
+ # This action is called to destroy the remote machine.
42
+ def self.action_destroy
48
43
  Vagrant::Action::Builder.new.tap do |b|
49
- b.use Call, IsCreated do |env, b2|
50
- if env[:result]
51
- b2.use action_halt
52
- b2.use action_up
53
- else
54
- b2.use MessageNotCreated
55
- end
56
- end
57
- end
44
+ b.use Call, DestroyConfirm do |env, b2|
45
+ if env[:result]
46
+ b2.use ConfigValidate
47
+ b2.use Call, IsCreated do |env2, b3|
48
+ if env2[:result]
49
+ b3.use ConnectBrightbox
50
+ b3.use DeleteServer
51
+ b3.use ProvisionerCleanup if defined?(ProvisionerCleanup)
52
+ else
53
+ b3.use MessageNotCreated
54
+ end
55
+ end
56
+ else
57
+ b2.use MessageWillNotDestroy
58
+ end
59
+ end
60
+ end
58
61
  end
59
62
 
60
63
  # This action is called when `vagrant provision` is called.
@@ -63,15 +66,13 @@ module VagrantPlugins
63
66
  b.use ConfigValidate
64
67
  b.use Call, IsCreated do |env, b2|
65
68
  if env[:result]
66
- b2.use Provision
67
- b2.use SyncFolders
68
- else
69
+ b2.use Provision
70
+ else
69
71
  b2.use MessageNotCreated
70
72
  end
71
73
  end
72
74
  end
73
75
  end
74
-
75
76
 
76
77
  # This action is called to read the SSH info of the machine. The
77
78
  # resulting state is expected to be put into the `:machine_ssh_info`
@@ -95,13 +96,14 @@ module VagrantPlugins
95
96
  end
96
97
  end
97
98
 
99
+ # This action is called to SSH into the machine.
98
100
  def self.action_ssh
99
101
  Vagrant::Action::Builder.new.tap do |b|
100
102
  b.use ConfigValidate
101
103
  b.use Call, IsCreated do |env, b2|
102
104
  if env[:result]
103
- b2.use SSHExec
104
- else
105
+ b2.use SSHExec
106
+ else
105
107
  b2.use MessageNotCreated
106
108
  end
107
109
  end
@@ -110,69 +112,92 @@ module VagrantPlugins
110
112
 
111
113
  def self.action_ssh_run
112
114
  Vagrant::Action::Builder.new.tap do |b|
113
- b.use ConfigValidate
114
- b.use Call, IsCreated do |env, b2|
115
- if env[:result]
116
- b2.use SSHRun
117
- else
118
- b2.use MessageNotCreated
119
- end
120
- end
121
- end
115
+ b.use ConfigValidate
116
+ b.use Call, IsCreated do |env, b2|
117
+ if env[:result]
118
+ b2.use SSHRun
119
+ else
120
+ b2.use MessageNotCreated
121
+ end
122
+ end
123
+ end
124
+ end
125
+
126
+ def self.action_prepare_boot
127
+ Vagrant::Action::Builder.new.tap do |b|
128
+ b.use Provision
129
+ b.use SyncedFolders
130
+ end
122
131
  end
123
132
 
124
133
  def self.action_up
125
134
  Vagrant::Action::Builder.new.tap do |b|
135
+ b.use HandleBox
126
136
  b.use ConfigValidate
127
- b.use ConnectBrightbox
128
- b.use Call, IsCreated do |env, b2|
129
- if env[:result]
130
- b2.use Call, IsRunning do |env2, b3|
131
- if env2[:result]
132
- b3.use MessageAlreadyCreated
133
- else
134
- b3.use StartServer
135
- b3.use MapCloudIp
136
- end
137
- end
138
- else
139
- b2.use TimedProvision
140
- b2.use SyncFolders
141
- b2.use CreateServer
142
- b2.use MapCloudIp
137
+ b.use BoxCheckOutdated
138
+ b.use ConnectBrightbox
139
+ b.use Call, IsCreated do |env1, b1|
140
+ if env1[:result]
141
+ b1.use Call, IsStopped do |env2, b2|
142
+ if env2[:result]
143
+ b2.use action_prepare_boot
144
+ b2.use StartServer
145
+ b2.use MapCloudIp
146
+ else
147
+ b2.use MessageAlreadyCreated
148
+ end
149
+ end
150
+ else
151
+ b1.use action_prepare_boot
152
+ b1.use CreateServer
153
+ b1.use MapCloudIp
143
154
  end
144
155
  end
145
156
  end
146
157
  end
147
158
 
148
- def self.action_package
159
+ # This action reloads the machine - essentially shutting it down
160
+ # and bringing it back up again in the new configuration.
161
+ def self.action_reload
149
162
  Vagrant::Action::Builder.new.tap do |b|
150
- b.use Unsupported
151
- end
163
+ b.use ConfigValidate
164
+ b.use ConnectBrightbox
165
+ b.use Call, IsCreated do |env, b2|
166
+ if env[:result]
167
+ b2.use action_halt
168
+ b2.use Call, WaitForState, :stopped, 120 do |env2, b3|
169
+ if env2[:result]
170
+ b3.use action_up
171
+ else
172
+ # TODO we couldn't reach :stopped, what now?
173
+ end
174
+ end
175
+ else
176
+ b2.use MessageNotCreated
177
+ end
178
+ end
179
+ end
152
180
  end
153
181
 
154
- class << self
155
- alias action_resume action_package
156
- alias action_suspend action_package
157
- end
158
182
 
159
183
  # The autoload farm
160
184
  action_root = Pathname.new(File.expand_path("../action", __FILE__))
161
185
  autoload :ConnectBrightbox, action_root.join("connect_brightbox")
162
- autoload :CreateServer, action_root.join("create_server")
163
- autoload :DeleteServer, action_root.join("delete_server")
164
186
  autoload :IsCreated, action_root.join("is_created")
165
- autoload :IsRunning, action_root.join("is_running")
187
+ autoload :IsStopped, action_root.join("is_stopped")
166
188
  autoload :MessageAlreadyCreated, action_root.join("message_already_created")
167
189
  autoload :MessageNotCreated, action_root.join("message_not_created")
190
+ autoload :MessageWillNotDestroy, action_root.join("message_will_not_destroy")
168
191
  autoload :ReadSSHInfo, action_root.join("read_ssh_info")
169
192
  autoload :ReadState, action_root.join("read_state")
170
- autoload :SyncFolders, action_root.join("sync_folders")
171
- autoload :MapCloudIp, action_root.join("map_cloud_ip")
193
+ autoload :CreateServer, action_root.join("create_server")
194
+ autoload :DeleteServer, action_root.join("delete_server")
172
195
  autoload :ForcedHalt, action_root.join("forced_halt")
196
+ autoload :MapCloudIp, action_root.join("map_cloud_ip")
173
197
  autoload :StartServer, action_root.join("start_server")
174
- autoload :Unsupported, action_root.join("unsupported")
175
198
  autoload :TimedProvision, action_root.join("timed_provision")
199
+ autoload :Unsupported, action_root.join("unsupported")
200
+ autoload :WaitForState, action_root.join("wait_for_state")
176
201
  end
177
202
  end
178
203
  end
@@ -1,4 +1,4 @@
1
- require "fog"
1
+ require "fog/brightbox"
2
2
  require "log4r"
3
3
 
4
4
  module VagrantPlugins
@@ -32,6 +32,15 @@ module VagrantPlugins
32
32
  server_groups = region_config.server_groups
33
33
  user_data = region_config.user_data
34
34
 
35
+ zone_id = normalise_id(
36
+ lambda {env[:brightbox_compute].zones},
37
+ zone,
38
+ /^zon-/)
39
+ server_type_id = normalise_id(
40
+ lambda {env[:brightbox_compute].flavors},
41
+ server_type,
42
+ /^typ-/)
43
+
35
44
  # Launch!
36
45
  env[:ui].info(I18n.t("vagrant_brightbox.launching_server"))
37
46
  env[:ui].info(I18n.t("vagrant_brightbox.supplied_user_data")) if user_data
@@ -41,14 +50,16 @@ module VagrantPlugins
41
50
  env[:ui].info(" -- Name: #{server_name}") if server_name
42
51
  env[:ui].info(" -- Zone: #{zone}") if zone
43
52
  env[:ui].info(" -- Server Groups: #{server_groups.inspect}") if !server_groups.empty?
53
+ @logger.info(" -- Zone ID: #{zone_id}") if zone_id
54
+ @logger.info(" -- Type ID: #{server_type_id}") if server_type_id
44
55
 
45
56
  begin
46
57
  options = {
47
58
  :image_id => image_id,
48
59
  :name => server_name,
49
- :flavor_id => server_type,
60
+ :flavor_id => server_type_id,
50
61
  :user_data => user_data,
51
- :zone_id => zone
62
+ :zone_id => zone_id
52
63
  }
53
64
 
54
65
  options[:server_groups] = server_groups unless server_groups.empty?
@@ -142,6 +153,23 @@ module VagrantPlugins
142
153
  destroy_env[:force_confirm_destroy] = true
143
154
  env[:action_runner].run(Action.action_destroy, destroy_env)
144
155
  end
156
+
157
+ def normalise_id(collection, element, pattern)
158
+ @logger.info("Normalising element #{element.inspect}")
159
+ @logger.info("Against pattern #{pattern.inspect}")
160
+ case element
161
+ when pattern, nil
162
+ element
163
+ else
164
+ result = collection.call.find { |f| f.handle == element }
165
+ if result
166
+ result.id
167
+ else
168
+ element
169
+ end
170
+ end
171
+ end
172
+
145
173
  end
146
174
  end
147
175
  end
@@ -2,14 +2,14 @@ module VagrantPlugins
2
2
  module Brightbox
3
3
  module Action
4
4
  # This can be used with "Call" built-in to check if the machine
5
- # is active and branch in the middleware.
6
- class IsRunning
5
+ # is stopped and branch in the middleware.
6
+ class IsStopped
7
7
  def initialize(app, env)
8
8
  @app = app
9
9
  end
10
10
 
11
11
  def call(env)
12
- env[:result] = env[:machine].state.id == :active
12
+ env[:result] = env[:machine].state.id == :stopped
13
13
  @app.call(env)
14
14
  end
15
15
  end
@@ -7,7 +7,7 @@ module VagrantPlugins
7
7
  end
8
8
 
9
9
  def call(env)
10
- env[:ui].info(I18n.t("vagrant_brightbox.already_created"))
10
+ env[:ui].info(I18n.t("vagrant_brightbox.already_status", :status => "created"))
11
11
  @app.call(env)
12
12
  end
13
13
  end
@@ -0,0 +1,16 @@
1
+ module VagrantPlugins
2
+ module Brightbox
3
+ module Action
4
+ class MessageWillNotDestroy
5
+ def initialize(app, env)
6
+ @app = app
7
+ end
8
+
9
+ def call(env)
10
+ env[:ui].info(I18n.t("vagrant_brightbox.will_not_destroy", name: env[:machine].name))
11
+ @app.call(env)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,41 @@
1
+ require "log4r"
2
+ require "timeout"
3
+
4
+ module VagrantPlugins
5
+ module Brightbox
6
+ module Action
7
+ # This action will wait for a machine to reach a specific state or quit by timeout
8
+ class WaitForState
9
+ # env[:result] will be false in case of timeout.
10
+ # @param [Symbol] state Target machine state.
11
+ # @param [Number] timeout Timeout in seconds.
12
+ def initialize(app, env, state, timeout)
13
+ @app = app
14
+ @logger = Log4r::Logger.new("vagrant_brightbox::action::wait_for_state")
15
+ @state = state
16
+ @timeout = timeout
17
+ end
18
+
19
+ def call(env)
20
+ env[:result] = true
21
+ if env[:machine].state.id == @state
22
+ @logger.info(I18n.t("vagrant_brightbox.already_status", :status => @state))
23
+ else
24
+ @logger.info("Waiting for machine to reach state #{@state}")
25
+ begin
26
+ Timeout.timeout(@timeout) do
27
+ until env[:machine].state.id == @state
28
+ sleep 2
29
+ end
30
+ end
31
+ rescue Timeout::Error
32
+ env[:result] = false # couldn't reach state in time
33
+ end
34
+ end
35
+
36
+ @app.call(env)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -12,7 +12,6 @@ module VagrantPlugins
12
12
  if message.is_a?(Hash)
13
13
  target = message[:message]
14
14
  if target.respond_to?(:body)
15
- puts target.body.inspect
16
15
  decode = Fog::JSON.decode(target.body)
17
16
  if decode["errors"]
18
17
  message[:message] = decode["error_name"]+":\n"+decode["errors"].join("\n")
@@ -24,7 +24,7 @@ module VagrantPlugins
24
24
  Config
25
25
  end
26
26
 
27
- provider(:brightbox) do
27
+ provider(:brightbox, parallel: true) do
28
28
  # Setup logging and i18n
29
29
  setup_logging
30
30
  setup_i18n
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Brightbox
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
1
  en:
2
2
  vagrant_brightbox:
3
- already_created: |-
4
- The server is already created.
3
+ already_status: |-
4
+ The server is already %{status}.
5
5
  deleting_server: |-
6
6
  Deleting server...
7
7
  finding_image: |-
@@ -28,6 +28,9 @@ en:
28
28
  Stopping server...
29
29
  unsupported: |-
30
30
  This command is not supported on the Brightbox Provider
31
+ will_not_destroy: |-
32
+ The server '%{name}' will not be destroyed, since the confirmation
33
+ was declined.
31
34
 
32
35
  config:
33
36
  region_required: |-
@@ -6,18 +6,54 @@ require 'vagrant-brightbox/version'
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "vagrant-brightbox"
8
8
  gem.version = VagrantPlugins::Brightbox::VERSION
9
+ gem.platform = Gem::Platform::RUBY
10
+ gem.license = "MIT"
9
11
  gem.authors = ["Mitchell Hashimoto", "Neil Wilson"]
10
12
  gem.email = ["neil@aldur.co.uk"]
11
13
  gem.description = "Enables Vagrant to manage servers in Brightbox Cloud."
12
14
  gem.summary = "Enables Vagrant to manage servers in Brightbox Cloud."
13
15
 
14
- gem.add_runtime_dependency "fog", "~> 1.10.0"
16
+ gem.required_ruby_version = ">= 2.0.0"
17
+ gem.required_rubygems_version = ">= 1.3.6"
18
+
19
+ gem.add_runtime_dependency "fog-brightbox", "~> 0.7"
15
20
 
16
21
  gem.add_development_dependency "rake"
17
22
  gem.add_development_dependency "rspec", "~> 2.13.0"
18
23
 
19
- gem.files = `git ls-files`.split($/)
20
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
21
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
22
- gem.require_paths = ["lib"]
24
+ # The following block of code determines the files that should be included
25
+ # in the gem. It does this by reading all the files in the directory where
26
+ # this gemspec is, and parsing out the ignored files from the gitignore.
27
+ # Note that the entire gitignore(5) syntax is not supported, specifically
28
+ # the "!" syntax, but it should mostly work correctly.
29
+ root_path = File.dirname(__FILE__)
30
+ all_files = Dir.chdir(root_path) { Dir.glob("**/{*,.*}") }
31
+ all_files.reject! { |file| [".", ".."].include?(File.basename(file)) }
32
+ gitignore_path = File.join(root_path, ".gitignore")
33
+ gitignore = File.readlines(gitignore_path)
34
+ gitignore.map! { |line| line.chomp.strip }
35
+ gitignore.reject! { |line| line.empty? || line =~ /^(#|!)/ }
36
+
37
+ unignored_files = all_files.reject do |file|
38
+ # Ignore any directories, the gemspec only cares about files
39
+ next true if File.directory?(file)
40
+
41
+ # Ignore any paths that match anything in the gitignore. We do
42
+ # two tests here:
43
+ #
44
+ # - First, test to see if the entire path matches the gitignore.
45
+ # - Second, match if the basename does, this makes it so that things
46
+ # like '.DS_Store' will match sub-directories too (same behavior
47
+ # as git).
48
+ #
49
+ gitignore.any? do |ignore|
50
+ File.fnmatch(ignore, file, File::FNM_PATHNAME) ||
51
+ File.fnmatch(ignore, File.basename(file), File::FNM_PATHNAME)
52
+ end
53
+ end
54
+
55
+ gem.files = unignored_files
56
+ gem.executables = unignored_files.map { |f| f[/^bin\/(.*)/, 1] }.compact
57
+ gem.require_path = 'lib'
58
+
23
59
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-brightbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mitchell Hashimoto
@@ -10,44 +9,39 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-04-19 00:00:00.000000000 Z
12
+ date: 2015-07-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- name: fog
15
+ name: fog-brightbox
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
22
- version: 1.10.0
20
+ version: '0.7'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
30
- version: 1.10.0
27
+ version: '0.7'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rake
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - '>='
37
33
  - !ruby/object:Gem::Version
38
34
  version: '0'
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - '>='
45
40
  - !ruby/object:Gem::Version
46
41
  version: '0'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: rspec
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ~>
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ~>
61
54
  - !ruby/object:Gem::Version
@@ -83,16 +76,17 @@ files:
83
76
  - lib/vagrant-brightbox/action/delete_server.rb
84
77
  - lib/vagrant-brightbox/action/forced_halt.rb
85
78
  - lib/vagrant-brightbox/action/is_created.rb
86
- - lib/vagrant-brightbox/action/is_running.rb
79
+ - lib/vagrant-brightbox/action/is_stopped.rb
87
80
  - lib/vagrant-brightbox/action/map_cloud_ip.rb
88
81
  - lib/vagrant-brightbox/action/message_already_created.rb
89
82
  - lib/vagrant-brightbox/action/message_not_created.rb
83
+ - lib/vagrant-brightbox/action/message_will_not_destroy.rb
90
84
  - lib/vagrant-brightbox/action/read_ssh_info.rb
91
85
  - lib/vagrant-brightbox/action/read_state.rb
92
86
  - lib/vagrant-brightbox/action/start_server.rb
93
- - lib/vagrant-brightbox/action/sync_folders.rb
94
87
  - lib/vagrant-brightbox/action/timed_provision.rb
95
88
  - lib/vagrant-brightbox/action/unsupported.rb
89
+ - lib/vagrant-brightbox/action/wait_for_state.rb
96
90
  - lib/vagrant-brightbox/config.rb
97
91
  - lib/vagrant-brightbox/errors.rb
98
92
  - lib/vagrant-brightbox/plugin.rb
@@ -103,34 +97,27 @@ files:
103
97
  - spec/vagrant-brightbox/config_spec.rb
104
98
  - vagrant-brightbox.gemspec
105
99
  homepage:
106
- licenses: []
100
+ licenses:
101
+ - MIT
102
+ metadata: {}
107
103
  post_install_message:
108
104
  rdoc_options: []
109
105
  require_paths:
110
106
  - lib
111
107
  required_ruby_version: !ruby/object:Gem::Requirement
112
- none: false
113
108
  requirements:
114
- - - ! '>='
109
+ - - '>='
115
110
  - !ruby/object:Gem::Version
116
- version: '0'
117
- segments:
118
- - 0
119
- hash: -4267484700850995720
111
+ version: 2.0.0
120
112
  required_rubygems_version: !ruby/object:Gem::Requirement
121
- none: false
122
113
  requirements:
123
- - - ! '>='
114
+ - - '>='
124
115
  - !ruby/object:Gem::Version
125
- version: '0'
126
- segments:
127
- - 0
128
- hash: -4267484700850995720
116
+ version: 1.3.6
129
117
  requirements: []
130
118
  rubyforge_project:
131
- rubygems_version: 1.8.23
119
+ rubygems_version: 2.4.8
132
120
  signing_key:
133
- specification_version: 3
121
+ specification_version: 4
134
122
  summary: Enables Vagrant to manage servers in Brightbox Cloud.
135
- test_files:
136
- - spec/vagrant-brightbox/config_spec.rb
123
+ test_files: []
@@ -1,66 +0,0 @@
1
- require "log4r"
2
-
3
- require "vagrant/util/subprocess"
4
-
5
- require "vagrant/util/scoped_hash_override"
6
-
7
- module VagrantPlugins
8
- module Brightbox
9
- module Action
10
- # This middleware uses `rsync` to sync the folders
11
- class SyncFolders
12
- include Vagrant::Util::ScopedHashOverride
13
-
14
- def initialize(app, env)
15
- @app = app
16
- @logger = Log4r::Logger.new("vagrant_brightbox::action::sync_folders")
17
- end
18
-
19
- def call(env)
20
- @app.call(env)
21
-
22
- ssh_info = env[:machine].ssh_info
23
-
24
- env[:machine].config.vm.synced_folders.each do |id, data|
25
- data = scoped_hash_override(data, :brightbox)
26
-
27
- # Ignore disabled shared folders
28
- next if data[:disabled]
29
-
30
- hostpath = File.expand_path(data[:hostpath], env[:root_path])
31
- guestpath = data[:guestpath]
32
-
33
- # Make sure there is a trailing slash on the host path to
34
- # avoid creating an additional directory with rsync
35
- hostpath = "#{hostpath}/" if hostpath !~ /\/$/
36
-
37
- env[:ui].info(I18n.t("vagrant_brightbox.rsync_folder",
38
- :hostpath => hostpath,
39
- :guestpath => guestpath))
40
-
41
- # Create the guest path
42
- env[:machine].communicate.sudo("mkdir -p '#{guestpath}'")
43
- env[:machine].communicate.sudo(
44
- "chown #{ssh_info[:username]} '#{guestpath}'")
45
-
46
- # Rsync over to the guest path using the SSH info
47
- command = [
48
- "rsync", "--verbose", "--archive", "-z",
49
- "--exclude", ".vagrant/",
50
- "-e", "ssh -p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i '#{ssh_info[:private_key_path]}'",
51
- hostpath,
52
- "#{ssh_info[:username]}@#{ssh_info[:host]}:#{guestpath}"]
53
-
54
- r = Vagrant::Util::Subprocess.execute(*command)
55
- if r.exit_code != 0
56
- raise Errors::RsyncError,
57
- :guestpath => guestpath,
58
- :hostpath => hostpath,
59
- :stderr => r.stderr
60
- end
61
- end
62
- end
63
- end
64
- end
65
- end
66
- end