rbovirt 0.0.32 → 0.0.33

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7991aae185eb77ee7fbe2f7a371ec001e8467b32
4
- data.tar.gz: 9b07677921a2e7acab03aebe8cbcf5a990323a5e
3
+ metadata.gz: 56b1a09fa531efef2e54dd5c404ba08ce97a9c74
4
+ data.tar.gz: fa387d78d334b399cf9ddbb22396bb332f9ddf38
5
5
  SHA512:
6
- metadata.gz: f5b2f8246ad14e6bff574b11a9192fe55180fe5cea6a28377783296f6db6e9919873ff853f3a74fb2213cda72d93d3c57d21fd31621fdff2c36c0284cfb8f742
7
- data.tar.gz: afbca20bf62bd4e45f45734723cbd7ef84a50f85c24ed5c2360843d547a2ef99bea3de9b9146e91bf37369a78b463e55c090e2a2569463f722c53e765984ccd9
6
+ metadata.gz: 0e18435aa8392a306e9fab8e37896c6d1f352ec29997443e1ae5bdef29bb919c1fc2921687a718bf9527b0d3e99590f83c1f7a49363393b7c9d649e6b0de92b3
7
+ data.tar.gz: 5ca4da6f911d4eddb41b1f49343989abb0338c85cc77bcb08ed5b41465e158e8a7615fff99bd8277f785f35b8d745943fe67fd21f60cbcb823e8b530639d0ce5
@@ -0,0 +1,15 @@
1
+ module OVIRT
2
+ class Client
3
+ def disks(opts={})
4
+ path = "/disks" + search_url(opts)
5
+ http_get(path).xpath('/disks/disk').collect do |d|
6
+ OVIRT::Volume.new(self, d)
7
+ end
8
+ end
9
+
10
+ def disk(disk_id)
11
+ disk_xml = http_get("/disks/%s" % disk_id)
12
+ OVIRT::Volume.new(self, disk_xml.root)
13
+ end
14
+ end
15
+ end
data/lib/client/vm_api.rb CHANGED
@@ -30,7 +30,6 @@ module OVIRT
30
30
  raise BackendVersionUnsupportedException.new
31
31
  end
32
32
  end
33
-
34
33
  opts[:cluster_name] ||= clusters.first.name unless opts[:cluster]
35
34
  OVIRT::VM::new(self, http_post("/vms",OVIRT::VM.to_xml(opts)).root)
36
35
  end
@@ -92,6 +91,29 @@ module OVIRT
92
91
  http_put("/vms/%s/disks/%s" % [vm_id, vol_id], OVIRT::Volume.to_xml(opts))
93
92
  end
94
93
 
94
+ def volume_active?(vm_id, vol_id)
95
+ http_response = http_get("/vms/%s/disks/%s" % [vm_id, vol_id, http_headers])
96
+ http_response.xpath("/disk/active").first.text.upcase == "TRUE"
97
+ end
98
+
99
+ def activate_volume(vm_id, vol_id)
100
+ http_post("/vms/%s/disks/%s/activate" % [vm_id, vol_id], '<action/>') unless volume_active?(vm_id, vol_id)
101
+ end
102
+
103
+ def deactivate_volume(vm_id, vol_id)
104
+ http_post("/vms/%s/disks/%s/deactivate" % [vm_id, vol_id], '<action/>') if volume_active?(vm_id, vol_id)
105
+ end
106
+
107
+ def attach_volume(vm_id, vol_id, activate=true)
108
+ http_post("/vms/%s/disks" % vm_id, "<disk id='%s'/>" % vol_id)
109
+ activate_volume(vm_id, vol_id) if activate
110
+ end
111
+
112
+ def detach_volume(vm_id, vol_id)
113
+ deactivate_volume(vm_id, vol_id)
114
+ http_delete("/vms/%s/disks/%s" % [vm_id, vol_id], '<action><detach>true</detach></action>')
115
+ end
116
+
95
117
  def vm_action(id, action, opts={})
96
118
  xml_response = http_post("/vms/%s/%s" % [id, action],'<action/>', opts)
97
119
  return (xml_response/'action/status').first.text.strip.upcase=="COMPLETE"
data/lib/ovirt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OVIRT
2
- VERSION = "0.0.32"
2
+ VERSION = "0.0.33"
3
3
  end
data/lib/rbovirt.rb CHANGED
@@ -19,10 +19,12 @@ require "client/host_api"
19
19
  require "client/datacenter_api"
20
20
  require "client/storage_domain_api"
21
21
  require "client/quota_api"
22
+ require "client/disk_api"
22
23
 
23
24
  require "nokogiri"
24
25
  require "rest_client"
25
26
  require "restclient_ext/request"
27
+ require "restclient_ext/resource"
26
28
 
27
29
  module OVIRT
28
30
 
@@ -131,10 +133,11 @@ module OVIRT
131
133
  end
132
134
  end
133
135
 
134
- def http_delete(suburl)
136
+ def http_delete(suburl, body=nil, headers={})
135
137
  begin
136
- headers = {:accept => 'application/xml'}.merge(auth_header).merge(filter_header)
137
- res = rest_client(suburl).delete(headers)
138
+ headers = body ? http_headers(headers) :
139
+ {:accept => 'application/xml'}.merge(auth_header).merge(filter_header)
140
+ res = rest_client(suburl).delete(body, headers)
138
141
  puts "#{res}\n" if ENV['RBOVIRT_LOG_RESPONSE']
139
142
  Nokogiri::XML(res)
140
143
  rescue
@@ -0,0 +1,12 @@
1
+ module RestClient
2
+ class Resource
3
+ def delete(payload, additional_headers={}, &block)
4
+ headers = (options[:headers] || {}).merge(additional_headers)
5
+ Request.execute(options.merge(
6
+ :method => :delete,
7
+ :url => url,
8
+ :payload => payload,
9
+ :headers => headers), &(block || @block))
10
+ end
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbovirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.32
4
+ version: 0.0.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amos Benari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-14 00:00:00.000000000 Z
11
+ date: 2015-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -99,6 +99,7 @@ files:
99
99
  - Rakefile
100
100
  - lib/client/cluster_api.rb
101
101
  - lib/client/datacenter_api.rb
102
+ - lib/client/disk_api.rb
102
103
  - lib/client/host_api.rb
103
104
  - lib/client/quota_api.rb
104
105
  - lib/client/storage_domain_api.rb
@@ -119,6 +120,7 @@ files:
119
120
  - lib/ovirt/volume.rb
120
121
  - lib/rbovirt.rb
121
122
  - lib/restclient_ext/request.rb
123
+ - lib/restclient_ext/resource.rb
122
124
  - rbovirt.gemspec
123
125
  - spec/endpoint.yml.example
124
126
  - spec/integration/api_spec.rb