class VagrantPlugins::SecuredCloud::Action::HasPublicIps

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/has_public_ips.rb, line 13
def initialize(app, env)
        @app = app
        @machine = env[:machine]
        @logger = Log4r::Logger.new('vagrant::secured_cloud::action::has_public_ips')
end

Public Instance Methods

call(env) click to toggle source
# File lib/secured-cloud-vagrant/actions/has_public_ips.rb, line 19
                    def call(env)
                    
                            @logger.debug("Checking whether VM has public IPs ...")
                            
                            vm_resource_url = @machine.id
                            
                            if !vm_resource_url.nil? && !vm_resource_url.empty?
                            
                                    begin
                                    
                                    # Create a Secured Cloud Connection instance to connect to the SecuredCloud API
authInfo = @machine.provider_config.auth
sc_connection = SecuredCloudConnection.new(authInfo.url, authInfo.applicationKey, authInfo.sharedSecret)
          
                                            # Get the public IPs of the VM
                                            publicIps = SecuredCloudRestClient.getVMPublicIPs(sc_connection, vm_resource_url)
                                            env[:has_public_ips] = (!publicIps.nil? && !publicIps.empty?)
                                            @logger.debug("Has public IPs: #{env[:has_public_ips]}")
                                    
                                    rescue Errno::ETIMEDOUT
                                            env[:ui].error(I18n.t('secured_cloud_vagrant.errors.request_timed_out', :request => "get the public IPs for VM #{env[:vm_name]}"))
rescue Exception => e
  env[:ui].error(I18n.t("secured_cloud_vagrant.errors.generic_error", :error_message => e.message))
                                    end
                                    
                            end
                            
                            @app.call(env)
                    end