vagrant-libvirt 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +12 -0
- data/LICENSE +22 -0
- data/README.md +33 -0
- data/Rakefile +7 -0
- data/example_box/README.md +14 -0
- data/example_box/Vagrantfile +45 -0
- data/example_box/metadata.json +5 -0
- data/lib/vagrant-libvirt/action/connect_libvirt.rb +72 -0
- data/lib/vagrant-libvirt/action/create_domain.rb +62 -0
- data/lib/vagrant-libvirt/action/create_domain_volume.rb +58 -0
- data/lib/vagrant-libvirt/action/create_network_interfaces.rb +85 -0
- data/lib/vagrant-libvirt/action/destroy_domain.rb +28 -0
- data/lib/vagrant-libvirt/action/handle_box_image.rb +121 -0
- data/lib/vagrant-libvirt/action/handle_storage_pool.rb +49 -0
- data/lib/vagrant-libvirt/action/is_created.rb +18 -0
- data/lib/vagrant-libvirt/action/message_already_created.rb +16 -0
- data/lib/vagrant-libvirt/action/message_not_created.rb +16 -0
- data/lib/vagrant-libvirt/action/read_ssh_info.rb +51 -0
- data/lib/vagrant-libvirt/action/read_state.rb +38 -0
- data/lib/vagrant-libvirt/action/set_name_of_domain.rb +31 -0
- data/lib/vagrant-libvirt/action/start_domain.rb +27 -0
- data/lib/vagrant-libvirt/action/sync_folders.rb +58 -0
- data/lib/vagrant-libvirt/action/timed_provision.rb +21 -0
- data/lib/vagrant-libvirt/action/wait_till_up.rb +96 -0
- data/lib/vagrant-libvirt/action.rb +94 -0
- data/lib/vagrant-libvirt/config.rb +48 -0
- data/lib/vagrant-libvirt/errors.rb +90 -0
- data/lib/vagrant-libvirt/plugin.rb +77 -0
- data/lib/vagrant-libvirt/provider.rb +76 -0
- data/lib/vagrant-libvirt/templates/default_storage_pool.xml.erb +13 -0
- data/lib/vagrant-libvirt/templates/domain.xml.erb +34 -0
- data/lib/vagrant-libvirt/templates/interface.xml.erb +7 -0
- data/lib/vagrant-libvirt/templates/volume_snapshot.xml.erb +26 -0
- data/lib/vagrant-libvirt/util/collection.rb +22 -0
- data/lib/vagrant-libvirt/util/erb_template.rb +21 -0
- data/lib/vagrant-libvirt/util/timer.rb +17 -0
- data/lib/vagrant-libvirt/util.rb +10 -0
- data/lib/vagrant-libvirt/version.rb +5 -0
- data/lib/vagrant-libvirt.rb +30 -0
- data/locales/en.yml +103 -0
- data/vagrant-libvirt.gemspec +23 -0
- metadata +127 -0
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'vagrant'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module Libvirt
|
5
|
+
|
6
|
+
# This is the base class for a provider for the V2 API. A provider
|
7
|
+
# is responsible for creating compute resources to match the
|
8
|
+
# needs of a Vagrant-configured system.
|
9
|
+
class Provider < Vagrant.plugin('2', :provider)
|
10
|
+
def initialize(machine)
|
11
|
+
@machine = machine
|
12
|
+
end
|
13
|
+
|
14
|
+
# This should return an action callable for the given name.
|
15
|
+
def action(name)
|
16
|
+
# Attempt to get the action method from the Action class if it
|
17
|
+
# exists, otherwise return nil to show that we don't support the
|
18
|
+
# given action.
|
19
|
+
action_method = "action_#{name}"
|
20
|
+
return Action.send(action_method) if Action.respond_to?(action_method)
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
# This method is called if the underying machine ID changes. Providers
|
25
|
+
# can use this method to load in new data for the actual backing
|
26
|
+
# machine or to realize that the machine is now gone (the ID can
|
27
|
+
# become `nil`).
|
28
|
+
def machine_id_changed
|
29
|
+
end
|
30
|
+
|
31
|
+
# This should return a hash of information that explains how to
|
32
|
+
# SSH into the machine. If the machine is not at a point where
|
33
|
+
# SSH is even possible, then `nil` should be returned.
|
34
|
+
def ssh_info
|
35
|
+
# Run a custom action called "read_ssh_info" which does what it says
|
36
|
+
# and puts the resulting SSH info into the `:machine_ssh_info` key in
|
37
|
+
# the environment.
|
38
|
+
#
|
39
|
+
# Ssh info has following format..
|
40
|
+
#
|
41
|
+
#{
|
42
|
+
# :host => "1.2.3.4",
|
43
|
+
# :port => "22",
|
44
|
+
# :username => "mitchellh",
|
45
|
+
# :private_key_path => "/path/to/my/key"
|
46
|
+
#}
|
47
|
+
env = @machine.action("read_ssh_info")
|
48
|
+
env[:machine_ssh_info]
|
49
|
+
end
|
50
|
+
|
51
|
+
# This should return the state of the machine within this provider.
|
52
|
+
# The state must be an instance of {MachineState}.
|
53
|
+
def state
|
54
|
+
# Run a custom action we define called "read_state" which does
|
55
|
+
# what it says. It puts the state in the `:machine_state_id`
|
56
|
+
# key in the environment.
|
57
|
+
env = @machine.action("read_state")
|
58
|
+
|
59
|
+
state_id = env[:machine_state_id]
|
60
|
+
|
61
|
+
# Get the short and long description
|
62
|
+
short = I18n.t("vagrant_libvirt.states.short_#{state_id}")
|
63
|
+
long = I18n.t("vagrant_libvirt.states.long_#{state_id}")
|
64
|
+
|
65
|
+
# Return the MachineState object
|
66
|
+
Vagrant::MachineState.new(state_id, short, long)
|
67
|
+
end
|
68
|
+
|
69
|
+
def to_s
|
70
|
+
id = @machine.id.nil? ? "new" : @machine.id
|
71
|
+
"Libvirt (#{id})"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<domain type='<%= @domain_type %>'>
|
2
|
+
<name><%= @name %></name>
|
3
|
+
<memory><%= @memory_size %></memory>
|
4
|
+
<vcpu><%= @cpus %></vcpu>
|
5
|
+
<os>
|
6
|
+
<type arch='x86_64'>hvm</type>
|
7
|
+
<boot dev='hd'/>
|
8
|
+
</os>
|
9
|
+
<features>
|
10
|
+
<acpi/>
|
11
|
+
<apic/>
|
12
|
+
<pae/>
|
13
|
+
</features>
|
14
|
+
<clock offset='utc'/>
|
15
|
+
<devices>
|
16
|
+
<disk type='file' device='disk'>
|
17
|
+
<driver name='qemu' type='qcow2'/>
|
18
|
+
<source file='<%= @domain_volume_path %>'/>
|
19
|
+
<%# we need to ensure a unique target dev -%>
|
20
|
+
<target dev='vda' bus='virtio'/>
|
21
|
+
</disk>
|
22
|
+
<serial type='pty'>
|
23
|
+
<target port='0'/>
|
24
|
+
</serial>
|
25
|
+
<console type='pty'>
|
26
|
+
<target port='0'/>
|
27
|
+
</console>
|
28
|
+
<input type='mouse' bus='ps2'/>
|
29
|
+
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1' keymap='en-us'/>
|
30
|
+
<video>
|
31
|
+
<model type='cirrus' vram='9216' heads='1'/>
|
32
|
+
</video>
|
33
|
+
</devices>
|
34
|
+
</domain>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<volume>
|
2
|
+
<name><%= @name %></name>
|
3
|
+
<capacity unit="G"><%= @capacity %></capacity>
|
4
|
+
|
5
|
+
<target>
|
6
|
+
<format type='qcow2'/>
|
7
|
+
<permissions>
|
8
|
+
<owner>0</owner>
|
9
|
+
<group>0</group>
|
10
|
+
<mode>0600</mode>
|
11
|
+
<label>virt_image_t</label>
|
12
|
+
</permissions>
|
13
|
+
</target>
|
14
|
+
|
15
|
+
<backingStore>
|
16
|
+
<path><%= @backing_file %></path>
|
17
|
+
<format type='qcow2'/>
|
18
|
+
<permissions>
|
19
|
+
<owner>0</owner>
|
20
|
+
<group>0</group>
|
21
|
+
<mode>0600</mode>
|
22
|
+
<label>virt_image_t</label>
|
23
|
+
</permissions>
|
24
|
+
</backingStore>
|
25
|
+
</volume>
|
26
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Libvirt
|
3
|
+
module Util
|
4
|
+
module Collection
|
5
|
+
|
6
|
+
# This method finds a matching _thing_ in a collection of
|
7
|
+
# _things_. This works matching if the ID or NAME equals to
|
8
|
+
# `name`. Or, if `name` is a regexp, a partial match is chosen
|
9
|
+
# as well.
|
10
|
+
def self.find_matching(collection, name)
|
11
|
+
collection.each do |single|
|
12
|
+
return single if single.name == name
|
13
|
+
end
|
14
|
+
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module Libvirt
|
5
|
+
module Util
|
6
|
+
module ErbTemplate
|
7
|
+
|
8
|
+
# Taken from fog source.
|
9
|
+
def to_xml template_name = nil
|
10
|
+
erb = template_name || self.class.to_s.split("::").last.downcase
|
11
|
+
path = File.join(File.dirname(__FILE__), "..", "templates",
|
12
|
+
"#{erb}.xml.erb")
|
13
|
+
template = File.read(path)
|
14
|
+
ERB.new(template, nil, '-').result(binding)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Libvirt
|
3
|
+
module Util
|
4
|
+
class Timer
|
5
|
+
# A basic utility method that times the execution of the given
|
6
|
+
# block and returns it.
|
7
|
+
def self.time
|
8
|
+
start_time = Time.now.to_f
|
9
|
+
yield
|
10
|
+
end_time = Time.now.to_f
|
11
|
+
|
12
|
+
end_time - start_time
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'vagrant-libvirt/plugin'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module Libvirt
|
6
|
+
lib_path = Pathname.new(File.expand_path("../vagrant-libvirt", __FILE__))
|
7
|
+
autoload :Action, lib_path.join("action")
|
8
|
+
autoload :Errors, lib_path.join("errors")
|
9
|
+
autoload :Util, lib_path.join("util")
|
10
|
+
|
11
|
+
# Hold connection handler so there is no need to connect more times than
|
12
|
+
# one. This can be annoying when there are more machines to create, or when
|
13
|
+
# doing state action first and then some other.
|
14
|
+
#
|
15
|
+
# TODO Don't sure if this is the best solution
|
16
|
+
@@libvirt_connection = nil
|
17
|
+
def self.libvirt_connection
|
18
|
+
@@libvirt_connection
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.libvirt_connection=(conn)
|
22
|
+
@@libvirt_connection = conn
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.source_root
|
26
|
+
@source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
data/locales/en.yml
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
en:
|
2
|
+
vagrant_libvirt:
|
3
|
+
already_created: |-
|
4
|
+
The machine is already created.
|
5
|
+
not_created: |-
|
6
|
+
Machine is not created. Please run `vagrant up` first.
|
7
|
+
finding_volume: |-
|
8
|
+
Checking if volume is available.
|
9
|
+
creating_domain: |-
|
10
|
+
Creating machine with the following settings...
|
11
|
+
uploading_volume: |-
|
12
|
+
Uploading base box image as volume into libvirt storage...
|
13
|
+
creating_domain_volume: |-
|
14
|
+
Creating image (snapshot of base box volume).
|
15
|
+
removing_domain_volume: |-
|
16
|
+
Removing image (snapshot of base box volume).
|
17
|
+
starting_domain: |-
|
18
|
+
Starting machine.
|
19
|
+
terminating: |-
|
20
|
+
Removing machine...
|
21
|
+
poweroff_domain: |-
|
22
|
+
Poweroff machine.
|
23
|
+
destroy_domain: |-
|
24
|
+
Removing machine...
|
25
|
+
waiting_for_ready: |-
|
26
|
+
Waiting for machine to become "ready"...
|
27
|
+
waiting_for_ip: |-
|
28
|
+
Waiting for machine to get an IP address...
|
29
|
+
waiting_for_ssh: |-
|
30
|
+
Waiting for SSH to become available...
|
31
|
+
booted: |-
|
32
|
+
Machine is booted.
|
33
|
+
rsync_folder: |-
|
34
|
+
Rsyncing folder: %{hostpath} => %{guestpath}
|
35
|
+
ready: |-
|
36
|
+
Machine is booted and ready for use!
|
37
|
+
|
38
|
+
errors:
|
39
|
+
fog_error: |-
|
40
|
+
There was an error talking to Libvirt. The error message is shown
|
41
|
+
below:
|
42
|
+
|
43
|
+
%{message}
|
44
|
+
no_matching_volume: |-
|
45
|
+
No matching volume was found! Please check your volume setting
|
46
|
+
to make sure you have a valid volume chosen.
|
47
|
+
no_storage_pool: |-
|
48
|
+
No usable storage pool found! Please check if storage pool is
|
49
|
+
created and available.
|
50
|
+
no_box_volume: |-
|
51
|
+
Volume for box image is missing in storage pools. Try to run vagrant
|
52
|
+
again, or check if storage volume is accessible.
|
53
|
+
domain_volume_exists: |-
|
54
|
+
Volume for domain is already created. Please run 'vagrant destroy' first.
|
55
|
+
no_domain_volume: |-
|
56
|
+
Volume for domain is missing. Try to run 'vagrant up' again.
|
57
|
+
interface_slot_not_available: |-
|
58
|
+
Interface adapter number is already in use. Please specify other adapter
|
59
|
+
number.
|
60
|
+
rsync_error: |-
|
61
|
+
There was an error when attemping to rsync a share folder.
|
62
|
+
Please inspect the error message below for more info.
|
63
|
+
|
64
|
+
Host path: %{hostpath}
|
65
|
+
Guest path: %{guestpath}
|
66
|
+
Error: %{stderr}
|
67
|
+
no_box_virtual_size: |-
|
68
|
+
No image virtual size specified for box.
|
69
|
+
no_box_format: |-
|
70
|
+
No image format specified for box.
|
71
|
+
wrong_box_format: |-
|
72
|
+
Wrong image format specified for box.
|
73
|
+
fog_libvirt_connection_error: |-
|
74
|
+
Error while connecting to libvirt: %{error_message}
|
75
|
+
fog_create_volume_error: |-
|
76
|
+
Error while creating a storage pool volume: %{error_message}
|
77
|
+
fog_create_domain_volume_error: |-
|
78
|
+
Error while creating volume for domain: %{error_message}
|
79
|
+
fog_create_server_error: |-
|
80
|
+
Error while creating domain: %{error_message}
|
81
|
+
domain_name_exists: |-
|
82
|
+
Name of domain about to create is already taken. Please try to run
|
83
|
+
`vagrant up` command again.
|
84
|
+
creating_storage_pool_error: |-
|
85
|
+
There was error while creating libvirt storage pool: %{error_message}
|
86
|
+
image_upload_error: |-
|
87
|
+
Error while uploading image to storage pool: %{error_message}
|
88
|
+
no_domain_error: |-
|
89
|
+
No domain found. %{error_message}
|
90
|
+
attach_device_error: |-
|
91
|
+
Error while attaching new device to domain. %{error_message}
|
92
|
+
|
93
|
+
states:
|
94
|
+
short_not_created: |-
|
95
|
+
not created
|
96
|
+
long_not_created: |-
|
97
|
+
The Libvirt domain is not created. Run `vagrant up` to create it.
|
98
|
+
|
99
|
+
short_running: |-
|
100
|
+
running
|
101
|
+
long_running: |-
|
102
|
+
The Libvirt domain is running. To stop this machine, you can run
|
103
|
+
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/vagrant-libvirt/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Lukas Stanek"]
|
6
|
+
gem.email = ["ls@elostech.cz"]
|
7
|
+
gem.description = %q{Vagrant provider for libvirt.}
|
8
|
+
gem.summary = %q{Vagrant provider for libvirt.}
|
9
|
+
gem.homepage = "http://www.vagrantup.com"
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "vagrant-libvirt"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = VagrantPlugins::Libvirt::VERSION
|
17
|
+
|
18
|
+
gem.add_runtime_dependency "fog", "~> 1.10.0"
|
19
|
+
gem.add_runtime_dependency "ruby-libvirt", "~> 0.4.0"
|
20
|
+
|
21
|
+
gem.add_development_dependency "rake"
|
22
|
+
end
|
23
|
+
|
metadata
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vagrant-libvirt
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lukas Stanek
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-03-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: fog
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.10.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.10.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ruby-libvirt
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.4.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.4.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Vagrant provider for libvirt.
|
56
|
+
email:
|
57
|
+
- ls@elostech.cz
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- Gemfile
|
64
|
+
- LICENSE
|
65
|
+
- README.md
|
66
|
+
- Rakefile
|
67
|
+
- example_box/README.md
|
68
|
+
- example_box/Vagrantfile
|
69
|
+
- example_box/metadata.json
|
70
|
+
- lib/vagrant-libvirt.rb
|
71
|
+
- lib/vagrant-libvirt/action.rb
|
72
|
+
- lib/vagrant-libvirt/action/connect_libvirt.rb
|
73
|
+
- lib/vagrant-libvirt/action/create_domain.rb
|
74
|
+
- lib/vagrant-libvirt/action/create_domain_volume.rb
|
75
|
+
- lib/vagrant-libvirt/action/create_network_interfaces.rb
|
76
|
+
- lib/vagrant-libvirt/action/destroy_domain.rb
|
77
|
+
- lib/vagrant-libvirt/action/handle_box_image.rb
|
78
|
+
- lib/vagrant-libvirt/action/handle_storage_pool.rb
|
79
|
+
- lib/vagrant-libvirt/action/is_created.rb
|
80
|
+
- lib/vagrant-libvirt/action/message_already_created.rb
|
81
|
+
- lib/vagrant-libvirt/action/message_not_created.rb
|
82
|
+
- lib/vagrant-libvirt/action/read_ssh_info.rb
|
83
|
+
- lib/vagrant-libvirt/action/read_state.rb
|
84
|
+
- lib/vagrant-libvirt/action/set_name_of_domain.rb
|
85
|
+
- lib/vagrant-libvirt/action/start_domain.rb
|
86
|
+
- lib/vagrant-libvirt/action/sync_folders.rb
|
87
|
+
- lib/vagrant-libvirt/action/timed_provision.rb
|
88
|
+
- lib/vagrant-libvirt/action/wait_till_up.rb
|
89
|
+
- lib/vagrant-libvirt/config.rb
|
90
|
+
- lib/vagrant-libvirt/errors.rb
|
91
|
+
- lib/vagrant-libvirt/plugin.rb
|
92
|
+
- lib/vagrant-libvirt/provider.rb
|
93
|
+
- lib/vagrant-libvirt/templates/default_storage_pool.xml.erb
|
94
|
+
- lib/vagrant-libvirt/templates/domain.xml.erb
|
95
|
+
- lib/vagrant-libvirt/templates/interface.xml.erb
|
96
|
+
- lib/vagrant-libvirt/templates/volume_snapshot.xml.erb
|
97
|
+
- lib/vagrant-libvirt/util.rb
|
98
|
+
- lib/vagrant-libvirt/util/collection.rb
|
99
|
+
- lib/vagrant-libvirt/util/erb_template.rb
|
100
|
+
- lib/vagrant-libvirt/util/timer.rb
|
101
|
+
- lib/vagrant-libvirt/version.rb
|
102
|
+
- locales/en.yml
|
103
|
+
- vagrant-libvirt.gemspec
|
104
|
+
homepage: http://www.vagrantup.com
|
105
|
+
licenses: []
|
106
|
+
metadata: {}
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options: []
|
109
|
+
require_paths:
|
110
|
+
- lib
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubyforge_project:
|
123
|
+
rubygems_version: 2.0.3
|
124
|
+
signing_key:
|
125
|
+
specification_version: 4
|
126
|
+
summary: Vagrant provider for libvirt.
|
127
|
+
test_files: []
|