class VagrantPlugins::Openstack::Action::ConnectOpenstack

Public Class Methods

new(app, env, catalog_reader = OpenstackCatalog.new) click to toggle source
# File lib/vagrant-openstack-provider/action/connect_openstack.rb, line 16
def initialize(app, env, catalog_reader = OpenstackCatalog.new)
  @app = app
  @logger = Log4r::Logger.new('vagrant_openstack::action::connect_openstack')
  @catalog_reader = catalog_reader
  env[:openstack_client] = VagrantPlugins::Openstack
end

Public Instance Methods

execute(env) click to toggle source
# File lib/vagrant-openstack-provider/action/connect_openstack.rb, line 23
def execute(env)
  client = env[:openstack_client]
  if client.session.token.nil?
    catalog = client.keystone.authenticate(env)
    @catalog_reader.read(env, catalog)
    override_endpoint_catalog_with_user_config(env)
    check_configuration(env)
    log_endpoint_catalog(env)
  end
  @app.call(env) unless @app.nil?
end

Private Instance Methods

check_configuration(env) click to toggle source
# File lib/vagrant-openstack-provider/action/connect_openstack.rb, line 48
def check_configuration(env)
  fail Errors::MissingNovaEndpoint unless env[:openstack_client].session.endpoints.key? :compute
end
log_endpoint_catalog(env) click to toggle source
# File lib/vagrant-openstack-provider/action/connect_openstack.rb, line 52
def log_endpoint_catalog(env)
  env[:openstack_client].session.endpoints.each do |key, value|
    @logger.info(" -- #{key.to_s.ljust 15}: #{value}")
  end
end
override_endpoint_catalog_with_user_config(env) click to toggle source
# File lib/vagrant-openstack-provider/action/connect_openstack.rb, line 37
def override_endpoint_catalog_with_user_config(env)
  client = env[:openstack_client]
  config = env[:machine].provider_config
  endpoints = client.session.endpoints
  endpoints[:compute] = config.openstack_compute_url unless config.openstack_compute_url.nil?
  endpoints[:network] = config.openstack_network_url unless config.openstack_network_url.nil?
  endpoints[:volume]  = config.openstack_volume_url  unless config.openstack_volume_url.nil?
  endpoints[:image]   = config.openstack_image_url   unless config.openstack_image_url.nil?
  endpoints.delete_if { |_, value| value.nil? || value.empty? }
end