vagrant-ovirt 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +20 -0
- data/Gemfile +12 -0
- data/LICENSE +22 -0
- data/README.md +219 -0
- data/Rakefile +7 -0
- data/example_box/Vagrantfile +22 -0
- data/example_box/metadata.json +4 -0
- data/example_box/ovirt.box +0 -0
- data/lib/vagrant-ovirt/action/connect_ovirt.rb +84 -0
- data/lib/vagrant-ovirt/action/create_network_interfaces.rb +96 -0
- data/lib/vagrant-ovirt/action/create_vm.rb +114 -0
- data/lib/vagrant-ovirt/action/destroy_vm.rb +25 -0
- data/lib/vagrant-ovirt/action/is_created.rb +18 -0
- data/lib/vagrant-ovirt/action/message_already_created.rb +16 -0
- data/lib/vagrant-ovirt/action/message_not_created.rb +16 -0
- data/lib/vagrant-ovirt/action/read_ssh_info.rb +68 -0
- data/lib/vagrant-ovirt/action/read_state.rb +37 -0
- data/lib/vagrant-ovirt/action/set_name_of_domain.rb +31 -0
- data/lib/vagrant-ovirt/action/start_vm.rb +37 -0
- data/lib/vagrant-ovirt/action/sync_folders.rb +58 -0
- data/lib/vagrant-ovirt/action/timed_provision.rb +21 -0
- data/lib/vagrant-ovirt/action/wait_till_up.rb +108 -0
- data/lib/vagrant-ovirt/action.rb +89 -0
- data/lib/vagrant-ovirt/config.rb +57 -0
- data/lib/vagrant-ovirt/errors.rb +61 -0
- data/lib/vagrant-ovirt/plugin.rb +74 -0
- data/lib/vagrant-ovirt/provider.rb +76 -0
- data/lib/vagrant-ovirt/util/collection.rb +21 -0
- data/lib/vagrant-ovirt/util/timer.rb +17 -0
- data/lib/vagrant-ovirt/util.rb +9 -0
- data/lib/vagrant-ovirt/version.rb +6 -0
- data/lib/vagrant-ovirt.rb +47 -0
- data/locales/en.yml +82 -0
- data/tools/prepare_redhat_for_box.sh +138 -0
- data/vagrant-ovirt.gemspec +23 -0
- 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,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: []
|