vagrant-arubacloud 0.0.7 → 0.0.9
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/CHANGELOG.md +36 -36
- data/Gemfile +12 -12
- data/LICENSE.txt +22 -22
- data/README.md +954 -954
- data/Vagrantfile_base +23 -23
- data/Vagrantfile_multi_machine +108 -108
- data/Vagrantfile_only_arubacloud_tmpl_srv +22 -22
- data/Vagrantfile_pro +32 -32
- data/Vagrantfile_syncing_and_sample_provision +27 -27
- data/lib/vagrant-arubacloud/action.rb +204 -204
- data/lib/vagrant-arubacloud/action/connect_arubacloud.rb +39 -39
- data/lib/vagrant-arubacloud/action/create_server.rb +116 -116
- data/lib/vagrant-arubacloud/action/delete_server.rb +35 -35
- data/lib/vagrant-arubacloud/action/halt_server.rb +61 -61
- data/lib/vagrant-arubacloud/action/list_servers.rb +61 -61
- data/lib/vagrant-arubacloud/action/list_templates.rb +36 -36
- data/lib/vagrant-arubacloud/action/read_ssh_info.rb +43 -43
- data/lib/vagrant-arubacloud/action/read_state.rb +43 -43
- data/lib/vagrant-arubacloud/action/start_server.rb +59 -59
- data/lib/vagrant-arubacloud/command/root.rb +66 -66
- data/lib/vagrant-arubacloud/command/servers.rb +49 -49
- data/lib/vagrant-arubacloud/command/snapshot.rb +175 -175
- data/lib/vagrant-arubacloud/config.rb +166 -167
- data/lib/vagrant-arubacloud/plugin.rb +56 -56
- data/lib/vagrant-arubacloud/provider.rb +51 -51
- data/lib/vagrant-arubacloud/version.rb +5 -5
- data/locales/en.yml +105 -105
- data/spec/vagrant-arubacloud/action_spec.rb +166 -166
- data/spec/vagrant-arubacloud/config_spec.rb +185 -185
- data/vagrant-arubacloud.gemspec +26 -27
- metadata +2 -16
@@ -1,39 +1,39 @@
|
|
1
|
-
require 'fog/arubacloud'
|
2
|
-
require 'log4r'
|
3
|
-
|
4
|
-
module VagrantPlugins
|
5
|
-
module ArubaCloud
|
6
|
-
module Action
|
7
|
-
|
8
|
-
class ConnectArubaCloud
|
9
|
-
def initialize(app, env)
|
10
|
-
@app = app
|
11
|
-
@logger = Log4r::Logger.new('vagrant_arubacloud::action::connect_arubacloud')
|
12
|
-
end
|
13
|
-
|
14
|
-
def call(env)
|
15
|
-
# Set the datacenter
|
16
|
-
config = env[:machine].provider_config
|
17
|
-
arubacloud_username = config.arubacloud_username
|
18
|
-
arubacloud_password = config.arubacloud_password
|
19
|
-
arubacloud_dc = config.endpoint
|
20
|
-
|
21
|
-
params = {
|
22
|
-
:provider => :arubacloud,
|
23
|
-
:arubacloud_username => arubacloud_username,
|
24
|
-
:arubacloud_password => arubacloud_password,
|
25
|
-
}
|
26
|
-
|
27
|
-
if config.url
|
28
|
-
@logger.info("Connecting to Datacenter: #{arubacloud_dc} url: #{config.url} ")
|
29
|
-
params[:url] = config.url
|
30
|
-
end
|
31
|
-
|
32
|
-
env[:arubacloud_compute] = Fog::Compute.new params
|
33
|
-
|
34
|
-
@app.call(env)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
1
|
+
require 'fog/arubacloud'
|
2
|
+
require 'log4r'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module ArubaCloud
|
6
|
+
module Action
|
7
|
+
|
8
|
+
class ConnectArubaCloud
|
9
|
+
def initialize(app, env)
|
10
|
+
@app = app
|
11
|
+
@logger = Log4r::Logger.new('vagrant_arubacloud::action::connect_arubacloud')
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
# Set the datacenter
|
16
|
+
config = env[:machine].provider_config
|
17
|
+
arubacloud_username = config.arubacloud_username
|
18
|
+
arubacloud_password = config.arubacloud_password
|
19
|
+
arubacloud_dc = config.endpoint
|
20
|
+
|
21
|
+
params = {
|
22
|
+
:provider => :arubacloud,
|
23
|
+
:arubacloud_username => arubacloud_username,
|
24
|
+
:arubacloud_password => arubacloud_password,
|
25
|
+
}
|
26
|
+
|
27
|
+
if config.url
|
28
|
+
@logger.info("Connecting to Datacenter: #{arubacloud_dc} url: #{config.url} ")
|
29
|
+
params[:url] = config.url
|
30
|
+
end
|
31
|
+
|
32
|
+
env[:arubacloud_compute] = Fog::Compute.new params
|
33
|
+
|
34
|
+
@app.call(env)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,116 +1,116 @@
|
|
1
|
-
require 'fog/arubacloud'
|
2
|
-
require 'log4r'
|
3
|
-
|
4
|
-
require 'vagrant/util/retryable'
|
5
|
-
|
6
|
-
module VagrantPlugins
|
7
|
-
module ArubaCloud
|
8
|
-
module Action
|
9
|
-
|
10
|
-
# Create a new server
|
11
|
-
class CreateServer
|
12
|
-
include Vagrant::Util::Retryable
|
13
|
-
|
14
|
-
def initialize(app, env)
|
15
|
-
@app = app
|
16
|
-
@logger = Log4r::Logger.new('vagrant_arubacloud::action::create_server')
|
17
|
-
end
|
18
|
-
|
19
|
-
def call(env)
|
20
|
-
config = env[:machine].provider_config
|
21
|
-
arubacloud_dc = config.endpoint
|
22
|
-
tb_package_id = {'small' => 'CPU: 1, Ram(GB): 1, DiskSize(GB): 20',
|
23
|
-
'medium' => 'CPU: 1, Ram(GB): 2, DiskSize(GB): 40',
|
24
|
-
'large' => 'CPU: 2, Ram(GB): 4, DiskSize(GB): 80',
|
25
|
-
'extra large' => 'CPU: 4, Ram(GB): 8, DiskSize(GB): 160'
|
26
|
-
}
|
27
|
-
tb_package_id.default = " *unknow package_id* "
|
28
|
-
|
29
|
-
sshpwd = env[:machine].config.ssh.password
|
30
|
-
|
31
|
-
# Set Server Name
|
32
|
-
server_name = config.server_name || env[:machine].name
|
33
|
-
|
34
|
-
# Output the settings we're going to use to the user
|
35
|
-
env[:ui].info('Creating a server with the following settings...')
|
36
|
-
env[:ui].info(" -- Datacenter: #{arubacloud_dc}")
|
37
|
-
env[:ui].info(" -- Name: #{server_name}")
|
38
|
-
env[:ui].info(" -- Root Password: #{sshpwd}")
|
39
|
-
# Build the config hash according to the service type
|
40
|
-
if config.service_type.eql? 4
|
41
|
-
options = {
|
42
|
-
:name => server_name,
|
43
|
-
:vm_type => 'smart',
|
44
|
-
:admin_passwd => sshpwd,
|
45
|
-
:cpu => 1,
|
46
|
-
:memory => 1,
|
47
|
-
:template_id => config.template_id,
|
48
|
-
:package_id => config.package_id
|
49
|
-
}
|
50
|
-
env[:ui].info(" -- Package: #{config.package_id} config as: #{tb_package_id[config.package_id]}")
|
51
|
-
|
52
|
-
else
|
53
|
-
# Processing hds
|
54
|
-
disks = []
|
55
|
-
accum = "["
|
56
|
-
config.hds.each do |disk_spec|
|
57
|
-
disks << env[:arubacloud_compute].disks.create({
|
58
|
-
:size => disk_spec[:size],
|
59
|
-
:virtual_disk_type => disk_spec[:type]}).get_hash
|
60
|
-
accum += "(hd#{disk_spec[:type]}: #{disk_spec[:size]})"
|
61
|
-
end
|
62
|
-
accum += "]"
|
63
|
-
options = {
|
64
|
-
:name => server_name,
|
65
|
-
:vm_type => 'pro',
|
66
|
-
:admin_passwd => sshpwd,
|
67
|
-
:cpu => config.cpu_number,
|
68
|
-
:memory => config.ram_qty,
|
69
|
-
:template_id => config.template_id,
|
70
|
-
:disks => disks
|
71
|
-
}
|
72
|
-
env[:ui].info(" -- Config as: CPU: #{config.cpu_number}, Ram(GB): #{config.ram_qty}, Disk(GB): #{accum} ")
|
73
|
-
end
|
74
|
-
|
75
|
-
env[:ui].info(" -- OS Template: #{config.template_id}")
|
76
|
-
env[:ui].info(" -- Service Type: #{config.service_type} (#{options[:vm_type]}) ")
|
77
|
-
|
78
|
-
# Create the server
|
79
|
-
begin
|
80
|
-
server = env[:arubacloud_compute].servers.create(options)
|
81
|
-
rescue Fog::ArubaCloud::Errors::RequestError => e
|
82
|
-
message = ''
|
83
|
-
error = nil
|
84
|
-
@logger.debug(e.inspect.to_yaml)
|
85
|
-
if e.response['ResultCode'].eql? 16
|
86
|
-
message = "Virtual machine with name: #{options[:name]}, already present. Bailout!"
|
87
|
-
error = Errors::MachineAlreadyPresent
|
88
|
-
elsif e.response['ResultCode'].eql?(-500)
|
89
|
-
message = 'Server returned an unexpected response. Bailout!'
|
90
|
-
error = Errors::BadServerResponse
|
91
|
-
end
|
92
|
-
env[:ui].warn("Response message: #{e.response.to_yaml}")
|
93
|
-
env[:ui].warn(message)
|
94
|
-
raise error
|
95
|
-
end
|
96
|
-
|
97
|
-
# Store id of the machine
|
98
|
-
env[:machine].id = server.id
|
99
|
-
|
100
|
-
# Wait for ssh to be ready
|
101
|
-
env[:ui].info(" [#{arubacloud_dc}] " + 'Waiting until server is ready...')
|
102
|
-
|
103
|
-
retryable(:tries => 20, :sleep => 45) do
|
104
|
-
next if env[:interrupted]
|
105
|
-
server.wait_for(5) { ready? }
|
106
|
-
end
|
107
|
-
|
108
|
-
env[:ui].info(" [#{arubacloud_dc}] " + 'The server is ready!')
|
109
|
-
|
110
|
-
@app.call(env)
|
111
|
-
end
|
112
|
-
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
1
|
+
require 'fog/arubacloud'
|
2
|
+
require 'log4r'
|
3
|
+
|
4
|
+
require 'vagrant/util/retryable'
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module ArubaCloud
|
8
|
+
module Action
|
9
|
+
|
10
|
+
# Create a new server
|
11
|
+
class CreateServer
|
12
|
+
include Vagrant::Util::Retryable
|
13
|
+
|
14
|
+
def initialize(app, env)
|
15
|
+
@app = app
|
16
|
+
@logger = Log4r::Logger.new('vagrant_arubacloud::action::create_server')
|
17
|
+
end
|
18
|
+
|
19
|
+
def call(env)
|
20
|
+
config = env[:machine].provider_config
|
21
|
+
arubacloud_dc = config.endpoint
|
22
|
+
tb_package_id = {'small' => 'CPU: 1, Ram(GB): 1, DiskSize(GB): 20',
|
23
|
+
'medium' => 'CPU: 1, Ram(GB): 2, DiskSize(GB): 40',
|
24
|
+
'large' => 'CPU: 2, Ram(GB): 4, DiskSize(GB): 80',
|
25
|
+
'extra large' => 'CPU: 4, Ram(GB): 8, DiskSize(GB): 160'
|
26
|
+
}
|
27
|
+
tb_package_id.default = " *unknow package_id* "
|
28
|
+
|
29
|
+
sshpwd = env[:machine].config.ssh.password
|
30
|
+
|
31
|
+
# Set Server Name
|
32
|
+
server_name = config.server_name || env[:machine].name
|
33
|
+
|
34
|
+
# Output the settings we're going to use to the user
|
35
|
+
env[:ui].info('Creating a server with the following settings...')
|
36
|
+
env[:ui].info(" -- Datacenter: #{arubacloud_dc}")
|
37
|
+
env[:ui].info(" -- Name: #{server_name}")
|
38
|
+
env[:ui].info(" -- Root Password: #{sshpwd}")
|
39
|
+
# Build the config hash according to the service type
|
40
|
+
if config.service_type.eql? 4
|
41
|
+
options = {
|
42
|
+
:name => server_name,
|
43
|
+
:vm_type => 'smart',
|
44
|
+
:admin_passwd => sshpwd,
|
45
|
+
:cpu => 1,
|
46
|
+
:memory => 1,
|
47
|
+
:template_id => config.template_id,
|
48
|
+
:package_id => config.package_id
|
49
|
+
}
|
50
|
+
env[:ui].info(" -- Package: #{config.package_id} config as: #{tb_package_id[config.package_id]}")
|
51
|
+
|
52
|
+
else
|
53
|
+
# Processing hds
|
54
|
+
disks = []
|
55
|
+
accum = "["
|
56
|
+
config.hds.each do |disk_spec|
|
57
|
+
disks << env[:arubacloud_compute].disks.create({
|
58
|
+
:size => disk_spec[:size],
|
59
|
+
:virtual_disk_type => disk_spec[:type]}).get_hash
|
60
|
+
accum += "(hd#{disk_spec[:type]}: #{disk_spec[:size]})"
|
61
|
+
end
|
62
|
+
accum += "]"
|
63
|
+
options = {
|
64
|
+
:name => server_name,
|
65
|
+
:vm_type => 'pro',
|
66
|
+
:admin_passwd => sshpwd,
|
67
|
+
:cpu => config.cpu_number,
|
68
|
+
:memory => config.ram_qty,
|
69
|
+
:template_id => config.template_id,
|
70
|
+
:disks => disks
|
71
|
+
}
|
72
|
+
env[:ui].info(" -- Config as: CPU: #{config.cpu_number}, Ram(GB): #{config.ram_qty}, Disk(GB): #{accum} ")
|
73
|
+
end
|
74
|
+
|
75
|
+
env[:ui].info(" -- OS Template: #{config.template_id}")
|
76
|
+
env[:ui].info(" -- Service Type: #{config.service_type} (#{options[:vm_type]}) ")
|
77
|
+
|
78
|
+
# Create the server
|
79
|
+
begin
|
80
|
+
server = env[:arubacloud_compute].servers.create(options)
|
81
|
+
rescue Fog::ArubaCloud::Errors::RequestError => e
|
82
|
+
message = ''
|
83
|
+
error = nil
|
84
|
+
@logger.debug(e.inspect.to_yaml)
|
85
|
+
if e.response['ResultCode'].eql? 16
|
86
|
+
message = "Virtual machine with name: #{options[:name]}, already present. Bailout!"
|
87
|
+
error = Errors::MachineAlreadyPresent
|
88
|
+
elsif e.response['ResultCode'].eql?(-500)
|
89
|
+
message = 'Server returned an unexpected response. Bailout!'
|
90
|
+
error = Errors::BadServerResponse
|
91
|
+
end
|
92
|
+
env[:ui].warn("Response message: #{e.response.to_yaml}")
|
93
|
+
env[:ui].warn(message)
|
94
|
+
raise error
|
95
|
+
end
|
96
|
+
|
97
|
+
# Store id of the machine
|
98
|
+
env[:machine].id = server.id
|
99
|
+
|
100
|
+
# Wait for ssh to be ready
|
101
|
+
env[:ui].info(" [#{arubacloud_dc}] " + 'Waiting until server is ready...')
|
102
|
+
|
103
|
+
retryable(:tries => 20, :sleep => 45) do
|
104
|
+
next if env[:interrupted]
|
105
|
+
server.wait_for(5) { ready? }
|
106
|
+
end
|
107
|
+
|
108
|
+
env[:ui].info(" [#{arubacloud_dc}] " + 'The server is ready!')
|
109
|
+
|
110
|
+
@app.call(env)
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -1,35 +1,35 @@
|
|
1
|
-
require 'log4r'
|
2
|
-
require 'fog/arubacloud/error'
|
3
|
-
|
4
|
-
module VagrantPlugins
|
5
|
-
module ArubaCloud
|
6
|
-
module Action
|
7
|
-
# This deletes the running server, if there is one.
|
8
|
-
class DeleteServer
|
9
|
-
def initialize(app, env)
|
10
|
-
@app = app
|
11
|
-
@logger = Log4r::Logger.new('vagrant_arubacloud::action::delete_server')
|
12
|
-
end
|
13
|
-
|
14
|
-
def call(env)
|
15
|
-
if env[:machine].id
|
16
|
-
config = env[:machine].provider_config
|
17
|
-
arubacloud_dc = config.endpoint
|
18
|
-
env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.deleting_server'))
|
19
|
-
# On fog side, get will call get_service_details, I must be sure
|
20
|
-
# that the returned object has the "id" parameters not nil
|
21
|
-
server = env[:arubacloud_compute].servers.get(env[:machine].id)
|
22
|
-
begin
|
23
|
-
server.delete
|
24
|
-
rescue Fog::ArubaCloud::Errors::VmStatus
|
25
|
-
env[:ui].warn(I18n.t('vagrant_arubacloud.bad_state'))
|
26
|
-
end
|
27
|
-
env[:machine].id = nil
|
28
|
-
end
|
29
|
-
|
30
|
-
@app.call(env)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
1
|
+
require 'log4r'
|
2
|
+
require 'fog/arubacloud/error'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module ArubaCloud
|
6
|
+
module Action
|
7
|
+
# This deletes the running server, if there is one.
|
8
|
+
class DeleteServer
|
9
|
+
def initialize(app, env)
|
10
|
+
@app = app
|
11
|
+
@logger = Log4r::Logger.new('vagrant_arubacloud::action::delete_server')
|
12
|
+
end
|
13
|
+
|
14
|
+
def call(env)
|
15
|
+
if env[:machine].id
|
16
|
+
config = env[:machine].provider_config
|
17
|
+
arubacloud_dc = config.endpoint
|
18
|
+
env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.deleting_server'))
|
19
|
+
# On fog side, get will call get_service_details, I must be sure
|
20
|
+
# that the returned object has the "id" parameters not nil
|
21
|
+
server = env[:arubacloud_compute].servers.get(env[:machine].id)
|
22
|
+
begin
|
23
|
+
server.delete
|
24
|
+
rescue Fog::ArubaCloud::Errors::VmStatus
|
25
|
+
env[:ui].warn(I18n.t('vagrant_arubacloud.bad_state'))
|
26
|
+
end
|
27
|
+
env[:machine].id = nil
|
28
|
+
end
|
29
|
+
|
30
|
+
@app.call(env)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,61 +1,61 @@
|
|
1
|
-
require 'log4r'
|
2
|
-
require 'vagrant/util/retryable'
|
3
|
-
require 'fog/arubacloud/error'
|
4
|
-
|
5
|
-
module VagrantPlugins
|
6
|
-
module ArubaCloud
|
7
|
-
module Action
|
8
|
-
# This stop a server, if it exists
|
9
|
-
class HaltServer
|
10
|
-
include Vagrant::Util::Retryable
|
11
|
-
|
12
|
-
def initialize(app, env)
|
13
|
-
@app = app
|
14
|
-
@env = env
|
15
|
-
@logger = Log4r::Logger.new('vagrant_arubacloud::action::halt_server')
|
16
|
-
end
|
17
|
-
|
18
|
-
def call(env)
|
19
|
-
if env[:machine].id
|
20
|
-
config = env[:machine].provider_config
|
21
|
-
arubacloud_dc = config.endpoint
|
22
|
-
env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.halting_server'))
|
23
|
-
server = env[:arubacloud_compute].servers.get(env[:machine].id)
|
24
|
-
|
25
|
-
# Check if the vm is already powered off
|
26
|
-
@logger.debug("VM stopped?: #{server.stopped?}")
|
27
|
-
if server.stopped?
|
28
|
-
# continue the middleware
|
29
|
-
@logger.debug("VM is stopped ...")
|
30
|
-
@app.call(env)
|
31
|
-
else
|
32
|
-
# Try to poweroff the VM.
|
33
|
-
begin
|
34
|
-
@logger.debug("before make do power_off ...")
|
35
|
-
server.power_off
|
36
|
-
rescue Fog::ArubaCloud::Errors::VmStatus
|
37
|
-
env[:ui].warn(I18n.t('vagrant_arubacloud.bad_state'))
|
38
|
-
return
|
39
|
-
rescue Fog::ArubaCloud::Errors::RequestError => e
|
40
|
-
if e.response['ResultCode'].eql? 17
|
41
|
-
env[:ui].warn(I18n.t('vagrant_arubacloud.operation_already_in_queue'))
|
42
|
-
return
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Wait for the server to be proper shut down
|
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? }
|
51
|
-
end
|
52
|
-
env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.server_powered_off'))
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
@app.call(env)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
1
|
+
require 'log4r'
|
2
|
+
require 'vagrant/util/retryable'
|
3
|
+
require 'fog/arubacloud/error'
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module ArubaCloud
|
7
|
+
module Action
|
8
|
+
# This stop a server, if it exists
|
9
|
+
class HaltServer
|
10
|
+
include Vagrant::Util::Retryable
|
11
|
+
|
12
|
+
def initialize(app, env)
|
13
|
+
@app = app
|
14
|
+
@env = env
|
15
|
+
@logger = Log4r::Logger.new('vagrant_arubacloud::action::halt_server')
|
16
|
+
end
|
17
|
+
|
18
|
+
def call(env)
|
19
|
+
if env[:machine].id
|
20
|
+
config = env[:machine].provider_config
|
21
|
+
arubacloud_dc = config.endpoint
|
22
|
+
env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.halting_server'))
|
23
|
+
server = env[:arubacloud_compute].servers.get(env[:machine].id)
|
24
|
+
|
25
|
+
# Check if the vm is already powered off
|
26
|
+
@logger.debug("VM stopped?: #{server.stopped?}")
|
27
|
+
if server.stopped?
|
28
|
+
# continue the middleware
|
29
|
+
@logger.debug("VM is stopped ...")
|
30
|
+
@app.call(env)
|
31
|
+
else
|
32
|
+
# Try to poweroff the VM.
|
33
|
+
begin
|
34
|
+
@logger.debug("before make do power_off ...")
|
35
|
+
server.power_off
|
36
|
+
rescue Fog::ArubaCloud::Errors::VmStatus
|
37
|
+
env[:ui].warn(I18n.t('vagrant_arubacloud.bad_state'))
|
38
|
+
return
|
39
|
+
rescue Fog::ArubaCloud::Errors::RequestError => e
|
40
|
+
if e.response['ResultCode'].eql? 17
|
41
|
+
env[:ui].warn(I18n.t('vagrant_arubacloud.operation_already_in_queue'))
|
42
|
+
return
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Wait for the server to be proper shut down
|
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? }
|
51
|
+
end
|
52
|
+
env[:ui].info(" [#{arubacloud_dc}] " + I18n.t('vagrant_arubacloud.server_powered_off'))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
@app.call(env)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|