vagrant-arubacloud 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,17 +17,21 @@ module VagrantPlugins
17
17
 
18
18
  def call(env)
19
19
  if env[:machine].id
20
- env[:ui].info(I18n.t('vagrant_arubacloud.halting_server'))
20
+ config = env[:machine].provider_config
21
+ arubacloud_dc = config.endpoint
22
+ env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.halting_server'))
21
23
  server = env[:arubacloud_compute].servers.get(env[:machine].id)
22
24
 
23
25
  # Check if the vm is already powered off
24
26
  @logger.debug("VM stopped?: #{server.stopped?}")
25
27
  if server.stopped?
26
28
  # continue the middleware
29
+ @logger.debug("VM is stopped ...")
27
30
  @app.call(env)
28
31
  else
29
32
  # Try to poweroff the VM.
30
33
  begin
34
+ @logger.debug("before make do power_off ...")
31
35
  server.power_off
32
36
  rescue Fog::ArubaCloud::Errors::VmStatus
33
37
  env[:ui].warn(I18n.t('vagrant_arubacloud.bad_state'))
@@ -40,10 +44,12 @@ module VagrantPlugins
40
44
  end
41
45
 
42
46
  # Wait for the server to be proper shut down
43
- retryable(:tries => 20, :sleep => 1) do
44
- server.wait_for(1) { stopped? }
47
+ @logger.debug("after do power_off wait status stopped .......")
48
+ env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.waiting_server_powered_off'))
49
+ retryable(:tries => 30, :sleep => 2) do
50
+ server.wait_for(2) { stopped? }
45
51
  end
46
- env[:ui].info(I18n.t('vagrant_arubacloud.server_powered_off'))
52
+ env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.server_powered_off'))
47
53
  end
48
54
  end
49
55
 
@@ -2,19 +2,48 @@ module VagrantPlugins
2
2
  module ArubaCloud
3
3
  module Action
4
4
  class ListServers
5
- def initialize(app, env)
5
+
6
+ def initialize(app, env)
6
7
  @app = app
7
- end
8
+ end
8
9
 
9
- def call(env)
10
+ def call(env )
11
+ config = env[:machine].provider_config
12
+ arubacloud_dc = config.endpoint
10
13
  compute_service = env[:arubacloud_compute]
11
- env[:ui].info ('%-20s %-20s %s' % ['Server Name', 'State', 'IPv4 address'])
12
- compute_service.servers.sort_by(&:name).each do |server|
13
- # Ask fog for the full details list
14
+
15
+ vm_in_dc = compute_service.servers
16
+ server_fnd = vm_in_dc.select{ |s| (s.id).to_i == (env[:machine].id).to_i }
17
+
18
+ if server_fnd && server_fnd.length == 1
19
+ server = server_fnd[0]
14
20
  server.get_server_details
15
- # Output the result
16
- env[:ui].info ('%-20s %-20s %s' % [server.name, server.state, server.smart_ipv4])
21
+ env[:machine].ui.info('%-6s %-20s %-8s %-12s %-14s %s' % [arubacloud_dc, server.name, server.id, server.state, Fog::ArubaCloud::Compute::Server::STATE_DES[server.state], server.smart_ipv4] )
17
22
  end
23
+
24
+ if config.reserved_status == "other"
25
+ #
26
+ # output all info relate VM found in current DC , but not found in '.vagrant' directory
27
+ #
28
+ ll = env[:machine].name.length
29
+ ui_ext = Vagrant::UI::Prefixed.new( Vagrant::UI::Colored.new, "-".center(ll) )
30
+ if server && server.name
31
+ config.reserved_list_owned << server.name
32
+ end
33
+ server_xs = vm_in_dc.select{ |s| not (config.reserved_list_owned.include? s.name)}
34
+ server_xs.sort_by(&:name).each do |server|
35
+ server.get_server_details
36
+ ui_ext.detail('%-6s %-20s %-8s %-12s %-14s %s' % [arubacloud_dc, server.name, server.id, server.state, Fog::ArubaCloud::Compute::Server::STATE_DES[server.state], server.smart_ipv4] )
37
+ end
38
+ config.reserved_list_owned = []
39
+ else
40
+ if server && server.name
41
+ config.reserved_list_owned = server.name
42
+ else
43
+ config.reserver_list_owned = ""
44
+ end
45
+ end
46
+
18
47
  @app.call(env)
19
48
  end
20
49
  end
@@ -7,10 +7,12 @@ module VagrantPlugins
7
7
  end
8
8
 
9
9
  def call(env)
10
+ config = env[:machine].provider_config
11
+ arubacloud_dc = config.endpoint
10
12
  compute_service = env[:arubacloud_compute]
11
- env[:ui].info ('%-40s %-60s %-20s %s' % ['Template Name', 'Description', 'ID', 'Hypervisor ID'])
13
+ env[:ui].info ('%-5s %-40s %-60s %-20s %s' % ['DC', 'Template Name', 'Description', 'ID', 'Hypervisor ID'])
12
14
  compute_service.templates.sort_by(&:hypervisor).each do |template|
13
- env[:ui].info ('%-40s %-60s %-20s %s' % [template.name,
15
+ env[:ui].info ('%-5s %-40s %-60s %-20s %s' % [arubacloud_dc, template.name,
14
16
  template.description,
15
17
  template.id,
16
18
  enum_hypervisor_id(template.hypervisor)])
@@ -24,7 +24,7 @@ module VagrantPlugins
24
24
  server = arubacloud.servers.get(machine.id)
25
25
  if server.nil?
26
26
  # The machine can't be found
27
- @logger.info("'Machine couldn't be found, assuming it got destroyed.")
27
+ @logger.info("Machine couldn't be found, assuming it got destroyed.")
28
28
  machine.id = nil
29
29
  nil
30
30
  else
@@ -40,4 +40,4 @@ module VagrantPlugins
40
40
  end # ReadSSHInfo
41
41
  end # Action
42
42
  end # ArubaCloud
43
- end # VagrantPlugins
43
+ end # VagrantPlugins
@@ -13,9 +13,6 @@ module VagrantPlugins
13
13
  end
14
14
 
15
15
  def call(env)
16
- # env[:ui].output(":machine_state_id: #{env[:machine_state_id]}")
17
- # env[:ui].output(":arubacloud_compute: #{env[:arubacloud_compute]}")
18
- # env[:ui].output(":machine: #{env[:machine]}")
19
16
  env[:machine_state_id] = read_state(env[:arubacloud_compute], env[:machine])
20
17
  @app.call(env)
21
18
  end
@@ -0,0 +1,59 @@
1
+ require 'log4r'
2
+ require 'vagrant/util/retryable'
3
+ require 'fog/arubacloud/error'
4
+ require 'optparse'
5
+
6
+ module VagrantPlugins
7
+ module ArubaCloud
8
+ module Action
9
+ # This stop a server, if it exists
10
+ class StartServer
11
+ include Vagrant::Util::Retryable
12
+
13
+ def initialize(app, env)
14
+ @app = app
15
+ @env = env
16
+ @logger = Log4r::Logger.new('vagrant_arubacloud::action::start_server')
17
+ end
18
+
19
+ def call(env)
20
+ if env[:machine].id
21
+ config = env[:machine].provider_config
22
+ arubacloud_dc = config.endpoint
23
+
24
+ env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.starting_server'))
25
+ server = env[:arubacloud_compute].servers.get(env[:machine].id)
26
+ # Check if the vm is already powered on
27
+ @logger.debug("VM ready?: #{server.ready?}")
28
+ if server.ready?
29
+ # continue the middleware
30
+ @app.call(env)
31
+ else
32
+ # Try to power-on the VM.
33
+ begin
34
+ server.power_on
35
+ rescue Fog::ArubaCloud::Errors::VmStatus
36
+ env[:ui].warn(I18n.t('vagrant_arubacloud.bad_state'))
37
+ return
38
+ rescue Fog::ArubaCloud::Errors::RequestError => e
39
+ if e.response['ResultCode'].eql? 17
40
+ env[:ui].warn(I18n.t('vagrant_arubacloud.operation_already_in_queue'))
41
+ return
42
+ end
43
+ end
44
+
45
+ # Wait for the server to be proper started and up
46
+ env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.waiting_server_powered_on'))
47
+ retryable(:tries => 40, :sleep => 2) do
48
+ server.wait_for(1) { ready? }
49
+ end
50
+ env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.server_powered_on'))
51
+ end
52
+ end
53
+
54
+ @app.call(env)
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -7,7 +7,6 @@ module VagrantPlugins
7
7
  def self.synopsis
8
8
  'query ArubaCloud for servers and templates'
9
9
  end
10
-
11
10
  def initialize(argv, env)
12
11
  @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
13
12
  @env = env
@@ -1,3 +1,5 @@
1
+ require 'pp'
2
+
1
3
  module VagrantPlugins
2
4
  module ArubaCloud
3
5
  module Command
@@ -5,14 +7,40 @@ module VagrantPlugins
5
7
  def execute
6
8
  options = {}
7
9
  opts = OptionParser.new do |o|
8
- o.banner = 'Usage: vagrant arubacloud templates [options]'
10
+ o.banner = 'Usage: vagrant arubacloud servers [options]'
9
11
  end
10
-
11
12
  argv = parse_options(opts)
12
13
  return unless argv
13
14
 
14
- with_target_vms(argv, :provider => :arubacloud) do |machine|
15
+ vm_count = 1
16
+ vm_list = Array.new
17
+ vm_size = 0
18
+
19
+ with_target_vms(argv, :provider => :arubacloud , :plist => '1' ) do |machine|
20
+ if vm_count == 1
21
+ ll = machine.name.length
22
+ ui_ext = Vagrant::UI::Prefixed.new( Vagrant::UI::Colored.new, " "*ll )
23
+ ui_ext.opts = { :color => :white, :bold => true }
24
+ ui_ext.detail ('%-6s %-20s %-8s %-12s %-14s %s' % ['DC', 'Server Name', ' Id ', 'State Code', 'State meaning', 'IPv4 address'])
25
+ ui_ext.detail ("-" * 80)
26
+ # vm_size : how many vm are in .vagrant directory (is default)
27
+ # status : 'owned' all VM defined in my '.vagrant' directory
28
+ machine.provider_config.reserved_status = "owned"
29
+ vm_size = machine.config.vm.defined_vm_keys.length
30
+ end
31
+ if (vm_count == vm_size)
32
+ # if last element change 'status' to 'other' to output list of all external VM in current DC
33
+ # and send list all VM's ( server.name) founds in '.vagrant' directory
34
+ machine.provider_config.reserved_status = "other"
35
+ machine.provider_config.reserved_list_owned = vm_list
36
+ end
37
+
15
38
  machine.action('list_servers')
39
+ vm_count += 1
40
+ # accum in append current server-name returned by list_server only if exist
41
+ if machine.provider_config.reserved_list_owned
42
+ vm_list << machine.provider_config.reserved_list_owned
43
+ end
16
44
  end
17
45
  end
18
46
  end
@@ -0,0 +1,175 @@
1
+ require 'optparse'
2
+ require 'vagrant-arubacloud/action'
3
+ require 'fog/arubacloud'
4
+
5
+ module VagrantPlugins
6
+ module Command
7
+ class Snapshot < Vagrant.plugin('2', :command)
8
+ def self.synopsis
9
+ 'implement snapshot for vagrant-arubacloud '
10
+ end
11
+ def execute
12
+ options = {:snapop => nil, :namevm => nil}
13
+ myparser = OptionParser.new do |opts|
14
+ opts.banner = "Usage: vagrant snapshot -t [create|delete|restore|list] -n name_server"
15
+ opts.on('-n', '--name name', 'Name server of virtual machine') do |name|
16
+ options[:namevm] = name;
17
+ end
18
+ opts.on('-t', '--type type', 'Type of snapshot : create|delete|restore|list') do |type|
19
+ options[:snapop] = type;
20
+ end
21
+ opts.on('-h', '--help', 'Displays Help') do
22
+ puts opts
23
+ return
24
+ end
25
+ end
26
+
27
+ myparser.parse!
28
+
29
+ if options[:namevm] == nil
30
+ puts 'Name of VM is missing'
31
+ return
32
+ end
33
+ if options[:snapop] == nil
34
+ puts "Type of action: 'create,delete,restore,list' is missing"
35
+ return
36
+ end
37
+ ck1 = ["create", "delete", "restore", "list"].include? options[:snapop]
38
+ if !ck1
39
+ puts 'Valid option type are: create,delete,restore,list '
40
+ return
41
+ end
42
+
43
+ not_found = true
44
+ with_target_vms( nil, :provider => :arubacloud) do |machine|
45
+ # if not machine.id....
46
+ if machine.id == nil
47
+ next
48
+ end
49
+ config1 = machine.provider_config
50
+ #if no url in config....
51
+ unless config1.url
52
+ machine.ui.info(" [dc?] " + I18n.t('vagrant_arubacloud.wrong_dc'))
53
+ return
54
+ end
55
+
56
+ arubacloud_dc = config1.endpoint
57
+ myprefix = "[#{arubacloud_dc}] "
58
+ params = {
59
+ :provider => :arubacloud,
60
+ :arubacloud_username => config1.arubacloud_username,
61
+ :arubacloud_password => config1.arubacloud_password,
62
+ :url => config1.url
63
+ }
64
+
65
+ envx = Fog::Compute.new params
66
+ server = envx.servers.get(machine.id)
67
+ if server.name == options[:namevm]
68
+
69
+ machine.ui.info(myprefix + I18n.t('vagrant_arubacloud.connect_to_dc'))
70
+ machine.ui.info(myprefix + I18n.t('vagrant_arubacloud.snapshot_req_type') + " '#{options[:snapop]}'" + " target id:#{machine.id}" )
71
+ not_found = false
72
+ case options[:snapop]
73
+ # output if exist date creation and date expire for snapshot
74
+ when "list"
75
+ begin
76
+ myreq = server.list_snapshot
77
+ if myreq["Success"]
78
+ machine.ui.info(myprefix + 'snapshot ' + I18n.t('vagrant_arubacloud.snapshot_info_create') + " #{myreq['credate']} " + I18n.t('vagrant_arubacloud.snapshot_info_expired') + " #{myreq['expdate']} " )
79
+ else
80
+ machine.ui.warn(myprefix + I18n.t('vagrant_arubacloud.snapshot_info_not_found'))
81
+ end
82
+ rescue Fog::ArubaCloud::Errors::RequestError => e
83
+ message = ''
84
+ error = nil
85
+ @logger.debug(e.inspect.to_yaml)
86
+ machine.ui.warn(myprefix + " *ERR* list response message: #{e.response.to_yaml}")
87
+ end
88
+ # creation of snapshot ....
89
+ when "create"
90
+ if server.state == Fog::ArubaCloud::Compute::Server::RUNNING
91
+ #
92
+ # if state active and request snapshot create ...
93
+ #
94
+ begin
95
+ myreq = server.create_snapshot
96
+ if myreq
97
+ machine.ui.info(myprefix + I18n.t('vagrant_arubacloud.snapshot_created'))
98
+ else
99
+ machine.ui.warn(myprefix + I18n.t('vagrant_arubacloud.snapshot_create_err_fog'))
100
+ end
101
+ rescue Fog::ArubaCloud::Errors::RequestError => e
102
+ message = ''
103
+ error = nil
104
+ @logger.debug(e.inspect.to_yaml)
105
+ machine.ui.warn(myprefix + " *ERROR* response message: #{e.response.to_yaml}")
106
+ #raise error
107
+ end
108
+ #
109
+ else
110
+ machine.ui.warn(myprefix + I18n.t('vagrant_arubacloud.snapshot_create_err_not_on'))
111
+ end
112
+ # delete of snapshot...
113
+ when "delete"
114
+ #
115
+ # if snapshot delete ...
116
+ #
117
+ begin
118
+ myreq = server.delete_snapshot
119
+ if myreq
120
+ machine.ui.info(myprefix + I18n.t('vagrant_arubacloud.snapshot_deleted'))
121
+ else
122
+ machine.ui.warn(myprefix + I18n.t('vagrant_arubacloud.snapshot_delete_err_fog'))
123
+ end
124
+ rescue Fog::ArubaCloud::Errors::RequestError => e
125
+ message = ''
126
+ error = nil
127
+ @logger.debug(e.inspect.to_yaml)
128
+ machine.ui.warn(myprefix + " *ERROR* response message: #{e.response.to_yaml}")
129
+ #raise error
130
+ end
131
+ # if vm is power off and esiste a snapshot resorre vm from snapshot
132
+ # (waring : the machine is not power on after restart and snapshot image is removed)
133
+ when "restore"
134
+ if server.state == Fog::ArubaCloud::Compute::Server::STOPPED
135
+ #
136
+ # if state stopped (power off) and requets restore
137
+ # WARNING : the snapshot file is removed after restore
138
+ #
139
+ begin
140
+ myreq = server.apply_snapshot
141
+ if myreq
142
+ machine.ui.info(myprefix + I18n.t('vagrant_arubacloud.snapshot_restored'))
143
+ else
144
+ machine.ui.warn(myprefix + I18n.t('vagrant_arubacloud.snapshot_restore_err_fog'))
145
+ end
146
+ rescue Fog::ArubaCloud::Errors::RequestError => e
147
+ message = ''
148
+ error = nil
149
+ @logger.debug(e.inspect.to_yaml)
150
+ machine.ui.warn(myprefix + " *ERROR* response message: #{e.response.to_yaml}")
151
+ #raise error
152
+ end
153
+ else
154
+ machine.ui.warn(myprefix + I18n.t('vagrant_arubacloud.snapshot_restore_err_not_off'))
155
+ end
156
+
157
+ else
158
+ machine.ui.warn(myprefix + I18n.t('vagrant_arubacloud.snapshot_type_unknow') + " :#{options[:snapop]}" )
159
+ end
160
+
161
+ end # test if found machine.id
162
+
163
+ end #
164
+
165
+ if not_found
166
+ puts "==> ??? [dc?] " + I18n.t("vagrant_arubacloud.snapshot_server_unknow") + " :#{options[:namevm]}"
167
+ end
168
+
169
+ end
170
+ end
171
+ end
172
+ end
173
+
174
+
175
+
@@ -4,7 +4,20 @@ require 'fog'
4
4
  module VagrantPlugins
5
5
  module ArubaCloud
6
6
 
7
+ DC_TABLES = {
8
+ :dc1 => "https://api.dc1.computing.cloud.it/WsEndUser/v2.9/WsEndUser.svc/json",
9
+ :dc2 => "https://api.dc2.computing.cloud.it/WsEndUser/v2.9/WsEndUser.svc/json",
10
+ :dc3 => "https://api.dc3.computing.cloud.it/WsEndUser/v2.9/WsEndUser.svc/json",
11
+ :dc4 => "https://api.dc4.computing.cloud.it/WsEndUser/v2.9/WsEndUser.svc/json",
12
+ :dc5 => "https://api.dc5.computing.cloud.it/WsEndUser/v2.9/WsEndUser.svc/json",
13
+ :dc6 => "https://api.dc6.computing.cloud.it/WsEndUser/v2.9/WsEndUser.svc/json",
14
+ :dc8 => "https://api.dc8.computing.cloud.it/WsEndUser/v2.9/WsEndUser.svc/json"
15
+ }
16
+
17
+ DC_DEFAULT = "dc2"
18
+
7
19
  class Config < Vagrant.plugin('2', :config)
20
+
8
21
  # ArubaCloud Username
9
22
  # @return [String]
10
23
  attr_accessor :arubacloud_username
@@ -13,11 +26,19 @@ module VagrantPlugins
13
26
  # @return [String]
14
27
  attr_accessor :arubacloud_password
15
28
 
29
+ # reserved for internal use
30
+ attr_accessor :reserved_status
31
+ attr_accessor :reserved_list_owned
32
+
16
33
  # Ws EndPoint Url
17
34
  # Expected to be the url of the web service to use
18
35
  # @return [String]
19
36
  attr_accessor :url
20
37
 
38
+ # Ws EndPoint id : can be dc2,dc2,dc3,...dc8 (dc7 is not defined at this release)
39
+ # @return [String]
40
+ attr_accessor :endpoint
41
+
21
42
  # The name of the server. This defaults to the name of the machine
22
43
  # defined by Vagrant (via 'config.vm.define'), but can be override here.
23
44
  # @return [String]
@@ -28,17 +49,13 @@ module VagrantPlugins
28
49
  # @return [Integer]
29
50
  attr_accessor :template_id
30
51
 
31
- # The smart vm type expressed in ID:
32
- # 1 = small
33
- # 2 = medium
34
- # 3 = large
35
- # 4 = extra-large
36
- # @return [Integer]
37
- attr_accessor :package_id
38
-
39
- # The admin password of the vm (root user) .
52
+ # The smart vm type expressed as String:
53
+ # 'small'
54
+ # 'medium'
55
+ # 'large'
56
+ # 'extra large'
40
57
  # @return [String]
41
- attr_accessor :admin_password
58
+ attr_accessor :package_id
42
59
 
43
60
  # Service Type expressed in ID [Integer]:
44
61
  # 1 = Pro Hyper-V
@@ -70,8 +87,10 @@ module VagrantPlugins
70
87
  def initialize
71
88
  @arubacloud_username = UNSET_VALUE
72
89
  @arubacloud_password = UNSET_VALUE
73
- @admin_password = UNSET_VALUE
74
90
  @url = UNSET_VALUE
91
+ @reserved_status = UNSET_VALUE
92
+ @reserved_list_owned = UNSET_VALUE
93
+ @endpoint = UNSET_VALUE
75
94
  @server_name = UNSET_VALUE
76
95
  @template_id = UNSET_VALUE
77
96
  @package_id = UNSET_VALUE
@@ -84,8 +103,10 @@ module VagrantPlugins
84
103
  def finalize!
85
104
  @arubacloud_username = nil if @arubacloud_username == UNSET_VALUE
86
105
  @arubacloud_password = nil if @arubacloud_password == UNSET_VALUE
87
- @admin_password = nil if @admin_password == UNSET_VALUE
88
106
  @url = nil if @url == UNSET_VALUE
107
+ @reserved_status = nil if @reserved_status = UNSET_VALUE
108
+ @reserved_list_owned = nil if @reserved_list_owned = UNSET_VALUE
109
+ @endpoint = nil if @endpoint == UNSET_VALUE
89
110
  @server_name = nil if @server_name == UNSET_VALUE
90
111
  @template_id = nil if @template_id == UNSET_VALUE
91
112
  @package_id = nil if @package_id == UNSET_VALUE
@@ -101,10 +122,32 @@ module VagrantPlugins
101
122
  # Global configurations needed by all service types
102
123
  errors << I18n.t('vagrant_arubacloud.config.arubacloud_username_required') unless @arubacloud_username
103
124
  errors << I18n.t('vagrant_arubacloud.config.arubacloud_password_required') unless @arubacloud_password
104
- errors << I18n.t('vagrant_arubacloud.config.admin_password_required') unless @admin_password
105
125
  errors << I18n.t('vagrant_arubacloud.config.template_id_required') unless @template_id
106
126
  errors << I18n.t('vagrant_arubacloud.config.service_type_required') unless @service_type
107
127
 
128
+ errors << I18n.t('vagrant_arubacloud.config.ssh_password_required') unless machine.config.ssh.password
129
+
130
+ #check if coded url or endpoint
131
+ #if url not in table or dc wrong return error
132
+ if (@url)
133
+ if (DC_TABLES.key(@url))
134
+ @endpoint = DC_TABLES.key(@url)
135
+ else
136
+ errors << I18n.t('vagrant_arubacloud.config.url_is_wrong')
137
+ end
138
+ else
139
+ if (@endpoint)
140
+ if DC_TABLES.key?(@endpoint.to_sym)
141
+ @url = DC_TABLES[@endpoint.to_sym]
142
+ else
143
+ errors << I18n.t('vagrant_arubacloud.config.endpoint_is_wrong')
144
+ end
145
+ else
146
+ @endpoint = DC_DEFAULT.to_sym
147
+ @url = DC_TABLES[DC_DEFAULT.to_sym]
148
+ end
149
+ end
150
+
108
151
  if @service_type.eql? 4
109
152
  errors << I18n.t('vagrant_arubacloud.config.package_id_required') unless @package_id
110
153
  else
@@ -118,7 +161,7 @@ module VagrantPlugins
118
161
  end
119
162
  {'ArubaCloud Provider' => errors}
120
163
  end
121
-
122
164
  end # Config
165
+
123
166
  end # ArubaCloud
124
- end # VagrantPlugins
167
+ end # VagrantPlugins