vagrant-scaleway 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.ruby-version +1 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +69 -0
- data/Rakefile +9 -0
- data/dummy.box +0 -0
- data/example_box/metadata.json +3 -0
- data/lib/vagrant-scaleway.rb +17 -0
- data/lib/vagrant-scaleway/action.rb +179 -0
- data/lib/vagrant-scaleway/action/connect_scaleway.rb +34 -0
- data/lib/vagrant-scaleway/action/create_server.rb +75 -0
- data/lib/vagrant-scaleway/action/destroy_server.rb +34 -0
- data/lib/vagrant-scaleway/action/is_created.rb +18 -0
- data/lib/vagrant-scaleway/action/is_stopped.rb +18 -0
- data/lib/vagrant-scaleway/action/message_already_created.rb +16 -0
- data/lib/vagrant-scaleway/action/message_not_created.rb +16 -0
- data/lib/vagrant-scaleway/action/message_will_not_destroy.rb +16 -0
- data/lib/vagrant-scaleway/action/read_ssh_info.rb +50 -0
- data/lib/vagrant-scaleway/action/read_state.rb +36 -0
- data/lib/vagrant-scaleway/action/start_server.rb +90 -0
- data/lib/vagrant-scaleway/action/stop_server.rb +26 -0
- data/lib/vagrant-scaleway/action/warn_networks.rb +19 -0
- data/lib/vagrant-scaleway/config.rb +113 -0
- data/lib/vagrant-scaleway/errors.rb +21 -0
- data/lib/vagrant-scaleway/plugin.rb +73 -0
- data/lib/vagrant-scaleway/provider.rb +47 -0
- data/lib/vagrant-scaleway/util/timer.rb +17 -0
- data/lib/vagrant-scaleway/version.rb +5 -0
- data/locales/en.yml +81 -0
- data/vagrant-scaleway.gemspec +25 -0
- metadata +131 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Scaleway
|
3
|
+
module Errors
|
4
|
+
class VagrantScalewayError < Vagrant::Errors::VagrantError
|
5
|
+
error_namespace('vagrant_scaleway.errors')
|
6
|
+
end
|
7
|
+
|
8
|
+
class FogError < VagrantScalewayError
|
9
|
+
error_key(:fog_error)
|
10
|
+
end
|
11
|
+
|
12
|
+
class InternalFogError < VagrantScalewayError
|
13
|
+
error_key(:internal_fog_error)
|
14
|
+
end
|
15
|
+
|
16
|
+
class ServerReadyTimeout < VagrantScalewayError
|
17
|
+
error_key(:server_ready_timeout)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
begin
|
2
|
+
require 'vagrant'
|
3
|
+
rescue LoadError
|
4
|
+
raise 'The Scaleway provider must be run within Vagrant.'
|
5
|
+
end
|
6
|
+
|
7
|
+
# This is a sanity check to make sure no one is attempting to install
|
8
|
+
# this into an early Vagrant version.
|
9
|
+
if Vagrant::VERSION < '1.5.0'
|
10
|
+
raise 'Scaleway provider is only compatible with Vagrant 1.5+'
|
11
|
+
end
|
12
|
+
|
13
|
+
module VagrantPlugins
|
14
|
+
module Scaleway
|
15
|
+
class Plugin < Vagrant.plugin('2')
|
16
|
+
name 'Scaleway'
|
17
|
+
description <<-DESC
|
18
|
+
This plugin installs a provider that allows Vagrant to manage
|
19
|
+
machines in Scaleway.
|
20
|
+
DESC
|
21
|
+
|
22
|
+
config(:scaleway, :provider) do
|
23
|
+
require_relative 'config'
|
24
|
+
Config
|
25
|
+
end
|
26
|
+
|
27
|
+
provider(:scaleway, parallel: true, box_optional: true) do
|
28
|
+
# Setup logging and i18n
|
29
|
+
setup_logging
|
30
|
+
setup_i18n
|
31
|
+
|
32
|
+
# Return the provider
|
33
|
+
require_relative 'provider'
|
34
|
+
Provider
|
35
|
+
end
|
36
|
+
|
37
|
+
# This initializes the internationalization strings.
|
38
|
+
def self.setup_i18n
|
39
|
+
I18n.load_path << File.expand_path('locales/en.yml', Scaleway.source_root)
|
40
|
+
I18n.reload!
|
41
|
+
end
|
42
|
+
|
43
|
+
# This sets up our log level to be whatever VAGRANT_LOG is.
|
44
|
+
def self.setup_logging
|
45
|
+
require 'log4r'
|
46
|
+
|
47
|
+
level = nil
|
48
|
+
begin
|
49
|
+
level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
|
50
|
+
rescue NameError
|
51
|
+
# This means that the logging constant wasn't found,
|
52
|
+
# which is fine. We just keep `level` as `nil`. But
|
53
|
+
# we tell the user.
|
54
|
+
level = nil
|
55
|
+
end
|
56
|
+
|
57
|
+
# Some constants, such as "true" resolve to booleans, so the
|
58
|
+
# above error checking doesn't catch it. This will check to make
|
59
|
+
# sure that the log level is an integer, as Log4r requires.
|
60
|
+
level = nil unless level.is_a?(Integer)
|
61
|
+
|
62
|
+
# Set the logging level on all "vagrant" namespaced
|
63
|
+
# logs as long as we have a valid level.
|
64
|
+
if level
|
65
|
+
logger = Log4r::Logger.new('vagrant_scaleway')
|
66
|
+
logger.outputters = Log4r::Outputter.stderr
|
67
|
+
logger.level = level
|
68
|
+
logger = nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Scaleway
|
3
|
+
class Provider < Vagrant.plugin('2', :provider)
|
4
|
+
def initialize(machine)
|
5
|
+
@machine = machine
|
6
|
+
end
|
7
|
+
|
8
|
+
def action(name)
|
9
|
+
# Attempt to get the action method from the Action class if it
|
10
|
+
# exists, otherwise return nil to show that we don't support the
|
11
|
+
# given action.
|
12
|
+
action_method = "action_#{name}"
|
13
|
+
return Action.send(action_method) if Action.respond_to?(action_method)
|
14
|
+
nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def ssh_info
|
18
|
+
# Run a custom action called "read_ssh_info" which does what it
|
19
|
+
# says and puts the resulting SSH info into the `:machine_ssh_info`
|
20
|
+
# key in the environment.
|
21
|
+
env = @machine.action('read_ssh_info', lock: false)
|
22
|
+
env[:machine_ssh_info]
|
23
|
+
end
|
24
|
+
|
25
|
+
def state
|
26
|
+
# Run a custom action we define called "read_state" which does
|
27
|
+
# what it says. It puts the state in the `:machine_state_id`
|
28
|
+
# key in the environment.
|
29
|
+
env = @machine.action('read_state', lock: false)
|
30
|
+
|
31
|
+
state_id = env[:machine_state_id]
|
32
|
+
|
33
|
+
# Get the short and long description
|
34
|
+
short = I18n.t("vagrant_scaleway.states.short_#{state_id}")
|
35
|
+
long = I18n.t("vagrant_scaleway.states.long_#{state_id}")
|
36
|
+
|
37
|
+
# Return the MachineState object
|
38
|
+
Vagrant::MachineState.new(state_id, short, long)
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_s
|
42
|
+
id = @machine.id.nil? ? 'new' : @machine.id
|
43
|
+
"Scaleway (#{id})"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Scaleway
|
3
|
+
module Util
|
4
|
+
class Timer
|
5
|
+
# A basic utility method that times the execution of the given
|
6
|
+
# block and returns it.
|
7
|
+
def self.time
|
8
|
+
start_time = Time.now.to_f
|
9
|
+
yield
|
10
|
+
end_time = Time.now.to_f
|
11
|
+
|
12
|
+
end_time - start_time
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
en:
|
2
|
+
vagrant_scaleway:
|
3
|
+
already_status: |-
|
4
|
+
The machine is already %{status}.
|
5
|
+
|
6
|
+
creating_server: |-
|
7
|
+
Creating a server with the following settings...
|
8
|
+
not_created: |-
|
9
|
+
Server is not created. Please run `vagrant up` first.
|
10
|
+
ready: |-
|
11
|
+
Machine is booted and ready for use!
|
12
|
+
starting: |-
|
13
|
+
Starting the server...
|
14
|
+
stopping: |-
|
15
|
+
Stopping the server...
|
16
|
+
destroying: |-
|
17
|
+
Destroying the server...
|
18
|
+
waiting_for_ready: |-
|
19
|
+
Waiting for server to become "ready"...
|
20
|
+
waiting_for_ssh: |-
|
21
|
+
Waiting for SSH to become available...
|
22
|
+
warn_networks: |-
|
23
|
+
Warning! The Scaleway provider doesn't support any of the Vagrant
|
24
|
+
high-level network configurations (`config.vm.network`). They
|
25
|
+
will be silently ignored.
|
26
|
+
will_not_destroy: |-
|
27
|
+
The server '%{name}' will not be destroyed, since the confirmation
|
28
|
+
was declined.
|
29
|
+
|
30
|
+
config:
|
31
|
+
organization_required: |-
|
32
|
+
A organization must be specified via "organization" option.
|
33
|
+
token_required: |-
|
34
|
+
A token must be specified via "token" option.
|
35
|
+
|
36
|
+
errors:
|
37
|
+
fog_error: |-
|
38
|
+
There was an error talking to Scaleway. The error message is shown
|
39
|
+
below:
|
40
|
+
|
41
|
+
%{message}
|
42
|
+
internal_fog_error: |-
|
43
|
+
There was an error talking to Scaleway. The error message is shown
|
44
|
+
below:
|
45
|
+
|
46
|
+
Error: %{error}
|
47
|
+
Response: %{response}
|
48
|
+
server_ready_timeout: |-
|
49
|
+
The server never became "ready" in Scaleway. The timeout currently
|
50
|
+
set waiting for the server to become ready is %{timeout} seconds.
|
51
|
+
Please verify that the machine properly boots. If you need more time
|
52
|
+
set the `server_ready_timeout` configuration on the Scaleway provider.
|
53
|
+
|
54
|
+
states:
|
55
|
+
short_not_created: |-
|
56
|
+
not created
|
57
|
+
long_not_created: |-
|
58
|
+
The server is not created. Run `vagrant up` to create it.
|
59
|
+
|
60
|
+
short_stopped: |-
|
61
|
+
stopped
|
62
|
+
long_stopped: |-
|
63
|
+
The server is stopped. Run `vagrant up` to start it.
|
64
|
+
|
65
|
+
short_stopping: |-
|
66
|
+
stopping
|
67
|
+
long_stopping: |-
|
68
|
+
The server is stopping. Wait until is completely stopped to
|
69
|
+
run `vagrant up` and start it.
|
70
|
+
|
71
|
+
short_starting: |-
|
72
|
+
starting
|
73
|
+
long_starting: |-
|
74
|
+
The server is starting. You must wait for this to
|
75
|
+
complete before you can access it.
|
76
|
+
|
77
|
+
short_running: |-
|
78
|
+
running
|
79
|
+
long_running: |-
|
80
|
+
The server is running. To stop this machine, you can run
|
81
|
+
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'vagrant-scaleway/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'vagrant-scaleway'
|
8
|
+
spec.version = VagrantPlugins::Scaleway::VERSION
|
9
|
+
spec.authors = ['Satoshi Matsumoto']
|
10
|
+
spec.email = ['kaorimatz@gmail.com']
|
11
|
+
|
12
|
+
spec.summary = 'Vagrant provider plugin for Scaleway'
|
13
|
+
spec.description = 'Enables Vagrant to manage machines in Scaleway.'
|
14
|
+
spec.homepage = 'https://github.com/kaorimatz/vagrant-scaleway'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
|
20
|
+
spec.add_development_dependency 'bundler'
|
21
|
+
spec.add_development_dependency 'rake'
|
22
|
+
spec.add_development_dependency 'rubocop'
|
23
|
+
|
24
|
+
spec.add_dependency 'fog-scaleway', '~> 0.1'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vagrant-scaleway
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Satoshi Matsumoto
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: fog-scaleway
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.1'
|
69
|
+
description: Enables Vagrant to manage machines in Scaleway.
|
70
|
+
email:
|
71
|
+
- kaorimatz@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".ruby-version"
|
78
|
+
- Gemfile
|
79
|
+
- LICENSE.txt
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- dummy.box
|
83
|
+
- example_box/metadata.json
|
84
|
+
- lib/vagrant-scaleway.rb
|
85
|
+
- lib/vagrant-scaleway/action.rb
|
86
|
+
- lib/vagrant-scaleway/action/connect_scaleway.rb
|
87
|
+
- lib/vagrant-scaleway/action/create_server.rb
|
88
|
+
- lib/vagrant-scaleway/action/destroy_server.rb
|
89
|
+
- lib/vagrant-scaleway/action/is_created.rb
|
90
|
+
- lib/vagrant-scaleway/action/is_stopped.rb
|
91
|
+
- lib/vagrant-scaleway/action/message_already_created.rb
|
92
|
+
- lib/vagrant-scaleway/action/message_not_created.rb
|
93
|
+
- lib/vagrant-scaleway/action/message_will_not_destroy.rb
|
94
|
+
- lib/vagrant-scaleway/action/read_ssh_info.rb
|
95
|
+
- lib/vagrant-scaleway/action/read_state.rb
|
96
|
+
- lib/vagrant-scaleway/action/start_server.rb
|
97
|
+
- lib/vagrant-scaleway/action/stop_server.rb
|
98
|
+
- lib/vagrant-scaleway/action/warn_networks.rb
|
99
|
+
- lib/vagrant-scaleway/config.rb
|
100
|
+
- lib/vagrant-scaleway/errors.rb
|
101
|
+
- lib/vagrant-scaleway/plugin.rb
|
102
|
+
- lib/vagrant-scaleway/provider.rb
|
103
|
+
- lib/vagrant-scaleway/util/timer.rb
|
104
|
+
- lib/vagrant-scaleway/version.rb
|
105
|
+
- locales/en.yml
|
106
|
+
- vagrant-scaleway.gemspec
|
107
|
+
homepage: https://github.com/kaorimatz/vagrant-scaleway
|
108
|
+
licenses:
|
109
|
+
- MIT
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.6.6
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: Vagrant provider plugin for Scaleway
|
131
|
+
test_files: []
|