webee 0.3.4 → 0.3.5
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.
- data/examples/test.rb +3 -17
- data/lib/webee.rb +77 -3
- metadata +4 -4
data/examples/test.rb
CHANGED
@@ -5,25 +5,11 @@ require 'active_support'
|
|
5
5
|
|
6
6
|
WeBee::Api.user = ENV['user'] || 'admin'
|
7
7
|
WeBee::Api.password = ENV['pass'] || 'xabiquo'
|
8
|
-
WeBee::Api.url = 'http://
|
8
|
+
WeBee::Api.url = 'http://mothership/api'
|
9
9
|
|
10
10
|
include WeBee
|
11
11
|
|
12
12
|
dc = Datacenter.all.first
|
13
|
-
|
14
|
-
puts
|
15
|
-
rack = dc.racks.first
|
16
|
-
|
17
|
-
#machine = dc.discover_machine :ip => '10.60.1.24', :hypervisortype => 'kvm'
|
18
|
-
# Use the first virtual switch we find
|
19
|
-
#machine.virtual_switch = machine.virtual_switches.first
|
20
|
-
# Enable the first datastore found
|
21
|
-
#machine.datastores.first.enabled = true
|
22
|
-
# Add the hypervisor to the rack
|
23
|
-
#rack.add_machine(machine)
|
24
|
-
user = Enterprise.all.first.users.first
|
25
|
-
|
26
|
-
user.virtual_mathines.each do
|
13
|
+
dc.find_vms_by_name('1dee').each do |vm|
|
14
|
+
puts vm.raw
|
27
15
|
end
|
28
|
-
|
29
|
-
|
data/lib/webee.rb
CHANGED
@@ -6,6 +6,7 @@ require 'active_support/core_ext/hash'
|
|
6
6
|
require 'uri'
|
7
7
|
require 'json'
|
8
8
|
require 'builder'
|
9
|
+
require 'alchemist'
|
9
10
|
|
10
11
|
#
|
11
12
|
# Monkeypatch SAXMachine to keep the raw XMK
|
@@ -28,7 +29,7 @@ end
|
|
28
29
|
|
29
30
|
module WeBee
|
30
31
|
|
31
|
-
VERSION = '0.3.
|
32
|
+
VERSION = '0.3.5'
|
32
33
|
|
33
34
|
module RestResource
|
34
35
|
|
@@ -163,6 +164,43 @@ module WeBee
|
|
163
164
|
element :vlanHard, :as => :vlan_hard
|
164
165
|
element :location
|
165
166
|
|
167
|
+
#
|
168
|
+
# Return Datacenter Statistics
|
169
|
+
# RAM in MB
|
170
|
+
# HD in GB
|
171
|
+
#
|
172
|
+
def stats
|
173
|
+
s = {
|
174
|
+
:free_hd => 0,
|
175
|
+
:real_hd => 0,
|
176
|
+
:used_hd => 0,
|
177
|
+
:machines => 0,
|
178
|
+
:free_ram => 0,
|
179
|
+
:real_ram => 0,
|
180
|
+
:used_ram => 0,
|
181
|
+
:real_cpus => 0,
|
182
|
+
:virtual_machines => 0,
|
183
|
+
}
|
184
|
+
Datacenter.all.each do |dc|
|
185
|
+
dc.racks.each do |rack|
|
186
|
+
rack.machines.each do |m|
|
187
|
+
s[:machines] += 1
|
188
|
+
s[:used_ram] += m.ram_used.to_i
|
189
|
+
s[:real_ram] += m.real_ram.to_i
|
190
|
+
s[:real_cpus] += m.real_cpu.to_i
|
191
|
+
s[:used_hd] += m.hd_used.to_i.bytes.to.gigabytes.to_f.round
|
192
|
+
s[:real_hd] += m.real_hd.to_i.bytes.to.gigabytes.to_f.round
|
193
|
+
m.virtual_machines.each do |vm|
|
194
|
+
s[:virtual_machines] += 1
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
s[:free_ram] = s[:real_ram] - s[:used_ram]
|
200
|
+
s[:free_hd] = s[:real_hd] - s[:used_hd]
|
201
|
+
return s
|
202
|
+
end
|
203
|
+
|
166
204
|
def self.create(attributes)
|
167
205
|
if attributes[:remote_services].nil?
|
168
206
|
attributes[:remote_services] = WeBee::RemoteService.create_for_host(Api.host)
|
@@ -233,6 +271,24 @@ module WeBee
|
|
233
271
|
machine = Machine.parse res
|
234
272
|
end
|
235
273
|
|
274
|
+
#
|
275
|
+
# Find a WeBee::VirtualMachine by name in this
|
276
|
+
# Datacenter.
|
277
|
+
#
|
278
|
+
# returns a WeBee::VirtualMachine
|
279
|
+
#
|
280
|
+
def find_vms_by_name(regexp)
|
281
|
+
matches = []
|
282
|
+
self.racks.each do |rack|
|
283
|
+
rack.machines.each do |m|
|
284
|
+
m.virtual_machines.each do |vm|
|
285
|
+
matches << vm if vm.name =~ /#{regexp}/i
|
286
|
+
end
|
287
|
+
end
|
288
|
+
end
|
289
|
+
matches
|
290
|
+
end
|
291
|
+
|
236
292
|
end
|
237
293
|
|
238
294
|
class RemoteService
|
@@ -443,6 +499,14 @@ module WeBee
|
|
443
499
|
items
|
444
500
|
end
|
445
501
|
|
502
|
+
def find_vms_by_name(name)
|
503
|
+
matches = []
|
504
|
+
self.virtual_machines.each do |vm|
|
505
|
+
matches << vm if vm.name =~ /#{regexp}/i
|
506
|
+
end
|
507
|
+
matches
|
508
|
+
end
|
509
|
+
|
446
510
|
end
|
447
511
|
|
448
512
|
class RemoteServiceType
|
@@ -886,10 +950,11 @@ module WeBee
|
|
886
950
|
element :idType, :as => :id_type
|
887
951
|
element :link, :value => :href, :as => :vdc_url, :with => {:rel => "virtualdatacenter" }
|
888
952
|
element :link, :value => :href, :as => :enterprise_url, :with => {:rel => "enterprise" }
|
953
|
+
element :link, :value => :href, :as => :machine_url, :with => {:rel => "machine" }
|
954
|
+
element :link, :value => :href, :as => :user_url, :with => {:rel => "user" }
|
889
955
|
|
890
956
|
def vdc
|
891
957
|
return nil if not managed?
|
892
|
-
# FIXME: Buggy Abiquo ABI missing some relations
|
893
958
|
doc = Nokogiri.parse(RestClient.get(Api.build_url(vdc_url) , :accept => :xml))
|
894
959
|
Rack.parse doc.root.to_s
|
895
960
|
end
|
@@ -900,11 +965,20 @@ module WeBee
|
|
900
965
|
|
901
966
|
def enterprise
|
902
967
|
return nil if not managed?
|
903
|
-
# FIXME: Buggy Abiquo ABI missing some relations
|
904
968
|
doc = Nokogiri.parse(RestClient.get(Api.build_url(enterprise_url) , :accept => :xml))
|
905
969
|
Enterprise.parse doc.root.to_s
|
906
970
|
end
|
907
971
|
|
972
|
+
def machine
|
973
|
+
doc = Nokogiri.parse(RestClient.get(Api.build_url(machine_url) , :accept => :xml))
|
974
|
+
Machine.parse doc.root.to_s
|
975
|
+
end
|
976
|
+
|
977
|
+
def user
|
978
|
+
doc = Nokogiri.parse(RestClient.get(Api.build_url(user_url) , :accept => :xml))
|
979
|
+
User.parse doc.root.to_s
|
980
|
+
end
|
981
|
+
|
908
982
|
end
|
909
983
|
|
910
984
|
class UserRole
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 5
|
10
|
+
version: 0.3.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sergio Rubio
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-09-
|
18
|
+
date: 2011-09-15 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: sax-machine
|