vagrant-profitbricks 1.0.0 → 4.0.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 +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
|