ovirt 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.rspec +3 -0
- data/LICENSE.txt +13 -0
- data/README.md +35 -0
- data/lib/ovirt/api.rb +31 -0
- data/lib/ovirt/cdrom.rb +12 -0
- data/lib/ovirt/cluster.rb +27 -0
- data/lib/ovirt/data_center.rb +24 -0
- data/lib/ovirt/disk.rb +30 -0
- data/lib/ovirt/domain.rb +12 -0
- data/lib/ovirt/event.rb +492 -0
- data/lib/ovirt/event_monitor.rb +36 -0
- data/lib/ovirt/exception.rb +13 -0
- data/lib/ovirt/file.rb +13 -0
- data/lib/ovirt/group.rb +12 -0
- data/lib/ovirt/host.rb +44 -0
- data/lib/ovirt/host_nic.rb +38 -0
- data/lib/ovirt/inventory.rb +177 -0
- data/lib/ovirt/network.rb +16 -0
- data/lib/ovirt/nic.rb +31 -0
- data/lib/ovirt/object.rb +315 -0
- data/lib/ovirt/permission.rb +20 -0
- data/lib/ovirt/permit.rb +14 -0
- data/lib/ovirt/role.rb +13 -0
- data/lib/ovirt/service.rb +332 -0
- data/lib/ovirt/snapshot.rb +28 -0
- data/lib/ovirt/statistic.rb +37 -0
- data/lib/ovirt/storage.rb +14 -0
- data/lib/ovirt/storage_domain.rb +48 -0
- data/lib/ovirt/tag.rb +23 -0
- data/lib/ovirt/template.rb +185 -0
- data/lib/ovirt/user.rb +15 -0
- data/lib/ovirt/version.rb +3 -0
- data/lib/ovirt/vm.rb +327 -0
- data/lib/ovirt/vmpool.rb +14 -0
- data/lib/ovirt.rb +35 -0
- data/spec/event_spec.rb +26 -0
- data/spec/object_spec.rb +12 -0
- data/spec/service_spec.rb +30 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/template_spec.rb +141 -0
- data/spec/vm_spec.rb +189 -0
- metadata +224 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODE2N2E3Mzk0NmQwNWI0MmViZjZjNzhiMDIyNzFkNjhlMTcyMzdjNg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Y2Q3NGQzOGFkZTM2YTU4NjE0NmY4ZDU1YjljZGMwNWI5NmVjZDJkMA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NzU3MDYzYjBjNzNlYjc4YmM2MWUxMDEzOTI5ZmFjNmQyYzVkY2E5YTFiMTA2
|
10
|
+
NmZkNWExOWI5ZjVmNTBmMjZmMjg2YmQxMDJlNDMzNGI0MDBmN2I2NDFlMjlj
|
11
|
+
NTQ1MWNkMjgxZGVjZjg2MDQ1MDQ0YmEyZjYzYjdmNGQ1MjUyZjI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YWYxNDQzYjE5ODIwYjFkYjEyNWIyYzdhMzFlZGM1OGNiNjU4N2VkZjk1ZTVj
|
14
|
+
NzgzZTlmYWNhZTUzYTMxNWYwMGRmNjMzNzVmOTc4M2NjYjUxOTZhZjc3OWRj
|
15
|
+
OGEzN2QxYWZiYjk3Mzc0MDhmMDQ5OWQzNzA2YTkzNzk4YWNlNTE=
|
data/.rspec
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Copyright (c) 2014 Red Hat, Inc.
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Ovirt
|
2
|
+
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/ovirt.svg)](http://badge.fury.io/rb/ovirt)
|
4
|
+
[![Build Status](https://travis-ci.org/ManageIQ/ovirt.svg)](https://travis-ci.org/ManageIQ/ovirt)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/ManageIQ/ovirt.svg)](https://codeclimate.com/github/ManageIQ/ovirt)
|
6
|
+
[![Coverage Status](http://img.shields.io/coveralls/ManageIQ/ovirt.svg)](https://coveralls.io/r/ManageIQ/ovirt)
|
7
|
+
[![Dependency Status](https://gemnasium.com/ManageIQ/ovirt.svg)](https://gemnasium.com/ManageIQ/ovirt)
|
8
|
+
|
9
|
+
Ovirt provides a simple Object Oriented interface to the REST API of oVirt and RHEV-M servers.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
gem 'ovirt'
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
$ bundle
|
20
|
+
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install ovirt
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
See [examples](https://github.com/ManageIQ/ovirt/tree/master/examples) directory for usage examples.
|
28
|
+
|
29
|
+
## Contributing
|
30
|
+
|
31
|
+
1. Fork it
|
32
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
33
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
34
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
35
|
+
5. Create new Pull Request
|
data/lib/ovirt/api.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Ovirt
|
2
|
+
class Api < Object
|
3
|
+
|
4
|
+
def self.parse_xml(xml)
|
5
|
+
node, hash = xml_to_hash(xml)
|
6
|
+
|
7
|
+
parse_first_node(node, :product_info, hash,
|
8
|
+
:node => [:name, :vendor])
|
9
|
+
|
10
|
+
parse_first_node_with_hash(node, 'product_info/version', hash[:product_info][:version] = {},
|
11
|
+
:attribute => [:major, :minor, :build, :revision])
|
12
|
+
|
13
|
+
hash[:summary] = {}
|
14
|
+
[:vms, :hosts, :users, :storage_domains].each do |type|
|
15
|
+
parse_first_node_with_hash(node, "summary/#{type}", hash[:summary][type] = {},
|
16
|
+
:node_to_i => [:total, :active])
|
17
|
+
end
|
18
|
+
|
19
|
+
hash[:special_objects] = {}
|
20
|
+
node.xpath('special_objects/link').each do |link|
|
21
|
+
hash[:special_objects][link['rel'].to_sym] = link['href']
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
# There should not be any actions defined on the api
|
26
|
+
hash.delete(:actions) if hash[:actions].empty?
|
27
|
+
|
28
|
+
hash
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/ovirt/cdrom.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Ovirt
|
2
|
+
class Cluster < Object
|
3
|
+
|
4
|
+
self.top_level_strings = [:name, :description]
|
5
|
+
self.top_level_objects = [:data_center, :scheduling_policy]
|
6
|
+
|
7
|
+
def self.parse_xml(xml)
|
8
|
+
node, hash = xml_to_hash(xml)
|
9
|
+
|
10
|
+
parse_first_node(node, :cpu, hash, :attribute => [:id])
|
11
|
+
parse_first_node(node, :version, hash, :attribute_to_i => [:major, :minor])
|
12
|
+
parse_first_node(node, :error_handling, hash, :node => [:on_error])
|
13
|
+
|
14
|
+
hash[:memory_policy] = {}
|
15
|
+
parse_first_node_with_hash(node, 'memory_policy/overcommit', hash[:memory_policy][:overcommit] = {},
|
16
|
+
:attribute_to_f => [:percent])
|
17
|
+
parse_first_node_with_hash(node, 'memory_policy/transparent_hugepages', hash[:memory_policy][:transparent_hugepages] = {},
|
18
|
+
:node_to_bool => [:enabled])
|
19
|
+
|
20
|
+
hash
|
21
|
+
end
|
22
|
+
|
23
|
+
def find_network_by_name(network_name)
|
24
|
+
self.networks.detect { |n| n[:name] == network_name }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Ovirt
|
2
|
+
class DataCenter < Object
|
3
|
+
|
4
|
+
self.top_level_strings = [:name, :description, :storage_type, :storage_format]
|
5
|
+
|
6
|
+
def self.element_name
|
7
|
+
"data_center"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.parse_xml(xml)
|
11
|
+
node, hash = xml_to_hash(xml)
|
12
|
+
|
13
|
+
parse_first_node(node, :status, hash, :node => [:state])
|
14
|
+
parse_first_node(node, :version, hash, :attribute_to_i => [:major, :minor])
|
15
|
+
|
16
|
+
supported_versions_node = node.xpath('supported_versions').first
|
17
|
+
supported_versions = {}
|
18
|
+
supported_versions[:versions] = supported_versions_node.xpath('version').collect { |version_node| { :major => version_node['major'].to_i, :minor => version_node['minor'].to_i } }
|
19
|
+
hash[:supported_versions] = supported_versions
|
20
|
+
|
21
|
+
hash
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/ovirt/disk.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
module Ovirt
|
2
|
+
class Disk < Object
|
3
|
+
|
4
|
+
self.top_level_strings = [:name, :type, :interface, :format, :image_id]
|
5
|
+
self.top_level_booleans = [:sparse, :bootable, :wipe_after_delete, :propagate_errors]
|
6
|
+
self.top_level_integers = [:size, :provisioned_size, :actual_size]
|
7
|
+
self.top_level_objects = [:vm]
|
8
|
+
|
9
|
+
def self.parse_xml(xml)
|
10
|
+
node, hash = xml_to_hash(xml)
|
11
|
+
|
12
|
+
parse_first_node(node, :status, hash, :node => [:state])
|
13
|
+
hash[:storage_domains] = node.xpath('storage_domains/storage_domain').collect { |n| hash_from_id_and_href(n) }
|
14
|
+
|
15
|
+
if hash[:size].to_i.zero?
|
16
|
+
node.xpath('lun_storage/logical_unit/size').each do |size|
|
17
|
+
hash[:size] = size.text.to_i
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
hash
|
22
|
+
end
|
23
|
+
|
24
|
+
def attributes_for_new_disk
|
25
|
+
attrs = attributes.dup
|
26
|
+
attrs[:storage] = self[:storage_domains].first[:id]
|
27
|
+
attrs
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|