[DRE-commits] [vagrant-libvirt] 70/77: adds a `uri` config option
Antonio Terceiro
terceiro at moszumanska.debian.org
Sun Apr 24 13:56:40 UTC 2016
This is an automated email from the git hooks/post-receive script.
terceiro pushed a commit to annotated tag 0.0.17
in repository vagrant-libvirt.
commit 95a750817f87cbc00c7eff896ca6d6e74b2ca5b1
Author: Jake Teton-Landis <just.1.jake at gmail.com>
Date: Sun Jun 8 17:52:05 2014 -0700
adds a `uri` config option
The existing system of trying to intelligently generate a libvirt URI
from the user's config options was too restrictive for my uses. I have
added a `uri` config option that allows the user to directly specify the
libvirt resource they wish to connect to. This makes using
vagrant-libvirt with existing practices easier, and allows connecting
successfully in more environments (such as those that use
qemu:///session)
---
lib/vagrant-libvirt/action/connect_libvirt.rb | 45 +--------------------
lib/vagrant-libvirt/config.rb | 58 ++++++++++++++++++++++++++-
2 files changed, 57 insertions(+), 46 deletions(-)
diff --git a/lib/vagrant-libvirt/action/connect_libvirt.rb b/lib/vagrant-libvirt/action/connect_libvirt.rb
index abb879a..6fdb282 100644
--- a/lib/vagrant-libvirt/action/connect_libvirt.rb
+++ b/lib/vagrant-libvirt/action/connect_libvirt.rb
@@ -11,7 +11,6 @@ module VagrantPlugins
end
def call(env)
-
# If already connected to libvirt, just use it and don't connect
# again.
if ProviderLibvirt.libvirt_connection
@@ -21,49 +20,7 @@ module VagrantPlugins
# Get config options for libvirt provider.
config = env[:machine].provider_config
-
- # Setup connection uri.
- uri = config.driver.dup
- virt_path = case uri
- when 'qemu', 'openvz', 'uml', 'phyp', 'parallels', 'kvm'
- '/system'
- when 'xen', 'esx'
- '/'
- when 'vbox', 'vmwarews', 'hyperv'
- '/session'
- else
- raise "Require specify driver #{uri}"
- end
- if uri == 'kvm'
- uri = 'qemu' # use qemu uri for kvm domain type
- end
-
- if config.connect_via_ssh
- uri << '+ssh://'
- if config.username
- uri << config.username + '@'
- end
-
- if config.host
- uri << config.host
- else
- uri << 'localhost'
- end
- else
- uri << '://'
- uri << config.host if config.host
- end
-
- uri << virt_path
- uri << '?no_verify=1'
-
- if config.id_ssh_key_file
- # set ssh key for access to libvirt host
- home_dir = `echo ${HOME}`.chomp
- uri << "\&keyfile=#{home_dir}/.ssh/"+config.id_ssh_key_file
- end
- # set path to libvirt socket
- uri << "\&socket="+config.socket if config.socket
+ uri = config.uri
conn_attr = {}
conn_attr[:provider] = 'libvirt'
diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb
index bf23192..a586348 100644
--- a/lib/vagrant-libvirt/config.rb
+++ b/lib/vagrant-libvirt/config.rb
@@ -12,6 +12,10 @@ end
module VagrantPlugins
module ProviderLibvirt
class Config < Vagrant.plugin('2', :config)
+ # manually specify URI
+ # will supercede most other options if provided
+ attr_accessor :uri
+
# A hypervisor name to access via Libvirt.
attr_accessor :driver
@@ -19,8 +23,7 @@ module VagrantPlugins
attr_accessor :host
# If use ssh tunnel to connect to Libvirt.
- attr_accessor :connect_via_ssh
-
+ attr_accessor :connect_via_ssh
# Path towards the libvirt socket
attr_accessor :socket
@@ -122,6 +125,54 @@ module VagrantPlugins
end
end
+ # code to generate URI from a config moved out of the connect action
+ def _generate_uri
+ # builds the libvirt connection URI from the given driver config
+ # Setup connection uri.
+ uri = @driver.dup
+ virt_path = case uri
+ when 'qemu', 'openvz', 'uml', 'phyp', 'parallels', 'kvm'
+ '/system'
+ when '@en', 'esx'
+ '/'
+ when 'vbox', 'vmwarews', 'hyperv'
+ '/session'
+ else
+ raise "Require specify driver #{uri}"
+ end
+ if uri == 'kvm'
+ uri = 'qemu' # use qemu uri for kvm domain type
+ end
+
+ if @connect_via_ssh
+ uri << '+ssh://'
+ if @username
+ uri << @username + '@'
+ end
+
+ if @host
+ uri << @host
+ else
+ uri << 'localhost'
+ end
+ else
+ uri << '://'
+ uri << @host if @host
+ end
+
+ uri << virt_path
+ uri << '?no_verify=1'
+
+ if @id_ssh_key_file
+ # set ssh key for access to libvirt host
+ home_dir = `echo ${HOME}`.chomp
+ uri << "\&keyfile=#{home_dir}/.ssh/"+ at id_ssh_key_file
+ end
+ # set path to libvirt socket
+ uri << "\&socket="+ at socket if @socket
+ return uri
+ end
+
def finalize!
@driver = 'kvm' if @driver == UNSET_VALUE
@host = nil if @host == UNSET_VALUE
@@ -133,6 +184,9 @@ module VagrantPlugins
@management_network_name = 'vagrant-libvirt' if @management_network_name == UNSET_VALUE
@management_network_address = '192.168.121.0/24' if @management_network_address == UNSET_VALUE
+ # generate a URI if none is supplied
+ @uri = _generate_uri() if @uri == UNSET_VALUE
+
# Domain specific settings.
@memory = 512 if @memory == UNSET_VALUE
@cpus = 1 if @cpus == UNSET_VALUE
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/vagrant-libvirt.git
More information about the Pkg-ruby-extras-commits
mailing list