vagrant-ovirt 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.
Files changed (36) hide show
  1. data/.gitignore +20 -0
  2. data/Gemfile +12 -0
  3. data/LICENSE +22 -0
  4. data/README.md +219 -0
  5. data/Rakefile +7 -0
  6. data/example_box/Vagrantfile +22 -0
  7. data/example_box/metadata.json +4 -0
  8. data/example_box/ovirt.box +0 -0
  9. data/lib/vagrant-ovirt/action/connect_ovirt.rb +84 -0
  10. data/lib/vagrant-ovirt/action/create_network_interfaces.rb +96 -0
  11. data/lib/vagrant-ovirt/action/create_vm.rb +114 -0
  12. data/lib/vagrant-ovirt/action/destroy_vm.rb +25 -0
  13. data/lib/vagrant-ovirt/action/is_created.rb +18 -0
  14. data/lib/vagrant-ovirt/action/message_already_created.rb +16 -0
  15. data/lib/vagrant-ovirt/action/message_not_created.rb +16 -0
  16. data/lib/vagrant-ovirt/action/read_ssh_info.rb +68 -0
  17. data/lib/vagrant-ovirt/action/read_state.rb +37 -0
  18. data/lib/vagrant-ovirt/action/set_name_of_domain.rb +31 -0
  19. data/lib/vagrant-ovirt/action/start_vm.rb +37 -0
  20. data/lib/vagrant-ovirt/action/sync_folders.rb +58 -0
  21. data/lib/vagrant-ovirt/action/timed_provision.rb +21 -0
  22. data/lib/vagrant-ovirt/action/wait_till_up.rb +108 -0
  23. data/lib/vagrant-ovirt/action.rb +89 -0
  24. data/lib/vagrant-ovirt/config.rb +57 -0
  25. data/lib/vagrant-ovirt/errors.rb +61 -0
  26. data/lib/vagrant-ovirt/plugin.rb +74 -0
  27. data/lib/vagrant-ovirt/provider.rb +76 -0
  28. data/lib/vagrant-ovirt/util/collection.rb +21 -0
  29. data/lib/vagrant-ovirt/util/timer.rb +17 -0
  30. data/lib/vagrant-ovirt/util.rb +9 -0
  31. data/lib/vagrant-ovirt/version.rb +6 -0
  32. data/lib/vagrant-ovirt.rb +47 -0
  33. data/locales/en.yml +82 -0
  34. data/tools/prepare_redhat_for_box.sh +138 -0
  35. data/vagrant-ovirt.gemspec +23 -0
  36. metadata +128 -0
@@ -0,0 +1,76 @@
1
+ require 'vagrant'
2
+
3
+ module VagrantPlugins
4
+ module OVirtProvider
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_ovirt.states.short_#{state_id}")
63
+ long = I18n.t("vagrant_ovirt.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
+ "oVirt (#{id})"
72
+ end
73
+ end
74
+ end
75
+ end
76
+
@@ -0,0 +1,21 @@
1
+ module VagrantPlugins
2
+ module OVirtProvider
3
+ module Util
4
+ module Collection
5
+ # This method finds a matching _thing_ in a collection of
6
+ # _things_. This works matching if the ID or NAME equals to
7
+ # `name`. Or, if `name` is a regexp, a partial match is chosen
8
+ # as well.
9
+ def self.find_matching(collection, name)
10
+ collection.each do |single|
11
+ return single if single.name == name
12
+ return single if single.id == name
13
+ end
14
+
15
+ nil
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,17 @@
1
+ module VagrantPlugins
2
+ module OVirtProvider
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,9 @@
1
+ module VagrantPlugins
2
+ module OVirtProvider
3
+ module Util
4
+ autoload :Collection, 'vagrant-ovirt/util/collection'
5
+ autoload :Timer, 'vagrant-ovirt/util/timer'
6
+ end
7
+ end
8
+ end
9
+
@@ -0,0 +1,6 @@
1
+ module VagrantPlugins
2
+ module OVirtProvider
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
6
+
@@ -0,0 +1,47 @@
1
+ require 'pathname'
2
+ require 'vagrant-ovirt/plugin'
3
+
4
+ module VagrantPlugins
5
+ module OVirtProvider
6
+ lib_path = Pathname.new(File.expand_path("../vagrant-ovirt", __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
+ @@ovirt_connection = nil
17
+ @@ovirt_client = nil
18
+ def self.ovirt_connection
19
+ @@ovirt_connection
20
+ end
21
+
22
+ def self.ovirt_connection=(conn)
23
+ @@ovirt_connection = conn
24
+ end
25
+
26
+ def self.ovirt_client
27
+ @@ovirt_client
28
+ end
29
+
30
+ def self.ovirt_client=(conn)
31
+ @@ovirt_client = conn
32
+ end
33
+
34
+
35
+ def self.source_root
36
+ @source_root ||= Pathname.new(File.expand_path("../../", __FILE__))
37
+ end
38
+ end
39
+ end
40
+
41
+ # Set default provider with bash environment variable like this:
42
+ # export VAGRANT_DEFAULT_PROVIDER=ovirt
43
+ Vagrant::Environment.class_eval do
44
+ def default_provider
45
+ (ENV['VAGRANT_DEFAULT_PROVIDER'] || :virtualbox).to_sym
46
+ end
47
+ end
data/locales/en.yml ADDED
@@ -0,0 +1,82 @@
1
+ en:
2
+ vagrant_ovirt:
3
+ creating_vm: |-
4
+ Creating VM with the following settings...
5
+ destroy_vm: |-
6
+ Removing VM...
7
+ not_created: |-
8
+ VM is not created. Please run `vagrant up` first.
9
+ starting_vm: |-
10
+ Starting VM.
11
+ error_recovering: |-
12
+ An error occured. Recovering..
13
+ waiting_for_ip: |-
14
+ Waiting for VM to get an IP address...
15
+ waiting_for_ssh: |-
16
+ Waiting for SSH to become available...
17
+ rsync_folder: |-
18
+ Rsyncing folder: %{hostpath} => %{guestpath}
19
+ wait_for_ready_vm: |-
20
+ Waiting for VM to become "ready" to start...
21
+ already_created: |-
22
+ VM is already created.
23
+ ready: |-
24
+ Machine is booted and ready for use!
25
+
26
+ errors:
27
+ fog_ovirt_connection_error: |-
28
+ Error while connecting to oVirt: %{error_message}
29
+ no_datacenter_error: |-
30
+ No usable datacenter found! Please check if datacenter specified in
31
+ configuration is avaliable.
32
+ no_cluster_error: |-
33
+ No usable cluster found! Please check if cluster specified in
34
+ configuration is avaliable.
35
+ no_quota_error: |-
36
+ No usable quota found! Please check if quota specified in
37
+ configuration is avaliable.
38
+ no_template_error: |-
39
+ No template %{template_name} found!
40
+ fog_create_server_error: |-
41
+ Error while creating domain: %{error_message}
42
+ interface_slot_not_available: |-
43
+ Interface adapter number is already in use. Please specify other adapter
44
+ number.
45
+ add_interface_error: |-
46
+ Error while adding new interface to VM. %{error_message}
47
+ no_vm_error: |-
48
+ No VM %{vm_name} found.
49
+ no_network_error: |-
50
+ No network %{network_name} found.
51
+ start_vm_error: |-
52
+ Unable to start VM: %{error_message}
53
+ no_ip_address_error: |-
54
+ No IP address found.
55
+ rsync_error: |-
56
+ There was an error when attemping to rsync a share folder.
57
+ Please inspect the error message below for more info.
58
+
59
+ Host path: %{hostpath}
60
+ Guest path: %{guestpath}
61
+ Error: %{stderr}
62
+
63
+ states:
64
+ short_paused: |-
65
+ pause
66
+ short_shutoff: |-
67
+ shutoff
68
+ long_shutoff: |-
69
+ The oVirt machine is not running. Run `vagrant up` to start it.
70
+ short_down: |-
71
+ shutoff
72
+ long_down: |-
73
+ The oVirt machine is not running. Run `vagrant up` to start it.
74
+ short_not_created: |-
75
+ not created
76
+ long_not_created: |-
77
+ The oVirt domain is not created. Run `vagrant up` to create it.
78
+ short_running: |-
79
+ running
80
+ long_running: |-
81
+ The oVirt domain is running. To stop this machine, you can run
82
+ `vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
@@ -0,0 +1,138 @@
1
+ #!/bin/bash +x
2
+
3
+ # This script should help to prepare RedHat and RedHat like OS (CentOS,
4
+ # Scientific Linux, ...) for Vagrant usage.
5
+
6
+ # To create new box image, just install minimal base system in VM. Then upload
7
+ # this script to the VM and run it. After script has finished, halt the machine
8
+ # and then create an oVirt template, which will be used for creating new
9
+ # vagrant machines.
10
+
11
+
12
+ # We need a hostname.
13
+ if [ $# -ne 1 ]; then
14
+ echo "Usage: $0 <hostname>"
15
+ echo "Hostname should be in format vagrant-[os-name], e.g. vagrant-redhat63."
16
+ exit 1
17
+ fi
18
+
19
+
20
+ # On which version of RedHet are we running?
21
+ RHEL_MAJOR_VERSION=$(sed 's/.*release \([0-9]\)\..*/\1/' /etc/redhat-release)
22
+ if [ $? -ne 0 ]; then
23
+ echo "Is this a RedHat distro?"
24
+ exit 1
25
+ fi
26
+ echo "* Found RedHat ${RHEL_MAJOR_VERSION} version."
27
+
28
+
29
+ # Setup hostname vagrant-something.
30
+ FQDN="$1.vagrantup.com"
31
+ if grep '^HOSTNAME=' /etc/sysconfig/network > /dev/null; then
32
+ sed -i 's/HOSTNAME=\(.*\)/HOSTNAME='${FQDN}'/' /etc/sysconfig/network
33
+ else
34
+ echo "HOSTNAME=${FQDN}" >> /etc/sysconfig/network
35
+ fi
36
+
37
+
38
+ # Enable EPEL repository.
39
+ yum -y install wget
40
+ cd ~root
41
+ if [ $RHEL_MAJOR_VERSION -eq 5 ]; then
42
+ wget http://ftp.astral.ro/mirrors/fedora/pub/epel/5/i386/epel-release-5-4.noarch.rpm
43
+ EPEL_PKG="epel-release-5-4.noarch.rpm"
44
+ else
45
+ wget http://ftp.astral.ro/mirrors/fedora/pub/epel/6/i386/epel-release-6-8.noarch.rpm
46
+ EPEL_PKG="epel-release-6-8.noarch.rpm"
47
+ fi
48
+ rpm -i ~root/${EPEL_PKG}
49
+ rm -f ~root/${EPEL_PKG}
50
+
51
+
52
+ # Install some required software.
53
+ yum -y install openssh-server openssh-clients sudo \
54
+ ruby ruby-devel make gcc rubygems rsync nmap
55
+ chkconfig sshd on
56
+ gem install puppet
57
+ gem install chef
58
+
59
+
60
+ # Users, groups, passwords and sudoers.
61
+ echo 'vagrant' | passwd --stdin root
62
+ grep 'vagrant' /etc/passwd > /dev/null
63
+ if [ $? -ne 0 ]; then
64
+ echo '* Creating user vagrant.'
65
+ useradd vagrant
66
+ echo 'vagrant' | passwd --stdin vagrant
67
+ fi
68
+ grep '^admin:' /etc/group > /dev/null || groupadd admin
69
+ usermod -G admin vagrant
70
+
71
+ echo 'Defaults env_keep += "SSH_AUTH_SOCK"' >> /etc/sudoers
72
+ echo '%admin ALL=NOPASSWD: ALL' >> /etc/sudoers
73
+ sed -i 's/Defaults\s*requiretty/Defaults !requiretty/' /etc/sudoers
74
+
75
+
76
+ # SSH setup
77
+ # Add Vagrant ssh key for root accout.
78
+ sed -i 's/.*UseDNS.*/UseDNS no/' /etc/ssh/sshd_config
79
+
80
+ [ -d ~root/.ssh ] || mkdir ~root/.ssh
81
+ chmod 700 ~root/.ssh
82
+ cat > ~root/.ssh/authorized_keys << EOF
83
+ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
84
+ EOF
85
+ chmod 600 ~root/.ssh/authorized_keys
86
+
87
+
88
+ # Disable firewall and switch SELinux to permissive mode.
89
+ chkconfig iptables off
90
+ chkconfig ip6tables off
91
+ sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/sysconfig/selinux
92
+ sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
93
+
94
+
95
+ # Networking setup..
96
+
97
+ # Problem situation: Two interfaces are connected to same network. One interface
98
+ # wants to renew DHCP lease and asks server for address. DHCPACK message from
99
+ # server arrives, client moves to BOUND state. The client performs a check on
100
+ # the suggested address to ensure that the address is not already in use. On
101
+ # arping for specified IP address, other interface replies and that's why
102
+ # dhclient-script replies with DHCPDECLINE message. (See RFC2131, 4.4.1.).
103
+ # Solution: Set sysctl to reply only if the target IP address is local address
104
+ # configured on the incoming interface. (See kernel documentation
105
+ # Documentation/networking/ip-sysctl.txt)
106
+ set_sysctl()
107
+ {
108
+ grep $1 /etc/sysctl.conf > /dev/null
109
+ [ $? -eq 0 ] && sed -i '/'$1'/d' /etc/sysctl.conf
110
+ echo "$1 = $2" >> /etc/sysctl.conf
111
+ }
112
+ set_sysctl 'net.ipv4.conf.all.arp_ignore' 1
113
+ set_sysctl 'net.ipv4.conf.all.arp_announce' 2
114
+ set_sysctl 'net.ipv4.conf.all.rp_filter' 3
115
+
116
+ echo 'for NETWORK in $(ip a | grep -w inet | grep -v "127.0.0.1" | awk "{ print \$2 }"); do nmap -sP $NETWORK; done' > /etc/rc3.d/S99ping_broadcast
117
+ chmod +x /etc/rc3.d/S99ping_broadcast
118
+
119
+
120
+ # Don't fix ethX names to hw address.
121
+ rm -f /etc/udev/rules.d/*persistent-net.rules
122
+ rm -f /etc/udev/rules.d/*-net.rules
123
+ rm -fr /var/lib/dhclient/*
124
+
125
+ # Interface eth0 should get IP address via dhcp.
126
+ cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
127
+ DEVICE="eth0"
128
+ BOOTPROTO="dhcp"
129
+ ONBOOT="yes"
130
+ NM_CONTROLLED="no"
131
+ EOF
132
+
133
+
134
+ # Do some cleanup..
135
+ rm -f ~root/.bash_history
136
+ rm -r "$(gem env gemdir)"/doc/*
137
+ yum clean all
138
+
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/vagrant-ovirt/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 oVirt.}
8
+ gem.summary = %q{Vagrant provider for oVirt.}
9
+ gem.homepage = "https://github.com/pradels/vagrant-ovirt"
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-ovirt"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = VagrantPlugins::OVirtProvider::VERSION
17
+
18
+ gem.add_runtime_dependency "fog", "~> 1.10.1"
19
+ gem.add_runtime_dependency "rbovirt", "~> 0.0.19"
20
+
21
+ gem.add_development_dependency "rake"
22
+ end
23
+
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-ovirt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Lukas Stanek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-04-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: fog
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.10.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.10.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: rbovirt
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.0.19
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.0.19
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: Vagrant provider for oVirt.
63
+ email:
64
+ - ls@elostech.cz
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - Gemfile
71
+ - LICENSE
72
+ - README.md
73
+ - Rakefile
74
+ - example_box/Vagrantfile
75
+ - example_box/metadata.json
76
+ - example_box/ovirt.box
77
+ - lib/vagrant-ovirt.rb
78
+ - lib/vagrant-ovirt/action.rb
79
+ - lib/vagrant-ovirt/action/connect_ovirt.rb
80
+ - lib/vagrant-ovirt/action/create_network_interfaces.rb
81
+ - lib/vagrant-ovirt/action/create_vm.rb
82
+ - lib/vagrant-ovirt/action/destroy_vm.rb
83
+ - lib/vagrant-ovirt/action/is_created.rb
84
+ - lib/vagrant-ovirt/action/message_already_created.rb
85
+ - lib/vagrant-ovirt/action/message_not_created.rb
86
+ - lib/vagrant-ovirt/action/read_ssh_info.rb
87
+ - lib/vagrant-ovirt/action/read_state.rb
88
+ - lib/vagrant-ovirt/action/set_name_of_domain.rb
89
+ - lib/vagrant-ovirt/action/start_vm.rb
90
+ - lib/vagrant-ovirt/action/sync_folders.rb
91
+ - lib/vagrant-ovirt/action/timed_provision.rb
92
+ - lib/vagrant-ovirt/action/wait_till_up.rb
93
+ - lib/vagrant-ovirt/config.rb
94
+ - lib/vagrant-ovirt/errors.rb
95
+ - lib/vagrant-ovirt/plugin.rb
96
+ - lib/vagrant-ovirt/provider.rb
97
+ - lib/vagrant-ovirt/util.rb
98
+ - lib/vagrant-ovirt/util/collection.rb
99
+ - lib/vagrant-ovirt/util/timer.rb
100
+ - lib/vagrant-ovirt/version.rb
101
+ - locales/en.yml
102
+ - tools/prepare_redhat_for_box.sh
103
+ - vagrant-ovirt.gemspec
104
+ homepage: https://github.com/pradels/vagrant-ovirt
105
+ licenses: []
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 1.8.25
125
+ signing_key:
126
+ specification_version: 3
127
+ summary: Vagrant provider for oVirt.
128
+ test_files: []