vagrant-profitbricks 1.0.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/README.md +326 -174
- data/Rakefile +4 -2
- data/Vagrantfile +18 -13
- data/example_box/Vagrantfile +9 -0
- data/example_box/profitbricks.box +0 -0
- data/lib/vagrant-profitbricks.rb +12 -11
- data/lib/vagrant-profitbricks/action.rb +79 -40
- data/lib/vagrant-profitbricks/action/connect_profitbricks.rb +14 -12
- data/lib/vagrant-profitbricks/action/create_server.rb +74 -67
- data/lib/vagrant-profitbricks/action/delete_server.rb +33 -13
- data/lib/vagrant-profitbricks/action/is_created.rb +3 -1
- data/lib/vagrant-profitbricks/action/list_flavors.rb +5 -3
- data/lib/vagrant-profitbricks/action/list_images.rb +6 -4
- data/lib/vagrant-profitbricks/action/message_already_created.rb +4 -2
- data/lib/vagrant-profitbricks/action/message_not_created.rb +4 -2
- data/lib/vagrant-profitbricks/action/read_ssh_info.rb +10 -16
- data/lib/vagrant-profitbricks/action/read_state.rb +19 -12
- data/lib/vagrant-profitbricks/action/reboot_server.rb +45 -0
- data/lib/vagrant-profitbricks/action/run_init_script.rb +5 -3
- data/lib/vagrant-profitbricks/action/start_server.rb +50 -0
- data/lib/vagrant-profitbricks/action/stop_server.rb +51 -0
- data/lib/vagrant-profitbricks/command/datacenters.rb +34 -0
- data/lib/vagrant-profitbricks/command/flavors.rb +19 -6
- data/lib/vagrant-profitbricks/command/images.rb +21 -20
- data/lib/vagrant-profitbricks/command/locations.rb +34 -0
- data/lib/vagrant-profitbricks/command/root.rb +28 -23
- data/lib/vagrant-profitbricks/command/servers.rb +7 -4
- data/lib/vagrant-profitbricks/command/snapshots.rb +34 -0
- data/lib/vagrant-profitbricks/command/utils.rb +27 -0
- data/lib/vagrant-profitbricks/config.rb +44 -39
- data/lib/vagrant-profitbricks/errors.rb +14 -5
- data/lib/vagrant-profitbricks/plugin.rb +13 -11
- data/lib/vagrant-profitbricks/provider.rb +8 -6
- data/lib/vagrant-profitbricks/version.rb +3 -1
- data/locales/en.yml +28 -7
- data/spec/spec_helper.rb +4 -2
- data/spec/vagrant-profitbricks/config_spec.rb +65 -96
- data/vagrant-profitbricks.gemspec +17 -14
- metadata +42 -47
- data/Appraisals +0 -35
- data/CHANGELOG.md +0 -3
- data/RELEASE.md +0 -15
- data/bootstrap.cmd +0 -16
- data/features/provision.feature +0 -36
- data/features/steps/sdk_steps.rb +0 -13
- data/features/steps/server_steps.rb +0 -25
- data/features/support/env.rb +0 -35
- data/features/support/fog_mock.rb +0 -17
- data/features/vagrant-profitbricks.feature +0 -66
- data/lib/vagrant-profitbricks/action/create_image.rb +0 -53
- data/lib/vagrant-profitbricks/action/list_keypairs.rb +0 -20
- data/lib/vagrant-profitbricks/action/list_networks.rb +0 -20
- data/lib/vagrant-profitbricks/action/list_servers.rb +0 -21
- data/lib/vagrant-profitbricks/command/create_image.rb +0 -21
- data/lib/vagrant-profitbricks/command/keypairs.rb +0 -21
- data/lib/vagrant-profitbricks/command/list_images.rb +0 -21
- data/lib/vagrant-profitbricks/command/networks.rb +0 -21
- data/spec/vagrant-profitbricks/actions/list_flavors_spec.rb +0 -48
- data/spec/vagrant-profitbricks/actions/list_images_spec.rb +0 -48
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant-profitbricks/command/utils'
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module ProfitBricks
|
7
|
+
module Command
|
8
|
+
class ListDatacenters < Vagrant.plugin('2', :command)
|
9
|
+
include VagrantPlugins::ProfitBricks::Command::Utils
|
10
|
+
def execute
|
11
|
+
opts = OptionParser.new do |o|
|
12
|
+
o.banner = 'Usage: vagrant profitbricks datacenters [options]'
|
13
|
+
end
|
14
|
+
|
15
|
+
argv = parse_options(opts)
|
16
|
+
return unless argv
|
17
|
+
|
18
|
+
compute = fog_pb(argv[0])
|
19
|
+
|
20
|
+
rows = []
|
21
|
+
|
22
|
+
compute.datacenters.sort_by(&:id).each do |dc|
|
23
|
+
rows << [
|
24
|
+
dc.id,
|
25
|
+
dc.name
|
26
|
+
]
|
27
|
+
end
|
28
|
+
|
29
|
+
display_table(@env, %w[ID Name], rows)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,19 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant-profitbricks/command/utils'
|
4
|
+
|
1
5
|
module VagrantPlugins
|
2
6
|
module ProfitBricks
|
3
7
|
module Command
|
4
|
-
class
|
8
|
+
class ListFlavors < Vagrant.plugin('2', :command)
|
9
|
+
include VagrantPlugins::ProfitBricks::Command::Utils
|
5
10
|
def execute
|
6
|
-
options = {}
|
7
11
|
opts = OptionParser.new do |o|
|
8
|
-
o.banner =
|
12
|
+
o.banner = 'Usage: vagrant profitbricks flavors [options]'
|
9
13
|
end
|
10
14
|
|
11
15
|
argv = parse_options(opts)
|
12
|
-
return
|
16
|
+
return unless argv
|
17
|
+
|
18
|
+
compute = fog_pb(argv[0])
|
13
19
|
|
14
|
-
|
15
|
-
|
20
|
+
rows = []
|
21
|
+
|
22
|
+
compute.flavors.sort_by(&:id).each do |flavor|
|
23
|
+
rows << [
|
24
|
+
flavor.id,
|
25
|
+
flavor.name
|
26
|
+
]
|
16
27
|
end
|
28
|
+
|
29
|
+
display_table(@env, %w[ID Name], rows)
|
17
30
|
end
|
18
31
|
end
|
19
32
|
end
|
@@ -1,31 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant-profitbricks/command/utils'
|
4
|
+
|
1
5
|
module VagrantPlugins
|
2
6
|
module ProfitBricks
|
3
7
|
module Command
|
4
|
-
class
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
@subcommands.register(:list) do
|
10
|
-
require File.expand_path("../list_images", __FILE__)
|
11
|
-
ListImages
|
8
|
+
class ListImages < Vagrant.plugin('2', :command)
|
9
|
+
include VagrantPlugins::ProfitBricks::Command::Utils
|
10
|
+
def execute
|
11
|
+
opts = OptionParser.new do |o|
|
12
|
+
o.banner = 'Usage: vagrant profitbricks images'
|
12
13
|
end
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
argv = parse_options(opts)
|
16
|
+
return unless argv
|
16
17
|
|
17
|
-
|
18
|
-
if @main_args.include?("-h") || @main_args.include?("--help")
|
19
|
-
# Print the help for all the profitbricks commands.
|
20
|
-
return help
|
21
|
-
end
|
18
|
+
compute = fog_pb(argv[0])
|
22
19
|
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
rows = []
|
21
|
+
compute.images.each do |image|
|
22
|
+
rows << [
|
23
|
+
image.id,
|
24
|
+
image.name,
|
25
|
+
image.location
|
26
|
+
]
|
27
|
+
end
|
26
28
|
|
27
|
-
|
28
|
-
command_class.new(@sub_args, @env).execute
|
29
|
+
display_table(@env, %w[ID Name Location], rows)
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant-profitbricks/command/utils'
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module ProfitBricks
|
7
|
+
module Command
|
8
|
+
class ListLocations < Vagrant.plugin('2', :command)
|
9
|
+
include VagrantPlugins::ProfitBricks::Command::Utils
|
10
|
+
def execute
|
11
|
+
opts = OptionParser.new do |o|
|
12
|
+
o.banner = 'Usage: vagrant profitbricks locations [options]'
|
13
|
+
end
|
14
|
+
|
15
|
+
argv = parse_options(opts)
|
16
|
+
return unless argv
|
17
|
+
|
18
|
+
compute = fog_pb(argv[0])
|
19
|
+
|
20
|
+
rows = []
|
21
|
+
|
22
|
+
compute.locations.sort_by(&:id).each do |location|
|
23
|
+
rows << [
|
24
|
+
location.id,
|
25
|
+
location.name
|
26
|
+
]
|
27
|
+
end
|
28
|
+
|
29
|
+
display_table(@env, %w[ID Name], rows)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'vagrant-profitbricks/action'
|
2
4
|
|
3
5
|
module VagrantPlugins
|
4
6
|
module ProfitBricks
|
5
7
|
module Command
|
6
|
-
class Root < Vagrant.plugin(
|
8
|
+
class Root < Vagrant.plugin('2', :command)
|
7
9
|
def self.synopsis
|
8
10
|
I18n.t('vagrant_profitbricks.command.synopsis')
|
9
11
|
end
|
@@ -13,32 +15,35 @@ module VagrantPlugins
|
|
13
15
|
|
14
16
|
@subcommands = Vagrant::Registry.new
|
15
17
|
|
16
|
-
@subcommands.register(:
|
17
|
-
require File.expand_path(
|
18
|
-
|
18
|
+
@subcommands.register(:datacenters) do
|
19
|
+
require File.expand_path('../datacenters', __FILE__)
|
20
|
+
ListDatacenters
|
19
21
|
end
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
|
23
|
+
@subcommands.register(:locations) do
|
24
|
+
require File.expand_path('../locations', __FILE__)
|
25
|
+
ListLocations
|
23
26
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
|
28
|
+
@subcommands.register(:snapshots) do
|
29
|
+
require File.expand_path('../snapshots', __FILE__)
|
30
|
+
ListSnapshots
|
27
31
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
32
|
+
|
33
|
+
@subcommands.register(:flavors) do
|
34
|
+
require File.expand_path('../flavors', __FILE__)
|
35
|
+
ListFlavors
|
31
36
|
end
|
32
|
-
@subcommands.register(:
|
33
|
-
require File.expand_path(
|
34
|
-
|
37
|
+
@subcommands.register(:images) do
|
38
|
+
require File.expand_path('../images', __FILE__)
|
39
|
+
ListImages
|
35
40
|
end
|
36
41
|
|
37
42
|
super(argv, env)
|
38
43
|
end
|
39
44
|
|
40
45
|
def execute
|
41
|
-
if @main_args.include?(
|
46
|
+
if @main_args.include?('-h') || @main_args.include?('--help')
|
42
47
|
# Print the help for all the profitbricks commands.
|
43
48
|
return help
|
44
49
|
end
|
@@ -53,25 +58,25 @@ module VagrantPlugins
|
|
53
58
|
|
54
59
|
def help
|
55
60
|
opts = OptionParser.new do |opts|
|
56
|
-
opts.banner =
|
57
|
-
opts.separator
|
61
|
+
opts.banner = 'Usage: vagrant profitbricks <subcommand> [<args>]'
|
62
|
+
opts.separator ''
|
58
63
|
opts.separator I18n.t('vagrant_profitbricks.command.available_subcommands')
|
59
64
|
|
60
65
|
# Add the available subcommands as separators in order to print them
|
61
66
|
# out as well.
|
62
67
|
keys = []
|
63
|
-
@subcommands.each { |key,
|
68
|
+
@subcommands.each { |key, _value| keys << key.to_s }
|
64
69
|
|
65
70
|
keys.sort.each do |key|
|
66
71
|
opts.separator " #{key}"
|
67
72
|
end
|
68
73
|
|
69
|
-
opts.separator
|
74
|
+
opts.separator ''
|
70
75
|
opts.separator I18n.t('vagrant_profitbricks.command.help_subcommands') +
|
71
|
-
|
76
|
+
' `vagrant profitbricks <subcommand> -h`'
|
72
77
|
end
|
73
78
|
|
74
|
-
@env.ui.info(opts.help, :
|
79
|
+
@env.ui.info(opts.help, prefix: false)
|
75
80
|
end
|
76
81
|
end
|
77
82
|
end
|
@@ -1,17 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module VagrantPlugins
|
2
4
|
module ProfitBricks
|
3
5
|
module Command
|
4
|
-
class
|
6
|
+
class ListServers < Vagrant.plugin('2', :command)
|
5
7
|
def execute
|
8
|
+
p 'Garegaer'
|
6
9
|
options = {}
|
7
10
|
opts = OptionParser.new do |o|
|
8
|
-
o.banner =
|
11
|
+
o.banner = 'Usage: vagrant profitbricks servers [options]'
|
9
12
|
end
|
10
13
|
|
11
14
|
argv = parse_options(opts)
|
12
|
-
return
|
15
|
+
return unless argv
|
13
16
|
|
14
|
-
with_target_vms(argv, :
|
17
|
+
with_target_vms(argv, provider: :profitbricks) do |machine|
|
15
18
|
machine.action('list_servers')
|
16
19
|
end
|
17
20
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant-profitbricks/command/utils'
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module ProfitBricks
|
7
|
+
module Command
|
8
|
+
class ListSnapshots < Vagrant.plugin('2', :command)
|
9
|
+
include VagrantPlugins::ProfitBricks::Command::Utils
|
10
|
+
def execute
|
11
|
+
opts = OptionParser.new do |o|
|
12
|
+
o.banner = 'Usage: vagrant profitbricks snapshots [options]'
|
13
|
+
end
|
14
|
+
|
15
|
+
argv = parse_options(opts)
|
16
|
+
return unless argv
|
17
|
+
|
18
|
+
compute = fog_pb(argv[0])
|
19
|
+
|
20
|
+
rows = []
|
21
|
+
|
22
|
+
compute.snapshots.sort_by(&:id).each do |snapshot|
|
23
|
+
rows << [
|
24
|
+
snapshot.id,
|
25
|
+
snapshot.name
|
26
|
+
]
|
27
|
+
end
|
28
|
+
|
29
|
+
display_table(@env, %w[ID Name], rows)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'fog/profitbricks'
|
4
|
+
require 'terminal-table'
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module ProfitBricks
|
8
|
+
module Command
|
9
|
+
module Utils
|
10
|
+
def fog_pb(_token)
|
11
|
+
compute = Fog::Compute.new(provider: 'ProfitBricks', profitbricks_username: ENV['PROFITBRICKS_USERNAME'], profitbricks_password: ENV['PROFITBRICKS_PASSWORD'])
|
12
|
+
|
13
|
+
compute
|
14
|
+
end
|
15
|
+
|
16
|
+
def display_table(env, headers, rows)
|
17
|
+
table = Terminal::Table.new headings: headers, rows: rows
|
18
|
+
if env.respond_to?('ui')
|
19
|
+
env.ui.info(table.to_s)
|
20
|
+
else
|
21
|
+
env[:ui].info(table.to_s)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,10 +1,12 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'vagrant'
|
4
|
+
require 'fog/profitbricks'
|
3
5
|
|
4
6
|
module VagrantPlugins
|
5
7
|
module ProfitBricks
|
6
|
-
class Config < Vagrant.plugin(
|
7
|
-
# The API key to access ProfitBricks -
|
8
|
+
class Config < Vagrant.plugin('2', :config)
|
9
|
+
# The API key to access ProfitBricks - password
|
8
10
|
# @return [String]
|
9
11
|
attr_accessor :password
|
10
12
|
|
@@ -13,10 +15,10 @@ module VagrantPlugins
|
|
13
15
|
# @return [String]
|
14
16
|
attr_accessor :username
|
15
17
|
|
16
|
-
# The
|
18
|
+
# The url to access ProfitBricks Cloud API.
|
17
19
|
#
|
18
20
|
# expected to be a string url -
|
19
|
-
# 'https://api.profitbricks.com/cloudapi/
|
21
|
+
# 'https://api.profitbricks.com/cloudapi/v4/'
|
20
22
|
attr_accessor :profitbricks_url
|
21
23
|
|
22
24
|
# The flavor of server to launch, either the ID or name. This
|
@@ -26,7 +28,7 @@ module VagrantPlugins
|
|
26
28
|
# The name or ID of the image to use. This can also be a regular
|
27
29
|
# expression to partially match a name.
|
28
30
|
attr_accessor :image
|
29
|
-
|
31
|
+
attr_accessor :image_alias
|
30
32
|
|
31
33
|
# The name of the server. This defaults to the name of the machine
|
32
34
|
# defined by Vagrant (via `config.vm.define`), but can be overriden
|
@@ -39,28 +41,28 @@ module VagrantPlugins
|
|
39
41
|
|
40
42
|
# Specify location for datacenter if one needs to be created, default value is 'us/las'
|
41
43
|
attr_accessor :location
|
42
|
-
|
44
|
+
|
43
45
|
# Disk volume size in GB
|
44
|
-
attr_accessor :
|
46
|
+
attr_accessor :volume_size
|
45
47
|
|
46
48
|
# Disk volume type (SSD or HDD)
|
47
49
|
# Will default to HDD if not specified
|
48
50
|
attr_accessor :volume_type
|
49
51
|
|
50
52
|
# The licence type of the volume. Options: LINUX, WINDOWS, UNKNOWN, OTHER
|
51
|
-
# You will need to provide either the image or the licence_type parameters.
|
53
|
+
# You will need to provide either the image or the licence_type parameters.
|
52
54
|
# licence_type is required, but if image is supplied, it is already set and cannot be changed
|
53
55
|
attr_accessor :volume_licence_type
|
54
56
|
|
55
|
-
# The storage availability zone assigned to the volume.
|
56
|
-
# Valid values: AUTO, ZONE_1, ZONE_2, or ZONE_3. This only applies to HDD volumes.
|
57
|
+
# The storage availability zone assigned to the volume.
|
58
|
+
# Valid values: AUTO, ZONE_1, ZONE_2, or ZONE_3. This only applies to HDD volumes.
|
57
59
|
# Leave blank or set to AUTO when provisioning SSD volumes.
|
58
60
|
# Will default to AUTO if not specified
|
59
61
|
attr_accessor :volume_availability_zone
|
60
62
|
|
61
|
-
# One or more SSH keys to allow access to the volume via SSH.
|
63
|
+
# One or more SSH keys to allow access to the volume via SSH.
|
62
64
|
# Works with ProfitBricks supplied Linux images.
|
63
|
-
attr_accessor :
|
65
|
+
attr_accessor :public_ssh_keys
|
64
66
|
|
65
67
|
# POne-time password is set on the Image for the appropriate account.
|
66
68
|
# This field may only be set in creation requests. When reading, it always returns null.
|
@@ -68,10 +70,10 @@ module VagrantPlugins
|
|
68
70
|
attr_accessor :image_password
|
69
71
|
|
70
72
|
# number of cores in profitbricks server
|
71
|
-
attr_accessor :
|
73
|
+
attr_accessor :cores
|
72
74
|
|
73
75
|
# Required, amount of memory in GB allocated to virtual server
|
74
|
-
attr_accessor :
|
76
|
+
attr_accessor :ram
|
75
77
|
|
76
78
|
# Sets the CPU type. "AMD_OPTERON" or "INTEL_XEON". Defaults to "AMD_OPTERON".
|
77
79
|
attr_accessor :cpu_family
|
@@ -83,21 +85,22 @@ module VagrantPlugins
|
|
83
85
|
attr_accessor :nat
|
84
86
|
|
85
87
|
def initialize
|
86
|
-
@password
|
88
|
+
@password = UNSET_VALUE
|
87
89
|
@profitbricks_url = UNSET_VALUE
|
88
|
-
@flavor
|
89
|
-
@
|
90
|
-
@
|
91
|
-
@image
|
90
|
+
@flavor = UNSET_VALUE
|
91
|
+
@cores = UNSET_VALUE
|
92
|
+
@ram = UNSET_VALUE
|
93
|
+
@image = nil
|
94
|
+
@image_alias = nil
|
92
95
|
@server_name = UNSET_VALUE
|
93
96
|
@datacenter_id = UNSET_VALUE
|
94
97
|
@username = UNSET_VALUE
|
95
|
-
@
|
98
|
+
@volume_size = UNSET_VALUE
|
96
99
|
@location = UNSET_VALUE
|
97
100
|
@volume_type = UNSET_VALUE
|
98
101
|
@volume_licence_type = UNSET_VALUE
|
99
102
|
@volume_availability_zone = UNSET_VALUE
|
100
|
-
@
|
103
|
+
@public_ssh_keys = UNSET_VALUE
|
101
104
|
@cpu_family = UNSET_VALUE
|
102
105
|
@lan_id = UNSET_VALUE
|
103
106
|
@nat = UNSET_VALUE
|
@@ -105,47 +108,49 @@ module VagrantPlugins
|
|
105
108
|
end
|
106
109
|
|
107
110
|
def finalize!
|
108
|
-
@password
|
111
|
+
@password = nil if @password == UNSET_VALUE
|
109
112
|
@profitbricks_url = nil if @profitbricks_url == UNSET_VALUE
|
110
|
-
@flavor
|
111
|
-
@
|
112
|
-
@
|
113
|
-
@image = /ubuntu/ if @image == UNSET_VALUE
|
113
|
+
@flavor = nil if @flavor == UNSET_VALUE
|
114
|
+
@cores = 1 if @cores == UNSET_VALUE
|
115
|
+
@ram = 2048 if ram == UNSET_VALUE
|
114
116
|
@server_name = nil if @server_name == UNSET_VALUE
|
115
117
|
@datacenter_id = nil if @datacenter_id == UNSET_VALUE
|
116
118
|
@username = nil if @username == UNSET_VALUE
|
117
|
-
@
|
119
|
+
@volume_size = 5 if @volume_size == UNSET_VALUE
|
118
120
|
@location = 'us/las' if @location == UNSET_VALUE
|
119
121
|
@volume_type = 'HDD' if @volume_type == UNSET_VALUE
|
120
122
|
@volume_licence_type = 'UNKNOWN' if @volume_licence_type == UNSET_VALUE
|
121
123
|
@volume_availability_zone = 'AUTO' if @volume_availability_zone == UNSET_VALUE
|
122
|
-
@
|
124
|
+
@public_ssh_keys = nil if @public_ssh_keys == UNSET_VALUE
|
123
125
|
@cpu_family = 'AMD_OPTERON' if @cpu_family == UNSET_VALUE
|
124
126
|
@lan_id = nil if @lan_id == UNSET_VALUE
|
125
127
|
@nat = false if @nat == UNSET_VALUE
|
126
128
|
@image_password = nil if @image_password == UNSET_VALUE
|
127
129
|
end
|
128
130
|
|
129
|
-
def validate(
|
131
|
+
def validate(_machine)
|
130
132
|
errors = _detected_errors
|
131
133
|
|
132
|
-
errors << I18n.t(
|
133
|
-
errors << I18n.t(
|
134
|
-
errors << I18n.t(
|
134
|
+
errors << I18n.t('vagrant_profitbricks.config.password_required') unless @password
|
135
|
+
errors << I18n.t('vagrant_profitbricks.config.username_required') unless @username
|
136
|
+
errors << I18n.t('vagrant_profitbricks.config.datacenter_required') unless @datacenter_id
|
137
|
+
errors << I18n.t('vagrant_profitbricks.config.image_or_image_alias_must_be_provided') if !@image && !@image_alias
|
138
|
+
errors << I18n.t('vagrant_profitbricks.config.image_password_or_public_ssh_required') if !@public_ssh_keys && !@image_password
|
139
|
+
|
135
140
|
{
|
136
|
-
|
141
|
+
url: @profitbricks_url
|
137
142
|
}.each_pair do |key, value|
|
138
|
-
errors << I18n.t(
|
143
|
+
errors << I18n.t('vagrant_profitbricks.config.invalid_uri', key: key, uri: value) unless value.nil? || valid_uri?(value)
|
139
144
|
end
|
140
145
|
|
141
|
-
{
|
146
|
+
{ 'ProfitBricks Provider' => errors }
|
142
147
|
end
|
143
148
|
|
144
149
|
private
|
145
150
|
|
146
|
-
def valid_uri?
|
151
|
+
def valid_uri?(value)
|
147
152
|
uri = URI.parse value
|
148
|
-
uri.
|
153
|
+
uri.is_a?(URI::HTTP)
|
149
154
|
end
|
150
155
|
end
|
151
156
|
end
|