webee 0.2.1 → 0.3
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/Rakefile +1 -0
- data/examples/basics.rb +13 -1
- data/examples/test.rb +14 -9
- data/lib/webee.rb +89 -1
- metadata +20 -7
data/Rakefile
CHANGED
@@ -20,6 +20,7 @@ Jeweler::Tasks.new do |gem|
|
|
20
20
|
gem.add_runtime_dependency 'rest-client'
|
21
21
|
gem.add_runtime_dependency 'nokogiri'
|
22
22
|
gem.add_runtime_dependency 'builder'
|
23
|
+
gem.add_runtime_dependency 'i18n'
|
23
24
|
gem.add_runtime_dependency 'alchemist'
|
24
25
|
gem.add_runtime_dependency 'activesupport'
|
25
26
|
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
data/examples/basics.rb
CHANGED
@@ -166,4 +166,16 @@ WeBee::VDC.all
|
|
166
166
|
# List all VDCs from a specific Enterprise/Datacenter
|
167
167
|
# Needs Cloud operator privileges
|
168
168
|
#
|
169
|
-
WeBee::VDC.all :datacenter_id => WeBee::Datacenter.all.first.datacenter_id, :enterprise_id =>
|
169
|
+
vdc = (WeBee::VDC.all :datacenter_id => WeBee::Datacenter.all.first.datacenter_id, :enterprise_id => qa.enterprise_id).first
|
170
|
+
|
171
|
+
#
|
172
|
+
# List all the Virtual Apps in an VDC
|
173
|
+
#
|
174
|
+
vdc.virtual_appliances.each do |vapp|
|
175
|
+
#
|
176
|
+
# List the VM in a VAPP
|
177
|
+
#
|
178
|
+
vapp.virtual_machines.each do |vm|
|
179
|
+
#puts vm.name
|
180
|
+
end
|
181
|
+
end
|
data/examples/test.rb
CHANGED
@@ -5,16 +5,21 @@ 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.60.1.24/api'
|
9
9
|
|
10
|
-
|
10
|
+
include WeBee
|
11
11
|
|
12
|
-
WeBee::Datacenter.
|
13
|
-
# :remote_services => rs
|
14
|
-
#
|
15
|
-
WeBee::Enterprise.create :name => 'QA'
|
16
|
-
|
17
|
-
WeBee::
|
18
|
-
|
12
|
+
vdcs = WeBee::VDC.all(:datacenter_id => WeBee::Datacenter.all.first.datacenter_id, :enterprise_id => Enterprise.all.first.enterprise_id)
|
19
13
|
|
14
|
+
#
|
15
|
+
# List all the Virtual Apps in an VDC
|
16
|
+
#
|
17
|
+
vdc.virtual_appliances.each do |vapp|
|
18
|
+
#
|
19
|
+
# List the VM in a VAPP
|
20
|
+
#
|
21
|
+
vapp.virtual_machines.each do |vm|
|
22
|
+
#puts vm.name
|
23
|
+
end
|
24
|
+
end
|
20
25
|
|
data/lib/webee.rb
CHANGED
@@ -28,7 +28,7 @@ end
|
|
28
28
|
|
29
29
|
module WeBee
|
30
30
|
|
31
|
-
VERSION = '0.
|
31
|
+
VERSION = '0.3'
|
32
32
|
|
33
33
|
|
34
34
|
module RestResource
|
@@ -484,6 +484,8 @@ module WeBee
|
|
484
484
|
element :vlanHard, :as => :vlan_hard
|
485
485
|
element :hypervisorType, :as => :hypervisortype
|
486
486
|
element :network, :class => VDCNetwork
|
487
|
+
element :link, :value => :href, :as => :datacenter_url, :with => {:rel => "datacenter" }
|
488
|
+
element :link, :value => :href, :as => :enterprise_url, :with => {:rel => "enterprise" }
|
487
489
|
|
488
490
|
def self.create(attributes)
|
489
491
|
datacenter = attributes[:datacenter].datacenter_id
|
@@ -580,6 +582,66 @@ module WeBee
|
|
580
582
|
def self.find_by_name(name, options = {})
|
581
583
|
VDC.all(options).find_all { |vdc| vdc.name =~ /#{name}/ }
|
582
584
|
end
|
585
|
+
|
586
|
+
#
|
587
|
+
# List all the virtual appliances in this virtual datacenter
|
588
|
+
#
|
589
|
+
def virtual_appliances
|
590
|
+
items = []
|
591
|
+
doc = Nokogiri.parse(RestClient.get(Api.url + "/cloud/virtualdatacenters/#{vdc_id}/virtualappliances", :accept => :xml))
|
592
|
+
doc.search('//virtualAppliance').each do |node|
|
593
|
+
vapp = VirtualAppliance.parse(node.to_s)
|
594
|
+
vapp.vdc_id = vdc_id
|
595
|
+
items << vapp
|
596
|
+
end
|
597
|
+
items
|
598
|
+
end
|
599
|
+
|
600
|
+
end
|
601
|
+
|
602
|
+
class VirtualAppliance
|
603
|
+
include SAXMachine
|
604
|
+
|
605
|
+
attr_accessor :vdc_id
|
606
|
+
|
607
|
+
element :name
|
608
|
+
element :highDisponibility, :as => :high_disponibility
|
609
|
+
element :error
|
610
|
+
element :publicApp, :as => :public_app
|
611
|
+
element :state
|
612
|
+
element :subState, :as => :sub_state
|
613
|
+
element :id, :as => :virtual_appliance_id
|
614
|
+
|
615
|
+
def virtual_machines
|
616
|
+
items = []
|
617
|
+
doc = Nokogiri.parse(RestClient.get(Api.url + "/cloud/virtualdatacenters/#{vdc_id}/virtualappliances/#{virtual_appliance_id}/virtualmachines", :accept => :xml))
|
618
|
+
doc.search('//virtualMachine').each do |node|
|
619
|
+
items << VirtualMachine.parse(node.to_s)
|
620
|
+
end
|
621
|
+
items
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
class DatacenterLimit
|
626
|
+
include SAXMachine
|
627
|
+
|
628
|
+
element :id, :as => :datacenter_limit_id
|
629
|
+
element :ramSoft, :as => :ram_soft
|
630
|
+
element :ramHard, :as => :ram_hard
|
631
|
+
element :cpuSoft, :as => :cpu_soft
|
632
|
+
element :cpuHard, :as => :cpu_hard
|
633
|
+
element :storageSoft, :as => :storage_soft
|
634
|
+
element :storageHard, :as => :storage_hard
|
635
|
+
element :repositorySoft, :as => :repository_soft
|
636
|
+
element :repositoryHard, :as => :repository_hard
|
637
|
+
element :publicIpsSoft, :as => :public_ip_soft
|
638
|
+
element :publicIpsHard, :as => :public_ip_hard
|
639
|
+
element :hdSoft, :as => :hd_soft
|
640
|
+
element :hdHard, :as => :hd_hard
|
641
|
+
element :vlanSoft, :as => :vlan_soft
|
642
|
+
element :vlanHard, :as => :vlan_hard
|
643
|
+
element :idEnterprise, :as => :enterprise_id
|
644
|
+
element :idDataCenter, :as => :datacenter_id
|
583
645
|
|
584
646
|
end
|
585
647
|
|
@@ -607,7 +669,16 @@ module WeBee
|
|
607
669
|
element :vlanSoft, :as => :vlan_soft
|
608
670
|
element :vlanHard, :as => :vlan_hard
|
609
671
|
element :isReservationRestricted, :as => :is_reservation_restricted
|
672
|
+
element :link, :value => :href, :as => :limits_url, :with => {:rel => "limits" }
|
610
673
|
|
674
|
+
def limits
|
675
|
+
items = []
|
676
|
+
doc = Nokogiri.parse(RestClient.get(Api.url + "/admin/enterprises/#{resource_id}/limits"))
|
677
|
+
doc.search('//limit').each do |node|
|
678
|
+
items << DatacenterLimit.parse(node.to_s)
|
679
|
+
end
|
680
|
+
items
|
681
|
+
end
|
611
682
|
|
612
683
|
def delete
|
613
684
|
RestClient.delete(Api.url + "/admin/enterprises/#{resource_id}")
|
@@ -760,6 +831,23 @@ module WeBee
|
|
760
831
|
|
761
832
|
end
|
762
833
|
|
834
|
+
class VirtualMachine
|
835
|
+
include SAXMachine
|
836
|
+
|
837
|
+
element :name
|
838
|
+
element :description
|
839
|
+
element :ram
|
840
|
+
element :cpu
|
841
|
+
element :hd
|
842
|
+
element :vrdpIP, :as => :vdrp_ip
|
843
|
+
element :vrdpPort, :as => :vdrp_port
|
844
|
+
element :state
|
845
|
+
element :highDisponibility, :as => :high_disponibility
|
846
|
+
element :password
|
847
|
+
element :id, :as => :virtualmachine_id
|
848
|
+
|
849
|
+
end
|
850
|
+
|
763
851
|
class UserRole
|
764
852
|
|
765
853
|
def self.cloud_admin
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
|
10
|
-
version: 0.2.1
|
8
|
+
- 3
|
9
|
+
version: "0.3"
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Sergio Rubio
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2011-09-
|
17
|
+
date: 2011-09-12 00:00:00 Z
|
19
18
|
dependencies:
|
20
19
|
- !ruby/object:Gem::Dependency
|
21
20
|
name: sax-machine
|
@@ -74,7 +73,7 @@ dependencies:
|
|
74
73
|
type: :runtime
|
75
74
|
version_requirements: *id004
|
76
75
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
76
|
+
name: i18n
|
78
77
|
prerelease: false
|
79
78
|
requirement: &id005 !ruby/object:Gem::Requirement
|
80
79
|
none: false
|
@@ -88,7 +87,7 @@ dependencies:
|
|
88
87
|
type: :runtime
|
89
88
|
version_requirements: *id005
|
90
89
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
90
|
+
name: alchemist
|
92
91
|
prerelease: false
|
93
92
|
requirement: &id006 !ruby/object:Gem::Requirement
|
94
93
|
none: false
|
@@ -101,6 +100,20 @@ dependencies:
|
|
101
100
|
version: "0"
|
102
101
|
type: :runtime
|
103
102
|
version_requirements: *id006
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: activesupport
|
105
|
+
prerelease: false
|
106
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
hash: 3
|
112
|
+
segments:
|
113
|
+
- 0
|
114
|
+
version: "0"
|
115
|
+
type: :runtime
|
116
|
+
version_requirements: *id007
|
104
117
|
description: Abiquo API Ruby Implementation
|
105
118
|
email: sergio@rubio.name
|
106
119
|
executables:
|