deltacloud-core 0.0.1 → 0.0.2
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 -24
- data/lib/deltacloud/base_driver/features.rb +15 -0
- data/lib/deltacloud/base_driver/mock_driver.rb +37 -0
- data/lib/deltacloud/drivers/ec2/ec2_driver.rb +70 -48
- data/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +97 -14
- data/lib/deltacloud/drivers/{rimu/rimu_hosting_client.rb → rimuhosting/rimuhosting_client.rb} +5 -8
- data/lib/deltacloud/drivers/{rimu/rimu_hosting_driver.rb → rimuhosting/rimuhosting_driver.rb} +6 -5
- data/lib/deltacloud/drivers/terremark/terremark_driver.rb +261 -0
- data/lib/deltacloud/hardware_profile.rb +22 -0
- data/lib/deltacloud/helpers/application_helper.rb +18 -0
- data/lib/deltacloud/helpers/conversion_helper.rb +2 -3
- data/lib/deltacloud/method_serializer.rb +84 -0
- data/lib/drivers.rb +4 -3
- data/lib/sinatra/accept_media_types.rb +128 -0
- data/lib/sinatra/respond_to.rb +23 -16
- data/public/javascripts/application.js +30 -0
- data/public/javascripts/jquery-1.4.2.min.js +154 -0
- data/server.rb +23 -21
- data/support/fedora/deltacloudd +68 -0
- data/support/fedora/rubygem-deltacloud-core.spec +91 -0
- data/views/instances/index.html.haml +2 -1
- data/views/instances/index.xml.haml +3 -3
- data/views/instances/new.html.haml +9 -3
- data/views/instances/show.html.haml +2 -1
- data/views/instances/show.xml.haml +16 -3
- data/views/layout.html.haml +2 -0
- metadata +19 -37
- data/lib/converters/xml_converter.rb +0 -133
- data/public/javascripts/controls.js +0 -963
- data/public/javascripts/dragdrop.js +0 -973
- data/public/javascripts/effects.js +0 -1128
- data/public/javascripts/prototype.js +0 -4320
@@ -0,0 +1,68 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'optparse'
|
5
|
+
require 'thin'
|
6
|
+
|
7
|
+
options = {
|
8
|
+
:env => 'production'
|
9
|
+
}
|
10
|
+
optparse = OptionParser.new do |opts|
|
11
|
+
|
12
|
+
opts.banner = <<BANNER
|
13
|
+
Usage:
|
14
|
+
deltacloudd -i <driver> [options]
|
15
|
+
|
16
|
+
Options:
|
17
|
+
BANNER
|
18
|
+
opts.on( '-i', '--driver DRIVER', 'Driver to use') do |driver|
|
19
|
+
ENV["API_DRIVER"] = driver
|
20
|
+
end
|
21
|
+
opts.on( '-r', '--hostname HOSTNAME',
|
22
|
+
'Bind to HOST address (default: localhost)') do |host|
|
23
|
+
ENV["API_HOST"] = host
|
24
|
+
end
|
25
|
+
opts.on( '-p', '--port PORT', 'Use PORT (default: 3001)') do |port|
|
26
|
+
ENV["API_PORT"] = port
|
27
|
+
end
|
28
|
+
opts.on( '-e', '--env ENV', 'Environment (default: "development")') { |env| options[:env] = env }
|
29
|
+
opts.on( '-h', '--help', '') { options[:help] = true }
|
30
|
+
end
|
31
|
+
|
32
|
+
optparse.parse!
|
33
|
+
|
34
|
+
if options[:help]
|
35
|
+
puts optparse
|
36
|
+
exit(0)
|
37
|
+
end
|
38
|
+
|
39
|
+
unless ENV["API_DRIVER"]
|
40
|
+
puts "You need to specify a driver to use (-i <driver>)"
|
41
|
+
exit(1)
|
42
|
+
end
|
43
|
+
|
44
|
+
ENV["API_HOST"] = "localhost" unless ENV["API_HOST"]
|
45
|
+
ENV["API_PORT"] = "3001" unless ENV["API_PORT"]
|
46
|
+
|
47
|
+
dirname="#{File.dirname(__FILE__)}/.."
|
48
|
+
|
49
|
+
argv_opts = ARGV.clone
|
50
|
+
argv_opts << ['start'] unless Thin::Runner.commands.include?(options[0])
|
51
|
+
argv_opts << ['--address', ENV["API_HOST"] ]
|
52
|
+
argv_opts << ['--port', ENV["API_PORT"] ]
|
53
|
+
argv_opts << ['--rackup', 'config.ru' ]
|
54
|
+
argv_opts << ['--chdir', dirname ]
|
55
|
+
argv_opts << ['-e', options[:env] ]
|
56
|
+
argv_opts << ['--threaded', '-D', '--stats', '/stats']
|
57
|
+
|
58
|
+
argv_opts.flatten!
|
59
|
+
|
60
|
+
puts "Starting Deltacloud API :: #{ENV["API_DRIVER"]} :: http://#{ENV["API_HOST"]}:#{ENV["API_PORT"]}/api"
|
61
|
+
puts
|
62
|
+
|
63
|
+
thin = Thin::Runner.new(argv_opts)
|
64
|
+
begin
|
65
|
+
thin.run!
|
66
|
+
rescue Exception => e
|
67
|
+
puts "ERROR: #{e.message}"
|
68
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
%global ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']")
|
2
|
+
%global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
|
3
|
+
%global gemname deltacloud-core
|
4
|
+
%global geminstdir %{gemdir}/gems/%{gemname}-%{version}
|
5
|
+
|
6
|
+
Summary: Deltacloud REST API
|
7
|
+
Name: rubygem-%{gemname}
|
8
|
+
Version: 0.0.1
|
9
|
+
Release: 2%{?dist}
|
10
|
+
Group: Development/Languages
|
11
|
+
License: ASL 2.0 and MIT
|
12
|
+
URL: http://www.deltacloud.org
|
13
|
+
Source0: http://gems.rubyforge.org/gems/%{gemname}-%{version}.gem
|
14
|
+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
15
|
+
Requires: rubygems
|
16
|
+
Requires: ruby(abi) = 1.8
|
17
|
+
Requires: rubygem(eventmachine) >= 0.12.10
|
18
|
+
Requires: rubygem(haml) >= 2.2.17
|
19
|
+
Requires: rubygem(sinatra) >= 0.9.4
|
20
|
+
Requires: rubygem(rack) >= 1.0.0
|
21
|
+
Requires: rubygem(thin) >= 1.2.5
|
22
|
+
Requires: rubygem(builder) >= 2.1.2
|
23
|
+
Requires: rubygem(json) >= 1.2.3
|
24
|
+
BuildRequires: ruby-json >= 1.1.9
|
25
|
+
BuildRequires: rubygem(rake) >= 0.8.7
|
26
|
+
BuildRequires: rubygem(rack-test) >= 0.4.0
|
27
|
+
BuildRequires: rubygem(cucumber) >= 0.4.0
|
28
|
+
BuildRequires: rubygem(rcov) >= 0.9.6
|
29
|
+
BuildRequires: rubygems
|
30
|
+
BuildRequires: ruby(abi) = 1.8
|
31
|
+
BuildArch: noarch
|
32
|
+
Provides: rubygem(%{gemname}) = %{version}
|
33
|
+
|
34
|
+
%description
|
35
|
+
The Deltacloud API is built as a service-based REST API.
|
36
|
+
You do not directly link a Deltacloud library into your program to use it.
|
37
|
+
Instead, a client speaks the Deltacloud API over HTTP to a server
|
38
|
+
which implements the REST interface.
|
39
|
+
|
40
|
+
%prep
|
41
|
+
|
42
|
+
%build
|
43
|
+
|
44
|
+
%install
|
45
|
+
rm -rf %{buildroot}
|
46
|
+
mkdir -p %{buildroot}%{gemdir}
|
47
|
+
gem install --local --install-dir %{buildroot}%{gemdir} \
|
48
|
+
--force --rdoc %{SOURCE0}
|
49
|
+
mkdir -p %{buildroot}/%{_bindir}
|
50
|
+
mv %{buildroot}%{geminstdir}/support/fedora/deltacloudd %{buildroot}/%{geminstdir}/bin
|
51
|
+
mv %{buildroot}%{gemdir}/bin/* %{buildroot}/%{_bindir}
|
52
|
+
rmdir %{buildroot}%{gemdir}/bin
|
53
|
+
find %{buildroot}%{geminstdir}/bin -type f | xargs chmod a+x
|
54
|
+
|
55
|
+
# Needs json_pure gem / not available in Fedora yet
|
56
|
+
#%check
|
57
|
+
#pushd %{buildroot}%{geminstdir}
|
58
|
+
#cucumber features/*.feature
|
59
|
+
#popd
|
60
|
+
|
61
|
+
%clean
|
62
|
+
rm -rf %{buildroot}
|
63
|
+
|
64
|
+
%files
|
65
|
+
%defattr(-, root, root, -)
|
66
|
+
%{_bindir}/deltacloudd
|
67
|
+
%{gemdir}/gems/%{gemname}-%{version}/bin
|
68
|
+
%{gemdir}/gems/%{gemname}-%{version}/lib
|
69
|
+
%{gemdir}/gems/%{gemname}-%{version}/public/favicon.ico
|
70
|
+
%{gemdir}/gems/%{gemname}-%{version}/public/images
|
71
|
+
%{gemdir}/gems/%{gemname}-%{version}/public/stylesheets
|
72
|
+
%{gemdir}/gems/%{gemname}-%{version}/tests
|
73
|
+
%{gemdir}/gems/%{gemname}-%{version}/views
|
74
|
+
%{gemdir}/gems/%{gemname}-%{version}/Rakefile
|
75
|
+
%{gemdir}/gems/%{gemname}-%{version}/*.rb
|
76
|
+
%{gemdir}/gems/%{gemname}-%{version}/config.ru
|
77
|
+
%doc %{gemdir}/gems/%{gemname}-%{version}/support/fedora
|
78
|
+
%doc %{gemdir}/gems/%{gemname}-%{version}/COPYING
|
79
|
+
%doc %{gemdir}/doc/%{gemname}-%{version}
|
80
|
+
%{gemdir}/cache/%{gemname}-%{version}.gem
|
81
|
+
%{gemdir}/specifications/%{gemname}-%{version}.gemspec
|
82
|
+
# MIT
|
83
|
+
%{gemdir}/gems/%{gemname}-%{version}/public/javascripts
|
84
|
+
|
85
|
+
%changelog
|
86
|
+
* Mon Apr 26 2010 Michal Fojtik <mfojtik@packager> - 0.0.1-1
|
87
|
+
- Initial package
|
88
|
+
|
89
|
+
* Mon Apr 26 2010 Michal Fojtik <mfojtik@packager> - 0.0.1-2
|
90
|
+
- Fixed broken dependencies
|
91
|
+
- Added new launcher for Fedora
|
@@ -26,4 +26,5 @@
|
|
26
26
|
%td
|
27
27
|
= instance.state
|
28
28
|
%td
|
29
|
-
|
29
|
+
-instance.actions.each do |action|
|
30
|
+
=link_to action, self.send(:"#{action}_instance_url", instance.id), :class => instance_action_method(action)
|
@@ -14,10 +14,10 @@
|
|
14
14
|
%property{:kind => 'fixed', :name => p, :value => v, :unit => Deltacloud::HardwareProfile::unit(p)}
|
15
15
|
%actions
|
16
16
|
- instance.actions.compact.each do |action|
|
17
|
-
%link{:rel => action, :href => self.send("#{action}_instance_url", instance.id)}
|
18
|
-
|
17
|
+
%link{:rel => action, :href => self.send("#{action}_instance_url", instance.id), :method => instance_action_method(action)}
|
18
|
+
%public-addresses
|
19
19
|
- instance.public_addresses.each do |address|
|
20
20
|
%address #{address}
|
21
|
-
|
21
|
+
%private-addresses
|
22
22
|
- instance.private_addresses.each do |address|
|
23
23
|
%address #{address}
|
@@ -5,9 +5,15 @@
|
|
5
5
|
|
6
6
|
%form{ :action => instances_url, :method => :post }
|
7
7
|
%input{ :name => :image_id, :type => :hidden, :value => @instance.image_id }/
|
8
|
-
%
|
9
|
-
|
10
|
-
|
8
|
+
%p
|
9
|
+
%label
|
10
|
+
Instance Name:
|
11
|
+
%input{ :name => 'name', :size => 30 }/
|
12
|
+
-if driver_has_feature?(:authentication_key)
|
13
|
+
%p
|
14
|
+
%label
|
15
|
+
Instance Keyname:
|
16
|
+
%input{:name => 'keyname', :size => 30 }
|
11
17
|
- if !@hardware_profiles.empty?
|
12
18
|
%h3 What size machine?
|
13
19
|
- for hwp in @hardware_profiles
|
@@ -39,4 +39,5 @@
|
|
39
39
|
%di
|
40
40
|
%dt
|
41
41
|
%dd
|
42
|
-
|
42
|
+
-@instance.actions.each do |action|
|
43
|
+
=link_to action, self.send(:"#{action}_instance_url", @instance.id), :class => instance_action_method(action)
|
@@ -17,12 +17,25 @@
|
|
17
17
|
%property{:kind => 'fixed', :name => p, :value => v, :unit => Deltacloud::HardwareProfile::unit(p)}
|
18
18
|
%actions
|
19
19
|
- @instance.actions.compact.each do |instance_action|
|
20
|
-
%link{:rel => instance_action, :href => self.send("#{instance_action}_instance_url", @instance.id)}
|
21
|
-
|
20
|
+
%link{:rel => instance_action, :method => instance_action_method(instance_action), :href => self.send("#{instance_action}_instance_url", @instance.id)}
|
21
|
+
%public-addresses
|
22
22
|
- @instance.public_addresses.each do |address|
|
23
23
|
%address<
|
24
24
|
=address
|
25
|
-
|
25
|
+
%private-addresses
|
26
26
|
- @instance.private_addresses.each do |address|
|
27
27
|
%address<
|
28
28
|
=address
|
29
|
+
- if driver_has_auth_features?
|
30
|
+
%authentication{ :type => driver_auth_feature_name }
|
31
|
+
- if @instance.authn_feature_failed?
|
32
|
+
%error #{@instance.authn_error}
|
33
|
+
- else
|
34
|
+
- if driver_auth_feature_name == 'password'
|
35
|
+
%login
|
36
|
+
%username #{@instance.username}
|
37
|
+
%password #{@instance.password}
|
38
|
+
- if driver_auth_feature_name == 'key'
|
39
|
+
%login
|
40
|
+
%keyname #{@instance.keyname}
|
41
|
+
|
data/views/layout.html.haml
CHANGED
@@ -8,6 +8,8 @@
|
|
8
8
|
/[if lt IE 8]
|
9
9
|
= stylesheet_link_tag '/stylesheets/compiled/ie.css', :media => 'screen, projection'
|
10
10
|
= stylesheet_link_tag '/stylesheets/compiled/application.css', :media => 'screen, projection'
|
11
|
+
%script{:type => "text/javascript", :src => "/javascripts/jquery-1.4.2.min.js" }
|
12
|
+
%script{:type => "text/javascript", :src => "/javascripts/application.js" }
|
11
13
|
%body
|
12
14
|
#wrapper
|
13
15
|
#header
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deltacloud-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Red Hat, Inc.
|
@@ -9,19 +9,9 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-06-09 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: rake
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.8.7
|
24
|
-
version:
|
25
15
|
- !ruby/object:Gem::Dependency
|
26
16
|
name: eventmachine
|
27
17
|
type: :runtime
|
@@ -73,44 +63,34 @@ dependencies:
|
|
73
63
|
version: 1.2.5
|
74
64
|
version:
|
75
65
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
77
|
-
type: :runtime
|
78
|
-
version_requirement:
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 0.5.2
|
84
|
-
version:
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: builder
|
66
|
+
name: json
|
87
67
|
type: :runtime
|
88
68
|
version_requirement:
|
89
69
|
version_requirements: !ruby/object:Gem::Requirement
|
90
70
|
requirements:
|
91
71
|
- - ">="
|
92
72
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
73
|
+
version: 1.2.3
|
94
74
|
version:
|
95
75
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
76
|
+
name: rerun
|
97
77
|
type: :runtime
|
98
78
|
version_requirement:
|
99
79
|
version_requirements: !ruby/object:Gem::Requirement
|
100
80
|
requirements:
|
101
81
|
- - ">="
|
102
82
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
83
|
+
version: 0.5.2
|
104
84
|
version:
|
105
85
|
- !ruby/object:Gem::Dependency
|
106
|
-
name:
|
107
|
-
type: :
|
86
|
+
name: rake
|
87
|
+
type: :development
|
108
88
|
version_requirement:
|
109
89
|
version_requirements: !ruby/object:Gem::Requirement
|
110
90
|
requirements:
|
111
91
|
- - ">="
|
112
92
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
93
|
+
version: 0.8.7
|
114
94
|
version:
|
115
95
|
- !ruby/object:Gem::Dependency
|
116
96
|
name: compass
|
@@ -175,10 +155,13 @@ files:
|
|
175
155
|
- config.ru
|
176
156
|
- server.rb
|
177
157
|
- deltacloud.rb
|
178
|
-
-
|
158
|
+
- support/fedora/deltacloudd
|
159
|
+
- support/fedora/rubygem-deltacloud-core.spec
|
160
|
+
- lib/drivers.rb
|
179
161
|
- lib/deltacloud/base_driver.rb
|
180
162
|
- lib/deltacloud/base_driver/base_driver.rb
|
181
163
|
- lib/deltacloud/base_driver/features.rb
|
164
|
+
- lib/deltacloud/base_driver/mock_driver.rb
|
182
165
|
- lib/deltacloud/drivers/ec2/ec2_driver.rb
|
183
166
|
- lib/deltacloud/drivers/ec2/ec2_mock_driver.rb
|
184
167
|
- lib/deltacloud/drivers/gogrid/gogrid_client.rb
|
@@ -190,8 +173,9 @@ files:
|
|
190
173
|
- lib/deltacloud/drivers/rackspace/rackspace_client.rb
|
191
174
|
- lib/deltacloud/drivers/rackspace/rackspace_driver.rb
|
192
175
|
- lib/deltacloud/drivers/rhevm/rhevm_driver.rb
|
193
|
-
- lib/deltacloud/drivers/
|
194
|
-
- lib/deltacloud/drivers/
|
176
|
+
- lib/deltacloud/drivers/terremark/terremark_driver.rb
|
177
|
+
- lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb
|
178
|
+
- lib/deltacloud/drivers/rimuhosting/rimuhosting_driver.rb
|
195
179
|
- lib/deltacloud/hardware_profile.rb
|
196
180
|
- lib/deltacloud/helpers.rb
|
197
181
|
- lib/deltacloud/helpers/application_helper.rb
|
@@ -206,12 +190,13 @@ files:
|
|
206
190
|
- lib/deltacloud/models/instance_profile.rb
|
207
191
|
- lib/deltacloud/state_machine.rb
|
208
192
|
- lib/deltacloud/validation.rb
|
193
|
+
- lib/deltacloud/method_serializer.rb
|
209
194
|
- lib/sinatra/lazy_auth.rb
|
210
195
|
- lib/sinatra/rabbit.rb
|
211
196
|
- lib/sinatra/respond_to.rb
|
212
197
|
- lib/sinatra/static_assets.rb
|
213
198
|
- lib/sinatra/url_for.rb
|
214
|
-
- lib/
|
199
|
+
- lib/sinatra/accept_media_types.rb
|
215
200
|
- views/accounts/index.html.haml
|
216
201
|
- views/accounts/show.html.haml
|
217
202
|
- views/api/show.html.haml
|
@@ -264,10 +249,7 @@ files:
|
|
264
249
|
- public/images/rails.png
|
265
250
|
- public/images/topbar-bg.png
|
266
251
|
- public/javascripts/application.js
|
267
|
-
- public/javascripts/
|
268
|
-
- public/javascripts/dragdrop.js
|
269
|
-
- public/javascripts/effects.js
|
270
|
-
- public/javascripts/prototype.js
|
252
|
+
- public/javascripts/jquery-1.4.2.min.js
|
271
253
|
- public/stylesheets/compiled/application.css
|
272
254
|
- public/stylesheets/compiled/ie.css
|
273
255
|
- public/stylesheets/compiled/print.css
|
@@ -1,133 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (C) 2009 Red Hat, Inc.
|
3
|
-
#
|
4
|
-
# This library is free software; you can redistribute it and/or
|
5
|
-
# modify it under the terms of the GNU Lesser General Public
|
6
|
-
# License as published by the Free Software Foundation; either
|
7
|
-
# version 2.1 of the License, or (at your option) any later version.
|
8
|
-
#
|
9
|
-
# This library is distributed in the hope that it will be useful,
|
10
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
-
# Lesser General Public License for more details.
|
13
|
-
#
|
14
|
-
# You should have received a copy of the GNU Lesser General Public
|
15
|
-
# License along with this library; if not, write to the Free Software
|
16
|
-
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17
|
-
|
18
|
-
module Converters
|
19
|
-
|
20
|
-
( ALIASES = {
|
21
|
-
:owner=>nil,
|
22
|
-
:volume=>:storage_volume,
|
23
|
-
} ) unless defined?( ALIASES )
|
24
|
-
|
25
|
-
def self.url_type(type)
|
26
|
-
type = type.to_sym
|
27
|
-
return ALIASES[type] if ( ALIASES.keys.include?( type ) )
|
28
|
-
type
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.tag_name(type)
|
32
|
-
tag_name = type.to_s
|
33
|
-
tag_name.gsub( /_/, '-' )
|
34
|
-
end
|
35
|
-
|
36
|
-
class XMLConverter
|
37
|
-
def initialize(link_builder, type)
|
38
|
-
@link_builder = link_builder
|
39
|
-
@type = type
|
40
|
-
end
|
41
|
-
|
42
|
-
def convert(obj, builder=nil)
|
43
|
-
builder ||= Builder::XmlMarkup.new( :indent=>2 )
|
44
|
-
if ( obj.is_a?( Array ) )
|
45
|
-
builder.__send__( @type.to_s.pluralize.gsub( /_/, '-' ).to_sym ) do
|
46
|
-
obj.each do |e|
|
47
|
-
convert( e, builder )
|
48
|
-
end
|
49
|
-
end
|
50
|
-
else
|
51
|
-
case ( obj )
|
52
|
-
when Image
|
53
|
-
builder.image( :href=>@link_builder.send( :image_url, obj.id ) ) {
|
54
|
-
builder.id( obj.id )
|
55
|
-
builder.owner_id( obj.owner_id )
|
56
|
-
builder.name( obj.name )
|
57
|
-
builder.description( obj.description )
|
58
|
-
builder.architecture( obj.architecture )
|
59
|
-
}
|
60
|
-
when Realm
|
61
|
-
builder.realm( :href=>@link_builder.send( :realm_url, obj.id ) ) {
|
62
|
-
builder.id( obj.id )
|
63
|
-
builder.name( obj.name )
|
64
|
-
builder.state( obj.state )
|
65
|
-
if ( obj.limit == :unlimited )
|
66
|
-
builder.limit()
|
67
|
-
else
|
68
|
-
builder.limit( obj.limit )
|
69
|
-
end
|
70
|
-
}
|
71
|
-
when Instance
|
72
|
-
builder.instance( :href=>@link_builder.send( :instance_url, obj.id ) ) {
|
73
|
-
builder.id( obj.id )
|
74
|
-
builder.name( obj.name )
|
75
|
-
builder.owner_id( obj.owner_id )
|
76
|
-
builder.image( :href=>@link_builder.send( :image_url, obj.image_id ) )
|
77
|
-
builder.__send__( 'hardware-profile', :href=>@link_builder.send( :hardware_profile_url, obj.instance_profile.name) ) do
|
78
|
-
builder.id( obj.instance_profile.name )
|
79
|
-
obj.instance_profile.overrides.each do |p, v|
|
80
|
-
u = ::Deltacloud::HardwareProfile::unit(p)
|
81
|
-
builder.property( :kind=>:fixed, :name=>p, :unit=>u, :value=>v )
|
82
|
-
end
|
83
|
-
end
|
84
|
-
builder.realm( :href=>@link_builder.send( :realm_url, obj.realm_id ) ) if obj.realm_id
|
85
|
-
builder.state( obj.state )
|
86
|
-
builder.actions {
|
87
|
-
if ( obj.actions )
|
88
|
-
obj.actions.each do |action|
|
89
|
-
builder.link( :rel=>action, :href=>@link_builder.send( "#{action}_instance_url", obj.id ) )
|
90
|
-
end
|
91
|
-
end
|
92
|
-
}
|
93
|
-
builder.__send__( 'public-addresses' ) {
|
94
|
-
obj.public_addresses.each do |address|
|
95
|
-
builder.address( address )
|
96
|
-
end
|
97
|
-
}
|
98
|
-
builder.__send__( 'private-addresses' ) {
|
99
|
-
obj.private_addresses.each do |address|
|
100
|
-
builder.address( address )
|
101
|
-
end
|
102
|
-
}
|
103
|
-
}
|
104
|
-
when StorageVolume
|
105
|
-
builder.__send__('storage-volume', :href=>@link_builder.send( :storage_volume_url, obj.id )) {
|
106
|
-
builder.id( obj.id )
|
107
|
-
builder.created( obj.created )
|
108
|
-
builder.state( obj.state )
|
109
|
-
builder.capacity( obj.capacity )
|
110
|
-
builder.device( obj.device )
|
111
|
-
if ( obj.instance_id )
|
112
|
-
builder.instance( :href=>@link_builder.send( :instance_url, obj.instance_id ) )
|
113
|
-
else
|
114
|
-
builder.instance()
|
115
|
-
end
|
116
|
-
}
|
117
|
-
when StorageSnapshot
|
118
|
-
builder.__send__('storage-snapshot', :href=>@link_builder.send( :storage_snapshot_url, obj.id )) {
|
119
|
-
builder.id( obj.id )
|
120
|
-
builder.created( obj.created )
|
121
|
-
builder.state( obj.state )
|
122
|
-
if ( obj.storage_volume_id )
|
123
|
-
builder.__send__('storage-volume', :href=>@link_builder.send( :storage_volume_url, obj.storage_volume_id ) )
|
124
|
-
else
|
125
|
-
builder.__send( 'storage-volume' )
|
126
|
-
end
|
127
|
-
}
|
128
|
-
end
|
129
|
-
end
|
130
|
-
return builder.target!
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|