class VagrantPlugins::SecuredCloud::Action::CheckState
This can be used with “Call” built-in to check if the machine is created and branch in the middleware.
Public Class Methods
new(app, env)
click to toggle source
# File lib/secured-cloud-vagrant/actions/check_state.rb, line 12 def initialize(app, env) @app = app @machine = env[:machine] @logger = Log4r::Logger.new('vagrant::secured_cloud::action::check_state') end
Public Instance Methods
call(env)
click to toggle source
# File lib/secured-cloud-vagrant/actions/check_state.rb, line 18 def call(env) @logger.debug("Checking VM state ...") vm_resource_url = @machine.id if vm_resource_url.nil? || vm_resource_url.empty? env[:machine_state] = :not_created else begin # Create a Secured Cloud Connection instance to connect tot he SecuredCloud API authInfo = @machine.provider_config.auth sc_connection = SecuredCloudConnection.new(authInfo.url, authInfo.applicationKey, authInfo.sharedSecret) # Get the VM details virtualMachine = SecuredCloudRestClient.getVMDetails(sc_connection, vm_resource_url) # Set the VM name env[:vm_name] = virtualMachine.get_name @logger.debug("VM Name: '#{env[:vm_name]}'") # Get the VM power status if (virtualMachine.get_power_status == "POWERED_OFF") env[:machine_state] = :stopped elsif (virtualMachine.get_power_status == "POWERED_ON") env[:machine_state] = :active end @logger.debug("State for VM #{vm_resource_url} is #{env[:machine_state]}") rescue Errno::ETIMEDOUT env[:ui].error(I18n.t("secured_cloud_vagrant.errors.request_timed_out", :request => "get the VM details")) rescue Exception => e env[:ui].error(I18n.t("secured_cloud_vagrant.errors.generic_error", :error_message => e.message)) end end @app.call(env) end