# File lib/vagrant-ovirt3/action/connect_ovirt.rb, line 10 def initialize(app, env) @logger = Log4r::Logger.new("vagrant_ovirt3::action::connect_ovirt") @app = app end
# File lib/vagrant-ovirt3/action/connect_ovirt.rb, line 15 def call(env) # We need both, fog and rbovirt client. Sometimes fog doesn't # support some operations like managing quotas, or working with # networks. For this rbovirt client is used. env[:ovirt_client] = OVirtProvider.ovirt_client if OVirtProvider.ovirt_client != nil if OVirtProvider.ovirt_connection != nil env[:ovirt_compute] = OVirtProvider.ovirt_connection return @app.call(env) end # Get config options for ovirt provider. config = env[:machine].provider_config conn_attr = {} conn_attr[:provider] = 'ovirt' conn_attr[:ovirt_url] = "#{config.url}/api" conn_attr[:ovirt_username] = config.username if config.username conn_attr[:ovirt_password] = config.password if config.password conn_attr[:ovirt_ca_no_verify] = config.ca_no_verify if config.ca_no_verify conn_attr[:ovirt_ca_cert_store] = config.ca_cert_store if config.ca_cert_store conn_attr[:ovirt_ca_cert_file] = config.ca_cert_file if config.ca_cert_file conn_attr[:ovirt_filtered_api] = config.filtered_api if config.filtered_api # We need datacenter id in fog connection initialization. But it's # much simpler to use datacenter name in Vagrantfile. So get # datacenter id here from rbovirt client before connecting to fog. env[:ovirt_client] = ovirt_connect(conn_attr) begin datacenter = OVirtProvider::Util::Collection.find_matching( env[:ovirt_client].datacenters, config.datacenter) rescue OVIRT::OvirtException => e raise Errors::FogOVirtConnectionError, :error_message => e.message end raise Errors::NoDatacenterError if datacenter == nil conn_attr[:ovirt_datacenter] = datacenter.id # Reconnect and prepar rbovirt client with datacenter set from # configuration. env[:ovirt_client] = ovirt_connect(conn_attr) OVirtProvider.ovirt_client = env[:ovirt_client] # Establish fog connection now. @logger.info("Connecting to oVirt (#{config.url}) ...") begin env[:ovirt_compute] = Fog::Compute.new(conn_attr) rescue OVIRT::OvirtException => e raise Errors::FogOVirtConnectionError, :error_message => e.message end OVirtProvider.ovirt_connection = env[:ovirt_compute] @app.call(env) end
# File lib/vagrant-ovirt3/action/connect_ovirt.rb, line 76 def ovirt_connect(credentials) OVIRT::Client.new( credentials[:ovirt_username], credentials[:ovirt_password], credentials[:ovirt_url], { :datacenter_id => credentials[:ovirt_datacenter], :ca_no_verify => credentials[:ovirt_ca_no_verify], :ca_cert_store => credentials[:ovirt_ca_cert_store], :ca_cert_file => credentials[:ovirt_ca_cert_file], :filtered_api => credentials[:ovirt_filtered_api] } ) end