vagrant-vmware-appcatalyst 1.0.1
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 +38 -0
- data/.rubocop.yml +34 -0
- data/Gemfile +7 -0
- data/LICENSE +177 -0
- data/README.md +72 -0
- data/lib/vagrant-vmware-appcatalyst.rb +30 -0
- data/lib/vagrant-vmware-appcatalyst/action.rb +249 -0
- data/lib/vagrant-vmware-appcatalyst/action/connect_appcatalyst.rb +45 -0
- data/lib/vagrant-vmware-appcatalyst/action/destroy_vm.rb +33 -0
- data/lib/vagrant-vmware-appcatalyst/action/import.rb +101 -0
- data/lib/vagrant-vmware-appcatalyst/action/is_created.rb +34 -0
- data/lib/vagrant-vmware-appcatalyst/action/is_paused.rb +33 -0
- data/lib/vagrant-vmware-appcatalyst/action/is_running.rb +32 -0
- data/lib/vagrant-vmware-appcatalyst/action/message_already_running.rb +29 -0
- data/lib/vagrant-vmware-appcatalyst/action/message_not_created.rb +29 -0
- data/lib/vagrant-vmware-appcatalyst/action/message_not_running.rb +29 -0
- data/lib/vagrant-vmware-appcatalyst/action/message_not_supported.rb +29 -0
- data/lib/vagrant-vmware-appcatalyst/action/message_will_not_destroy.rb +30 -0
- data/lib/vagrant-vmware-appcatalyst/action/power_off.rb +40 -0
- data/lib/vagrant-vmware-appcatalyst/action/power_on.rb +34 -0
- data/lib/vagrant-vmware-appcatalyst/action/read_ssh_info.rb +56 -0
- data/lib/vagrant-vmware-appcatalyst/action/read_state.rb +72 -0
- data/lib/vagrant-vmware-appcatalyst/action/resume.rb +31 -0
- data/lib/vagrant-vmware-appcatalyst/action/suspend.rb +31 -0
- data/lib/vagrant-vmware-appcatalyst/cap/mount_appcatalyst_shared_folder.rb +100 -0
- data/lib/vagrant-vmware-appcatalyst/cap/public_address.rb +31 -0
- data/lib/vagrant-vmware-appcatalyst/config.rb +40 -0
- data/lib/vagrant-vmware-appcatalyst/driver/base.rb +131 -0
- data/lib/vagrant-vmware-appcatalyst/driver/meta.rb +106 -0
- data/lib/vagrant-vmware-appcatalyst/driver/version_1_0.rb +223 -0
- data/lib/vagrant-vmware-appcatalyst/errors.rb +44 -0
- data/lib/vagrant-vmware-appcatalyst/plugin.rb +111 -0
- data/lib/vagrant-vmware-appcatalyst/provider.rb +60 -0
- data/lib/vagrant-vmware-appcatalyst/synced_folder.rb +123 -0
- data/lib/vagrant-vmware-appcatalyst/version.rb +18 -0
- data/locales/en.yml +29 -0
- data/vagrant-vmware-appcatalyst.gemspec +40 -0
- metadata +165 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class ConnectAppCatalyst
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
@logger = Log4r::Logger.new('vagrant_appcatalyst::action::connect_appcatalyst')
|
21
|
+
end
|
22
|
+
|
23
|
+
def call(env)
|
24
|
+
config = env[:machine].provider_config
|
25
|
+
|
26
|
+
@logger.info('Connecting to AppCatalyst...')
|
27
|
+
|
28
|
+
@logger.debug("config.rest_port: #{config.rest_port}") unless config.rest_port.nil?
|
29
|
+
|
30
|
+
if config.rest_port.nil?
|
31
|
+
endpoint = 'http://localhost:8080'
|
32
|
+
else
|
33
|
+
endpoint = "http://localhost:#{config.rest_port}"
|
34
|
+
end
|
35
|
+
|
36
|
+
env[:appcatalyst_cnx] = Driver::Meta.new(endpoint)
|
37
|
+
|
38
|
+
@logger.info('Logging into AppCatalyst...')
|
39
|
+
|
40
|
+
@app.call env
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class DestroyVM
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
@logger = Log4r::Logger.new('vagrant_appcatalyst::action::destroy_vm')
|
21
|
+
end
|
22
|
+
|
23
|
+
def call(env)
|
24
|
+
env[:ui].info I18n.t("vagrant.actions.vm.destroy.destroying")
|
25
|
+
env[:appcatalyst_cnx].delete_vm(env[:machine].id)
|
26
|
+
env[:machine].id = nil
|
27
|
+
|
28
|
+
@app.call(env)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
require 'securerandom'
|
15
|
+
|
16
|
+
module VagrantPlugins
|
17
|
+
module AppCatalyst
|
18
|
+
module Action
|
19
|
+
class Import
|
20
|
+
def initialize(app, _env)
|
21
|
+
@app = app
|
22
|
+
@logger = Log4r::Logger.new('vagrant_appcatalyst::action::import')
|
23
|
+
end
|
24
|
+
|
25
|
+
def call(env)
|
26
|
+
env[:ui].info I18n.t('vagrant.actions.vm.import.importing',
|
27
|
+
name: env[:machine].box.name)
|
28
|
+
|
29
|
+
# Generate a random UUID for our box
|
30
|
+
uuid = "vagrant-#{SecureRandom.uuid}"
|
31
|
+
|
32
|
+
env[:ui].detail I18n.t('vagrant_appcatalyst.vm.cloning')
|
33
|
+
|
34
|
+
env[:appcatalyst_cnx].clone_vm_in_directory(
|
35
|
+
env[:machine].box.directory,
|
36
|
+
"#{env[:machine].data_dir}/#{uuid}"
|
37
|
+
)
|
38
|
+
|
39
|
+
vmx_file = Dir.glob(
|
40
|
+
"#{env[:machine].data_dir}/#{uuid}/*.vmx"
|
41
|
+
).first
|
42
|
+
|
43
|
+
# Make sure we use Virtual HW 11
|
44
|
+
env[:appcatalyst_cnx].set_vmx_value(vmx_file, 'virtualHW.version', '11')
|
45
|
+
|
46
|
+
# Make sure we use VGA only...
|
47
|
+
env[:appcatalyst_cnx].set_vmx_value(vmx_file, 'svga.vgaOnly', 'true')
|
48
|
+
|
49
|
+
# Reconfigure VM with additional parameters specified in the
|
50
|
+
# Vagrantfile.
|
51
|
+
unless env[:machine].provider_config.vmx.empty?
|
52
|
+
@logger.debug(
|
53
|
+
"Adding parameters to VMX: #{env[:machine].provider_config.vmx}"
|
54
|
+
)
|
55
|
+
env[:machine].provider_config.vmx.each do |k, v|
|
56
|
+
env[:appcatalyst_cnx].set_vmx_value(vmx_file, k, v)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
env[:appcatalyst_cnx].import_vm(
|
61
|
+
uuid,
|
62
|
+
"Vagrant: #{env[:machine].name}",
|
63
|
+
vmx_file,
|
64
|
+
'vagrant'
|
65
|
+
)
|
66
|
+
|
67
|
+
# If import has succeded, let's set machine id.
|
68
|
+
env[:machine].id = uuid
|
69
|
+
|
70
|
+
# If we got interrupted, then the import could have been
|
71
|
+
# interrupted and its not a big deal. Just return out.
|
72
|
+
return if env[:interrupted]
|
73
|
+
|
74
|
+
# Flag as erroneous and return if import failed
|
75
|
+
# TODO: raise correct error
|
76
|
+
fail Vagrant::Errors::VMImportFailure unless env[:machine].id
|
77
|
+
|
78
|
+
# Import completed successfully. Continue the chain
|
79
|
+
@app.call(env)
|
80
|
+
end
|
81
|
+
|
82
|
+
def recover(env)
|
83
|
+
if env[:machine].state.id != :not_created
|
84
|
+
return if env['vagrant.error'].is_a?(Vagrant::Errors::VagrantError)
|
85
|
+
|
86
|
+
# If we're not supposed to destroy on error then just return
|
87
|
+
return unless env[:destroy_on_error]
|
88
|
+
|
89
|
+
# Interrupted, destroy the VM. We note that we don't want to
|
90
|
+
# validate the configuration here, and we don't want to confirm
|
91
|
+
# we want to destroy.
|
92
|
+
destroy_env = env.clone
|
93
|
+
destroy_env[:config_validate] = false
|
94
|
+
destroy_env[:force_confirm_destroy] = true
|
95
|
+
env[:action_runner].run(Action.action_destroy, destroy_env)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class IsCreated
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
@logger = Log4r::Logger.new('vagrant_appcatalyst::action::is_created')
|
21
|
+
end
|
22
|
+
|
23
|
+
def call(env)
|
24
|
+
# Set the result to be true if the machine is created.
|
25
|
+
env[:result] = env[:machine].state.id != :not_created
|
26
|
+
|
27
|
+
# Call the next if we have one (but we shouldn't, since this
|
28
|
+
# middleware is built to run with the Call-type middlewares)
|
29
|
+
@app.call(env)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class IsPaused
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
# Set the result to be true if the machine is suspended.
|
24
|
+
env[:result] = env[:machine].state.id == :suspended
|
25
|
+
|
26
|
+
# Call the next if we have one (but we shouldn't, since this
|
27
|
+
# middleware is built to run with the Call-type middlewares)
|
28
|
+
@app.call(env)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software distributed
|
9
|
+
# under the License is distributed on an "AS IS" BASIS, without warranties or
|
10
|
+
# conditions of any kind, EITHER EXPRESS OR IMPLIED. See the License for the
|
11
|
+
# specific language governing permissions and limitations under the License.
|
12
|
+
|
13
|
+
module VagrantPlugins
|
14
|
+
module AppCatalyst
|
15
|
+
module Action
|
16
|
+
class IsRunning
|
17
|
+
def initialize(app, env)
|
18
|
+
@app = app
|
19
|
+
end
|
20
|
+
|
21
|
+
def call(env)
|
22
|
+
# Set the result to be true if the machine is running.
|
23
|
+
env[:result] = env[:machine].state.id == :running
|
24
|
+
|
25
|
+
# Call the next if we have one (but we shouldn't, since this
|
26
|
+
# middleware is built to run with the Call-type middlewares)
|
27
|
+
@app.call(env)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class MessageAlreadyRunning
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
env[:ui].info I18n.t("vagrant.commands.common.vm_already_running")
|
24
|
+
@app.call(env)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class MessageNotCreated
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
env[:ui].info I18n.t("vagrant.commands.common.vm_not_created")
|
24
|
+
@app.call(env)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class MessageNotRunning
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
env[:ui].info I18n.t("vagrant.commands.common.vm_not_running")
|
24
|
+
@app.call(env)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class MessageNotSupported
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
env[:ui].error(I18n.t('vagrant_appcatalyst.errors.violations.operation_not_supported'))
|
24
|
+
@app.call(env)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class MessageWillNotDestroy
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
end
|
21
|
+
|
22
|
+
def call(env)
|
23
|
+
env[:ui].info I18n.t("vagrant.commands.destroy.will_not_destroy",
|
24
|
+
name: env[:machine].name)
|
25
|
+
@app.call(env)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2015 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
# use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
# the License at http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS, without
|
10
|
+
# warranties or conditions of any kind, EITHER EXPRESS OR IMPLIED. See the
|
11
|
+
# License for the specific language governing permissions and limitations under
|
12
|
+
# the License.
|
13
|
+
|
14
|
+
module VagrantPlugins
|
15
|
+
module AppCatalyst
|
16
|
+
module Action
|
17
|
+
class PowerOff
|
18
|
+
def initialize(app, env)
|
19
|
+
@app = app
|
20
|
+
@logger = Log4r::Logger.new('vagrant_appcatalyst::action::poweroff')
|
21
|
+
end
|
22
|
+
|
23
|
+
def call(env)
|
24
|
+
current_state = env[:machine].state.id
|
25
|
+
if current_state == :running
|
26
|
+
env[:ui].info(I18n.t("vagrant.actions.vm.halt.graceful"))
|
27
|
+
begin
|
28
|
+
env[:appcatalyst_cnx].set_vm_power(env[:machine].id, 'shutdown')
|
29
|
+
rescue Errors::UnattendedCodeError
|
30
|
+
env[:ui].info I18n.t("vagrant.actions.vm.halt.force")
|
31
|
+
env[:appcatalyst_cnx].set_vm_power(env[:machine].id, 'off')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
@app.call(env)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|