fog-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 (111) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/CONTRIBUTING.md +18 -0
  4. data/CONTRIBUTORS.md +21 -0
  5. data/Gemfile +3 -0
  6. data/LICENSE.md +20 -0
  7. data/README.md +47 -0
  8. data/Rakefile +15 -0
  9. data/fog-ovirt.gemspec +32 -0
  10. data/lib/fog/bin/ovirt.rb +28 -0
  11. data/lib/fog/ovirt/compute.rb +155 -0
  12. data/lib/fog/ovirt/core.rb +16 -0
  13. data/lib/fog/ovirt/models/compute/affinity_group.rb +25 -0
  14. data/lib/fog/ovirt/models/compute/affinity_groups.rb +20 -0
  15. data/lib/fog/ovirt/models/compute/cluster.rb +20 -0
  16. data/lib/fog/ovirt/models/compute/clusters.rb +20 -0
  17. data/lib/fog/ovirt/models/compute/instance_type.rb +39 -0
  18. data/lib/fog/ovirt/models/compute/instance_types.rb +20 -0
  19. data/lib/fog/ovirt/models/compute/interface.rb +19 -0
  20. data/lib/fog/ovirt/models/compute/interfaces.rb +29 -0
  21. data/lib/fog/ovirt/models/compute/quota.rb +16 -0
  22. data/lib/fog/ovirt/models/compute/quotas.rb +20 -0
  23. data/lib/fog/ovirt/models/compute/server.rb +175 -0
  24. data/lib/fog/ovirt/models/compute/servers.rb +27 -0
  25. data/lib/fog/ovirt/models/compute/template.rb +58 -0
  26. data/lib/fog/ovirt/models/compute/templates.rb +20 -0
  27. data/lib/fog/ovirt/models/compute/volume.rb +36 -0
  28. data/lib/fog/ovirt/models/compute/volumes.rb +28 -0
  29. data/lib/fog/ovirt/requests/compute/activate_volume.rb +22 -0
  30. data/lib/fog/ovirt/requests/compute/add_interface.rb +20 -0
  31. data/lib/fog/ovirt/requests/compute/add_to_affinity_group.rb +21 -0
  32. data/lib/fog/ovirt/requests/compute/add_volume.rb +21 -0
  33. data/lib/fog/ovirt/requests/compute/attach_volume.rb +22 -0
  34. data/lib/fog/ovirt/requests/compute/create_affinity_group.rb +18 -0
  35. data/lib/fog/ovirt/requests/compute/create_vm.rb +18 -0
  36. data/lib/fog/ovirt/requests/compute/datacenters.rb +20 -0
  37. data/lib/fog/ovirt/requests/compute/deactivate_volume.rb +22 -0
  38. data/lib/fog/ovirt/requests/compute/destroy_affinity_group.rb +19 -0
  39. data/lib/fog/ovirt/requests/compute/destroy_interface.rb +22 -0
  40. data/lib/fog/ovirt/requests/compute/destroy_vm.rb +19 -0
  41. data/lib/fog/ovirt/requests/compute/destroy_volume.rb +22 -0
  42. data/lib/fog/ovirt/requests/compute/detach_volume.rb +22 -0
  43. data/lib/fog/ovirt/requests/compute/get_affinity_group.rb +18 -0
  44. data/lib/fog/ovirt/requests/compute/get_api_version.rb +16 -0
  45. data/lib/fog/ovirt/requests/compute/get_cluster.rb +17 -0
  46. data/lib/fog/ovirt/requests/compute/get_instance_type.rb +17 -0
  47. data/lib/fog/ovirt/requests/compute/get_quota.rb +17 -0
  48. data/lib/fog/ovirt/requests/compute/get_template.rb +17 -0
  49. data/lib/fog/ovirt/requests/compute/get_virtual_machine.rb +17 -0
  50. data/lib/fog/ovirt/requests/compute/list_affinity_group_vms.rb +22 -0
  51. data/lib/fog/ovirt/requests/compute/list_affinity_groups.rb +20 -0
  52. data/lib/fog/ovirt/requests/compute/list_clusters.rb +19 -0
  53. data/lib/fog/ovirt/requests/compute/list_instance_types.rb +19 -0
  54. data/lib/fog/ovirt/requests/compute/list_networks.rb +16 -0
  55. data/lib/fog/ovirt/requests/compute/list_quotas.rb +19 -0
  56. data/lib/fog/ovirt/requests/compute/list_template_interfaces.rb +19 -0
  57. data/lib/fog/ovirt/requests/compute/list_template_volumes.rb +19 -0
  58. data/lib/fog/ovirt/requests/compute/list_templates.rb +19 -0
  59. data/lib/fog/ovirt/requests/compute/list_virtual_machines.rb +19 -0
  60. data/lib/fog/ovirt/requests/compute/list_vm_interfaces.rb +19 -0
  61. data/lib/fog/ovirt/requests/compute/list_vm_volumes.rb +19 -0
  62. data/lib/fog/ovirt/requests/compute/list_volumes.rb +19 -0
  63. data/lib/fog/ovirt/requests/compute/mock_files/affinitygroup.xml +8 -0
  64. data/lib/fog/ovirt/requests/compute/mock_files/affinitygroup_vms.xml +9 -0
  65. data/lib/fog/ovirt/requests/compute/mock_files/affinitygroups.xml +17 -0
  66. data/lib/fog/ovirt/requests/compute/mock_files/cluster.xml +20 -0
  67. data/lib/fog/ovirt/requests/compute/mock_files/clusters.xml +39 -0
  68. data/lib/fog/ovirt/requests/compute/mock_files/data_centers.xml +17 -0
  69. data/lib/fog/ovirt/requests/compute/mock_files/disks.xml +58 -0
  70. data/lib/fog/ovirt/requests/compute/mock_files/instance_type.xml +42 -0
  71. data/lib/fog/ovirt/requests/compute/mock_files/instance_types.xml +197 -0
  72. data/lib/fog/ovirt/requests/compute/mock_files/nics.xml +10 -0
  73. data/lib/fog/ovirt/requests/compute/mock_files/quotas.xml +7 -0
  74. data/lib/fog/ovirt/requests/compute/mock_files/storage_domains.xml +36 -0
  75. data/lib/fog/ovirt/requests/compute/mock_files/template.xml +39 -0
  76. data/lib/fog/ovirt/requests/compute/mock_files/templates.xml +110 -0
  77. data/lib/fog/ovirt/requests/compute/mock_files/vm.xml +52 -0
  78. data/lib/fog/ovirt/requests/compute/mock_files/vms.xml +152 -0
  79. data/lib/fog/ovirt/requests/compute/mock_files/volumes.xml +40 -0
  80. data/lib/fog/ovirt/requests/compute/remove_from_affinity_group.rb +21 -0
  81. data/lib/fog/ovirt/requests/compute/storage_domains.rb +20 -0
  82. data/lib/fog/ovirt/requests/compute/update_interface.rb +35 -0
  83. data/lib/fog/ovirt/requests/compute/update_vm.rb +18 -0
  84. data/lib/fog/ovirt/requests/compute/update_volume.rb +39 -0
  85. data/lib/fog/ovirt/requests/compute/vm_action.rb +22 -0
  86. data/lib/fog/ovirt/requests/compute/vm_start_with_cloudinit.rb +19 -0
  87. data/lib/fog/ovirt/requests/compute/vm_ticket.rb +17 -0
  88. data/lib/fog/ovirt/version.rb +5 -0
  89. data/lib/fog/ovirt.rb +1 -0
  90. data/spec/fog/bin/ovirt_spec.rb +10 -0
  91. data/spec/fog/bin_spec.rb +32 -0
  92. data/tests/helper.rb +1 -0
  93. data/tests/helpers/mock_helper.rb +16 -0
  94. data/tests/helpers/succeeds_helper.rb +9 -0
  95. data/tests/ovirt/compute_tests.rb +25 -0
  96. data/tests/ovirt/models/compute/cluster_tests.rb +31 -0
  97. data/tests/ovirt/models/compute/clusters_tests.rb +9 -0
  98. data/tests/ovirt/models/compute/interface_tests.rb +27 -0
  99. data/tests/ovirt/models/compute/interfaces_tests.rb +9 -0
  100. data/tests/ovirt/models/compute/server_tests.rb +51 -0
  101. data/tests/ovirt/models/compute/servers_tests.rb +14 -0
  102. data/tests/ovirt/models/compute/template_tests.rb +28 -0
  103. data/tests/ovirt/models/compute/templates_tests.rb +9 -0
  104. data/tests/ovirt/requests/compute/create_vm_tests.rb +26 -0
  105. data/tests/ovirt/requests/compute/destroy_vm_tests.rb +18 -0
  106. data/tests/ovirt/requests/compute/list_datacenters_tests.rb +13 -0
  107. data/tests/ovirt/requests/compute/list_quotas_tests.rb +12 -0
  108. data/tests/ovirt/requests/compute/list_storage_domains_tests.rb +13 -0
  109. data/tests/ovirt/requests/compute/update_vm_tests.rb +18 -0
  110. data/tests/ovirt/requests/compute/update_volume_tests.rb +20 -0
  111. metadata +298 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bc52a94f5d8a1853ec82917020fb19675199d879
4
+ data.tar.gz: 7db52539a92ec7434d74b55dd3bca1cc2836d506
5
+ SHA512:
6
+ metadata.gz: e15a97d9edaab2e3faa45b6ce593af20be206b0e826bb658166d9a089436e6d68d24a6b1ad1305c86f247b53153b5c341dcba164ec619735a88fe337cada518a
7
+ data.tar.gz: b94bfcb40da72705457decf083c852d13e6b13421cf2e3a324cb067ef11cd23f2da59f265900767c413166a1b08166046bb4be1c501d327adfa2d01c69ec9275
data/.gitignore ADDED
@@ -0,0 +1,30 @@
1
+ *~
2
+ *.gem
3
+ *.rbc
4
+ *.sw?
5
+ .rbenv
6
+ .rvmrc
7
+ .ruby-gemset
8
+ .ruby-version
9
+ .bundle
10
+ .DS_Store
11
+ .idea
12
+ .yardoc
13
+ /tests/.fog
14
+ bin/*
15
+ !bin/fog
16
+ .fog
17
+ coverage
18
+ doc/*
19
+ docs/_site/*
20
+ docs/about/supported_services.markdown
21
+ Gemfile.lock
22
+ gemfiles/*.lock
23
+ yardoc
24
+ pkg
25
+ spec/credentials.yml
26
+ vendor/*
27
+ tags
28
+ tests/digitalocean/fixtures/
29
+
30
+ providers/*/doc
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,18 @@
1
+ ## Getting Involved
2
+
3
+ New contributors are always welcome, when it doubt please ask questions. We strive to be an open and welcoming community. Please be nice to one another.
4
+
5
+ ### Coding
6
+
7
+ * Pick a task:
8
+ * Offer feedback on open [pull requests](https://github.com/fog/fog-ovirt/pulls).
9
+ * Review open [issues](https://github.com/fog/fog-ovirt/issues) for things to help on.
10
+ * [Create an issue](https://github.com/fog/fog-ovirt/issues/new) to start a discussion on additions or features.
11
+ * Fork the project, add your changes and tests to cover them in a topic branch.
12
+ * Commit your changes and rebase against `fog/fog-ovirt` to ensure everything is up to date.
13
+ * [Submit a pull request](https://github.com/fog/fog-ovirt/compare/)
14
+
15
+ ### Non-Coding
16
+
17
+ * Offer feedback on open [issues](https://github.com/fog/fog-ovirt/issues).
18
+ * Organize or volunteer at events.
data/CONTRIBUTORS.md ADDED
@@ -0,0 +1,21 @@
1
+ * Amos Benari <abenari@redhat.com>
2
+ * Baptiste Agasse <baptiste.agasse@lyra-network.com>
3
+ * Bert Hajee <hajee@moretIA.com>
4
+ * Dan Peterson <dpiddy@gmail.com>
5
+ * Erik van Pienbroek <erik.vanpienbroek@prorail.nl>
6
+ * Evan J. Felix <evan.felix@pnnl.gov>
7
+ * Ilja Bobkevic <ilja.bobkevic@unibet.com>
8
+ * Ivan Nečas <inecas@redhat.com>
9
+ * James Herdman <james.herdman@me.com>
10
+ * Jason Montleon <jmontleo@redhat.com>
11
+ * Jesse Hallett <jesse@galois.com>
12
+ * karmab <karimboumedhel@gmail.com>
13
+ * Lance Ivy <lance@cainlevy.net>
14
+ * Matt Darby <matt.darby@rackspace.com>
15
+ * Ohad Levy <ohadlevy@redhat.com>
16
+ * Paul Thornthwaite <paul@brightbox.co.uk>
17
+ * Paul Thornthwaite <tokengeek@gmail.com>
18
+ * Pavol Dilung <pavol.dilung@gmail.com>
19
+ * Tom Caspy <tcaspy@gmail.com>
20
+ * Ori Rabin <orabin@redhat.com>
21
+ * Wesley Beary <geemus@gmail.com>
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2009-2016 [CONTRIBUTORS.md](CONTRIBUTORS.md)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Fog::Ovirt
2
+
3
+ fog-ovirt is an ovirt provider for [fog](https://github.com/fog/fog).
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'fog-ovirt'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install fog-ovirt
20
+
21
+ ## Usage
22
+
23
+ Require the gem:
24
+ ```ruby
25
+ require 'fog/ovirt'
26
+ ```
27
+
28
+ Connect to ovirt instance:
29
+ ```ruby
30
+
31
+ compute = Fog::Compute.new(
32
+ :provider => "ovirt",
33
+ :ovirt_username => user,
34
+ :ovirt_password => password,
35
+ :ovirt_url => url,
36
+ :ovirt_datacenter => uuid,
37
+ :ovirt_ca_cert_store => ca_cert_store
38
+ )
39
+ ```
40
+
41
+ ## Contributing
42
+
43
+ Please refer to [CONTRIBUTING.md](CONTRIBUTING.md).
44
+
45
+ ## License
46
+
47
+ Please refer to [LICENSE.md](LICENSE.md).
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'bundler/gem_tasks'
2
+ # require 'rake/testtask'
3
+
4
+ # Rake::TestTask.new do |t|
5
+ # t.libs << 'spec/'
6
+ # t.test_files = Rake::FileList['spec/**/*_spec.rb']
7
+ # t.verbose = true
8
+ # end
9
+
10
+ mock = ENV['FOG_MOCK'] || 'true'
11
+ task :test do
12
+ sh("export FOG_MOCK=#{mock} && bundle exec shindont tests/ovirt")
13
+ end
14
+
15
+ task(:default => [:test])
data/fog-ovirt.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fog/ovirt/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'fog-ovirt'
8
+ spec.version = Fog::Ovirt::VERSION
9
+ spec.authors = ['Ori Rabin']
10
+ spec.email = ['orabin@redhat.com']
11
+
12
+ spec.summary = "Module for the 'fog' gem to support Ovirt."
13
+ spec.description = 'This library can be used as a module for `fog`.'
14
+ spec.homepage = 'https://github.com/fog/fog-ovirt'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.test_files = spec.files.grep(%r{^tests\/})
19
+
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_dependency("fog-core", "~> 1.45")
23
+ spec.add_dependency("fog-json")
24
+ spec.add_dependency("fog-xml", "~> 0.1.1")
25
+
26
+ spec.add_development_dependency 'bundler', '~> 1.10'
27
+ spec.add_development_dependency 'pry', '~> 0.10'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'rubocop', '~> 0.34'
30
+ spec.add_development_dependency 'shindo', '~> 0.3'
31
+ spec.add_development_dependency("rbovirt", "0.1.3")
32
+ end
@@ -0,0 +1,28 @@
1
+ class Ovirt < Fog::Bin
2
+ class << self
3
+ def class_for(key)
4
+ case key
5
+ when :compute
6
+ Fog::Compute::Ovirt
7
+ else
8
+ raise ArgumentError, "Unrecognized service: #{key}"
9
+ end
10
+ end
11
+
12
+ def [](service)
13
+ @@connections ||= Hash.new do |hash, key|
14
+ hash[key] = case key
15
+ when :compute
16
+ Fog::Compute.new(:provider => 'Ovirt')
17
+ else
18
+ raise ArgumentError, "Unrecognized service: #{key.inspect}"
19
+ end
20
+ end
21
+ @@connections[service]
22
+ end
23
+
24
+ def services
25
+ Fog::Ovirt.services
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,155 @@
1
+ require 'fog/ovirt/core'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Ovirt < Fog::Service
6
+ requires :ovirt_username, :ovirt_password
7
+ recognizes :ovirt_url, :ovirt_server, :ovirt_port, :ovirt_api_path, :ovirt_datacenter,
8
+ :ovirt_filtered_api,
9
+ :ovirt_ca_cert_store, :ovirt_ca_cert_file, :ovirt_ca_no_verify
10
+
11
+ model_path 'fog/ovirt/models/compute'
12
+ model :server
13
+ collection :servers
14
+ model :template
15
+ collection :templates
16
+ model :instance_type
17
+ collection :instance_types
18
+ model :cluster
19
+ collection :clusters
20
+ model :interface
21
+ collection :interfaces
22
+ model :volume
23
+ collection :volumes
24
+ model :quota
25
+ collection :quotas
26
+ model :affinity_group
27
+ collection :affinity_groups
28
+
29
+ request_path 'fog/ovirt/requests/compute'
30
+
31
+ request :vm_action
32
+ request :vm_start_with_cloudinit
33
+ request :destroy_vm
34
+ request :create_vm
35
+ request :update_vm
36
+ request :datacenters
37
+ request :storage_domains
38
+ request :list_virtual_machines
39
+ request :get_virtual_machine
40
+ request :list_templates
41
+ request :get_template
42
+ request :list_instance_types
43
+ request :get_instance_type
44
+ request :list_clusters
45
+ request :get_cluster
46
+ request :add_interface
47
+ request :destroy_interface
48
+ request :update_interface
49
+ request :list_vm_interfaces
50
+ request :list_template_interfaces
51
+ request :list_networks
52
+ request :vm_ticket
53
+ request :list_vm_volumes
54
+ request :list_template_volumes
55
+ request :list_volumes
56
+ request :add_volume
57
+ request :destroy_volume
58
+ request :update_volume
59
+ request :attach_volume
60
+ request :detach_volume
61
+ request :activate_volume
62
+ request :deactivate_volume
63
+ request :get_api_version
64
+ request :list_quotas
65
+ request :get_quota
66
+ request :list_affinity_groups
67
+ request :get_affinity_group
68
+ request :list_affinity_group_vms
69
+ request :create_affinity_group
70
+ request :destroy_affinity_group
71
+ request :add_to_affinity_group
72
+ request :remove_from_affinity_group
73
+
74
+ module Shared
75
+ # converts an OVIRT object into an hash for fog to consume.
76
+ def ovirt_attrs obj
77
+ opts = {:raw => obj}
78
+ obj.instance_variables.each do |v|
79
+ key = v.to_s.gsub("@","").to_sym
80
+ value = obj.instance_variable_get(v)
81
+ #ignore nil values
82
+ next if value.nil?
83
+
84
+ opts[key] = case value
85
+ when OVIRT::Link
86
+ value.id
87
+ when OVIRT::TemplateVersion
88
+ value
89
+ when Array
90
+ value
91
+ when Hash
92
+ value
93
+ else
94
+ value.to_s.strip
95
+ end
96
+ end
97
+ opts
98
+ end
99
+ end
100
+
101
+ class Mock
102
+ include Shared
103
+
104
+ def initialize(options={})
105
+ require 'rbovirt'
106
+ end
107
+
108
+ private
109
+
110
+ def client
111
+ return @client if defined?(@client)
112
+ end
113
+
114
+ #read mocks xml
115
+ def read_xml(file_name)
116
+ file_path = File.join(File.dirname(__FILE__),"requests","compute","mock_files",file_name)
117
+ File.read(file_path)
118
+ end
119
+ end
120
+
121
+ class Real
122
+ include Shared
123
+
124
+ def initialize(options={})
125
+ require 'rbovirt'
126
+ username = options[:ovirt_username]
127
+ password = options[:ovirt_password]
128
+ server = options[:ovirt_server]
129
+ port = options[:ovirt_port] || 8080
130
+ api_path = options[:ovirt_api_path] || '/api'
131
+ url = options[:ovirt_url] || "#{@scheme}://#{server}:#{port}#{api_path}"
132
+
133
+ connection_opts = {}
134
+ connection_opts[:datacenter_id] = options[:ovirt_datacenter]
135
+ connection_opts[:ca_cert_store] = options[:ovirt_ca_cert_store]
136
+ connection_opts[:ca_cert_file] = options[:ovirt_ca_cert_file]
137
+ connection_opts[:ca_no_verify] = options[:ovirt_ca_no_verify]
138
+ connection_opts[:filtered_api] = options[:ovirt_filtered_api]
139
+
140
+ @client = OVIRT::Client.new(username, password, url, connection_opts)
141
+ end
142
+
143
+ def api_version
144
+ client.api_version
145
+ end
146
+
147
+ private
148
+
149
+ def client
150
+ @client
151
+ end
152
+ end
153
+ end
154
+ end
155
+ end
@@ -0,0 +1,16 @@
1
+ require 'fog/core'
2
+ require 'fog/xml'
3
+
4
+ module Fog
5
+ module Ovirt
6
+ extend Fog::Provider
7
+
8
+ module Errors
9
+ class ServiceError < Fog::Errors::Error; end
10
+ class SecurityError < ServiceError; end
11
+ class NotFound < ServiceError; end
12
+ end
13
+
14
+ service(:compute, 'Compute')
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class AffinityGroup < Fog::Model
5
+ identity :id
6
+
7
+ attribute :name
8
+ attribute :positive
9
+ attribute :enforcing
10
+
11
+ def vms
12
+ id.nil? ? [] : service.list_affinity_group_vms(id)
13
+ end
14
+
15
+ def destroy
16
+ service.destroy_affinity_group(id)
17
+ end
18
+
19
+ def to_s
20
+ name
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/affinity_group'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class AffinityGroups < Fog::Collection
8
+ model Fog::Compute::Ovirt::AffinityGroup
9
+
10
+ def all(filters = {})
11
+ load service.list_affinity_groups(filters)
12
+ end
13
+
14
+ def get(id)
15
+ new service.get_affinity_group(id)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Cluster < Fog::Model
5
+ identity :id
6
+
7
+ attribute :name
8
+ attribute :raw
9
+
10
+ def networks
11
+ service.list_networks(id)
12
+ end
13
+
14
+ def to_s
15
+ name
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/cluster'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class Clusters < Fog::Collection
8
+ model Fog::Compute::Ovirt::Cluster
9
+
10
+ def all(filters = {})
11
+ load service.list_clusters(filters)
12
+ end
13
+
14
+ def get(id)
15
+ new service.get_cluster(id)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class InstanceType < Fog::Model
5
+ identity :id
6
+
7
+ attr_accessor :raw
8
+
9
+ attribute :name
10
+ attribute :description
11
+ attribute :memory
12
+ attribute :cores
13
+ attribute :creation_time
14
+ attribute :os
15
+ attribute :ha
16
+ attribute :ha_priority
17
+ attribute :display
18
+ attribute :usb
19
+ attribute :migration_downtime
20
+ attribute :type
21
+ attribute :status
22
+ attribute :cpu_shares
23
+ attribute :boot_menu
24
+ attribute :origin
25
+ attribute :stateless
26
+ attribute :delete_protected
27
+ attribute :sso
28
+ attribute :timezone
29
+ attribute :migration
30
+ attribute :io_threads
31
+ attribute :memory_garanteed
32
+
33
+ def to_s
34
+ name
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/instance_type'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class InstanceTypes < Fog::Collection
8
+ model Fog::Compute::Ovirt::InstanceType
9
+
10
+ def all(filters = {})
11
+ load service.list_instance_types(filters)
12
+ end
13
+
14
+ def get(id)
15
+ new service.get_instance_type(id)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Interface < Fog::Model
5
+ attr_accessor :raw
6
+ identity :id
7
+
8
+ attribute :name
9
+ attribute :network
10
+ attribute :interface
11
+ attribute :mac
12
+
13
+ def to_s
14
+ name
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/interface'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class Interfaces < Fog::Collection
8
+ model Fog::Compute::Ovirt::Interface
9
+
10
+ attr_accessor :vm
11
+
12
+ def all(filters = {})
13
+ requires :vm
14
+ if vm.is_a? Fog::Compute::Ovirt::Server
15
+ load service.list_vm_interfaces(vm.id)
16
+ elsif vm.is_a? Fog::Compute::Ovirt::Template
17
+ load service.list_template_interfaces(vm.id)
18
+ else
19
+ raise 'interfaces should have vm or template'
20
+ end
21
+ end
22
+
23
+ def get(id)
24
+ new service.get_interface(id)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ module Fog
2
+ module Compute
3
+ class Ovirt
4
+ class Quota < Fog::Model
5
+ identity :id
6
+
7
+ attribute :name
8
+ attribute :description
9
+
10
+ def to_s
11
+ name
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/ovirt/models/compute/quota'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Ovirt
7
+ class Quotas < Fog::Collection
8
+ model Fog::Compute::Ovirt::Quota
9
+
10
+ def all(filters = {})
11
+ load service.list_quotas(filters)
12
+ end
13
+
14
+ def get(id)
15
+ new service.get_quota(id)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end