studio_api 3.1.3 → 3.1.4

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 CHANGED
@@ -7,6 +7,18 @@ Bundler::GemHelper.install_tasks
7
7
 
8
8
  task :default => "test"
9
9
 
10
+ desc "Create package directory containing all things to build RPM"
11
+ task :package => [:build] do
12
+ pkg_name = "rubygem-studio_api"
13
+ include FileUtils::Verbose
14
+ rm_rf "package"
15
+ mkdir "package"
16
+ cp "#{pkg_name}.changes","package/"
17
+ cp "#{pkg_name}.spec.template","package/#{pkg_name}.spec"
18
+ sh 'cp pkg/*.gem package/'
19
+ sh "sed -i \"s:<VERSION>:`cat VERSION`:\" package/#{pkg_name}.spec"
20
+ end
21
+
10
22
  Rake::TestTask.new do |t|
11
23
  t.libs << "test"
12
24
  t.pattern = 'test/*_test.rb'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.3
1
+ 3.1.4
@@ -24,25 +24,21 @@ module StudioApi
24
24
  self.element_name = "status"
25
25
  end
26
26
 
27
+ # Represent appliance configuration
28
+ # @example set LVM in appliance ( require rails 3 for newly initialized variables )
29
+ # configuration = appliance.configuration
30
+ # configuration.lvm.enabled = "true"
31
+ # configuration.lvm.volume_group = "fooVG"
32
+ # configuration.lvm.volumes = [ { :path => "/test", :size => "500M" } ]
33
+ # configuration.save
27
34
  class Configuration < ActiveResource::Base
28
35
  extend StudioResource
29
36
  self.element_name = "configuration"
30
37
 
31
- def self.parse response
32
- tree = XmlSimple.xml_in(response, "ForceArray" => ["tag","user","eula","autostart","database","volume"])
33
- tree["tags"] = tree["tags"]["tag"].reduce({}){ |acc,t| acc.merge :tag => t} if tree["tags"]
34
- tree["users"] = tree["users"]["user"]
35
- tree["eulas"] = tree["eulas"]["eula"]
36
- tree["autostarts"] = tree["autostarts"]["autostart"] if tree["autostarts"]
37
- if tree["databases"]
38
- tree["databases"]= tree["databases"]["database"]
39
- tree["databases"].each do |d|
40
- d["users"] = d["users"]["user"] if d["users"]
41
- end
42
- end
43
- tree["lvm"]["volumes"] = tree["lvm"]["volumes"]["volume"] if tree["lvm"] && tree["lvm"]["volumes"]
44
- Firewall.studio_connection = studio_connection
45
- Configuration.new tree
38
+ def self.find (id, prefix_options={})
39
+ request_str = "/appliances/#{id.to_i}/configuration"
40
+ response = GenericRequest.new(studio_connection).get request_str
41
+ Configuration.parse response
46
42
  end
47
43
 
48
44
  def update
@@ -64,6 +60,29 @@ module StudioApi
64
60
  end
65
61
  end
66
62
  end
63
+
64
+ private
65
+ def self.parse response
66
+ tree = XmlSimple.xml_in(response, "ForceArray" => ["tag","user","eula","autostart","database","volume"])
67
+ tree["tags"] = tree["tags"]["tag"].reduce({}){ |acc,t| acc.merge :tag => t} if tree["tags"]
68
+ tree["users"] = tree["users"]["user"]
69
+ tree["eulas"] = tree["eulas"]["eula"]
70
+ tree["autostarts"] = tree["autostarts"]["autostart"] if tree["autostarts"]
71
+ if tree["databases"]
72
+ tree["databases"]= tree["databases"]["database"]
73
+ tree["databases"].each do |d|
74
+ d["users"] = d["users"]["user"] if d["users"]
75
+ end
76
+ end
77
+ tree["lvm"]["volumes"] = tree["lvm"]["volumes"]["volume"] if tree["lvm"] && tree["lvm"]["volumes"]
78
+ Firewall.studio_connection = studio_connection
79
+ if defined? ActiveModel #we are in rails3, so set model persistent
80
+ Configuration.new tree,true
81
+ else
82
+ Configuration.new tree
83
+ end
84
+ end
85
+
67
86
  end
68
87
 
69
88
  # Represents repository assigned to appliance
@@ -238,11 +257,11 @@ module StudioApi
238
257
  end
239
258
  end
240
259
 
260
+ # Shortcut to find configuration of appliance. Always ask server for new one.
261
+ # @see StudioApi::Appliance::Configuration
241
262
  def configuration
242
- request_str = "/appliances/#{id.to_i}/configuration"
243
- response = GenericRequest.new(self.class.studio_connection).get request_str
244
263
  Configuration.studio_connection = self.class.studio_connection
245
- Configuration.parse response
264
+ Configuration.find id
246
265
  end
247
266
 
248
267
  # clones appliance or template
@@ -254,7 +273,11 @@ module StudioApi
254
273
  request_str = "/appliances?clone_from=#{source_id.to_i}"
255
274
  request_str = Util.add_options request_str, options, false
256
275
  response = GenericRequest.new(studio_connection).post request_str, options
257
- Appliance.new Hash.from_xml(response)["appliance"]
276
+ if defined? ActiveModel #we are in rails3, so set model persistent
277
+ Appliance.new Hash.from_xml(response)["appliance"],true
278
+ else
279
+ Appliance.new Hash.from_xml(response)["appliance"]
280
+ end
258
281
  end
259
282
 
260
283
  # Gets all GPG keys assigned to appliance
@@ -57,7 +57,11 @@ module StudioApi
57
57
  end
58
58
  rq = GenericRequest.new studio_connection
59
59
  response = rq.post request_str, :file => content
60
- File.new Hash.from_xml(response)["file"]
60
+ if defined? ActiveModel #rails 3 and ActiveResource persistency
61
+ File.new Hash.from_xml(response)["file"],true
62
+ else
63
+ File.new Hash.from_xml(response)["file"]
64
+ end
61
65
  end
62
66
 
63
67
  private
@@ -21,7 +21,11 @@ module StudioApi
21
21
  # @return [StudioApi::Rpm] uploaded RPM
22
22
  def self.upload content, base_system
23
23
  response = GenericRequest.new(studio_connection).post "/rpms?base_system=#{CGI.escape base_system.to_s}", :file => content
24
- self.new Hash.from_xml(response)["rpm"]
24
+ if defined? ActiveModel #for rails3 we need persistent, otherwise delete method fail
25
+ self.new Hash.from_xml(response)["rpm"],true
26
+ else
27
+ self.new Hash.from_xml(response)["rpm"]
28
+ end
25
29
  end
26
30
 
27
31
  # Downloads file to specified path.
@@ -27,8 +27,8 @@ License: GPLv2 or The Ruby License
27
27
  BuildRoot: %{_tmppath}/%{name}-%{version}-build
28
28
  BuildRequires: rubygems_with_buildroot_patch
29
29
  %rubygems_requires
30
- BuildRequires: rubygem-activeresource >= 1.3.8
31
- Requires: rubygem-activeresource >= 1.3.8
30
+ BuildRequires: rubygem-activeresource >= 2.3.8
31
+ Requires: rubygem-activeresource >= 2.3.8
32
32
  BuildRequires: rubygem-xml-simple >= 1.0.0
33
33
  Requires: rubygem-xml-simple >= 1.0.0
34
34
  #
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: studio_api
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 11
5
+ prerelease:
5
6
  segments:
6
7
  - 3
7
8
  - 1
8
- - 3
9
- version: 3.1.3
9
+ - 4
10
+ version: 3.1.4
10
11
  platform: ruby
11
12
  authors:
12
13
  - Josef Reidinger
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-08-17 00:00:00 +02:00
18
+ date: 2011-11-28 00:00:00 +00:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: activeresource
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 19
27
30
  segments:
28
31
  - 2
29
32
  - 3
@@ -35,9 +38,11 @@ dependencies:
35
38
  name: xml-simple
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ">="
40
44
  - !ruby/object:Gem::Version
45
+ hash: 23
41
46
  segments:
42
47
  - 1
43
48
  - 0
@@ -49,9 +54,11 @@ dependencies:
49
54
  name: yard
50
55
  prerelease: false
51
56
  requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
52
58
  requirements:
53
59
  - - ">="
54
60
  - !ruby/object:Gem::Version
61
+ hash: 3
55
62
  segments:
56
63
  - 0
57
64
  version: "0"
@@ -96,6 +103,52 @@ files:
96
103
  - lib/studio_api/util.rb
97
104
  - rubygem-studio_api.changes
98
105
  - rubygem-studio_api.spec.template
106
+ - test/appliance_test.rb
107
+ - test/build_test.rb
108
+ - test/connection_test.rb
109
+ - test/file_test.rb
110
+ - test/gallery_test.rb
111
+ - test/generic_request_test.rb
112
+ - test/repository_test.rb
113
+ - test/resource_test.rb
114
+ - test/responses/api_version.xml
115
+ - test/responses/appliance.xml
116
+ - test/responses/appliances.xml
117
+ - test/responses/build.xml
118
+ - test/responses/builds.xml
119
+ - test/responses/configuration.xml
120
+ - test/responses/file.xml
121
+ - test/responses/files.xml
122
+ - test/responses/gallery.xml
123
+ - test/responses/gallery_appliance.xml
124
+ - test/responses/gpg_key.xml
125
+ - test/responses/gpg_keys.xml
126
+ - test/responses/manifest.xml
127
+ - test/responses/repositories.xml
128
+ - test/responses/repository.xml
129
+ - test/responses/rpm.xml
130
+ - test/responses/rpms.xml
131
+ - test/responses/running_build.xml
132
+ - test/responses/running_build_image_already_exists.xml
133
+ - test/responses/running_builds.xml
134
+ - test/responses/software.xml
135
+ - test/responses/software_fake_response.xml
136
+ - test/responses/software_installed.xml
137
+ - test/responses/software_search.xml
138
+ - test/responses/status-broken.xml
139
+ - test/responses/status.xml
140
+ - test/responses/template_sets.xml
141
+ - test/responses/testdrive.xml
142
+ - test/responses/testdrives.xml
143
+ - test/responses/users_0.xml
144
+ - test/responses/users_1.xml
145
+ - test/responses/users_2.xml
146
+ - test/responses/versions.xml
147
+ - test/rpm_test.rb
148
+ - test/running_build_test.rb
149
+ - test/template_set_test.rb
150
+ - test/test_helper.rb
151
+ - test/testdrive_test.rb
99
152
  has_rdoc: true
100
153
  homepage: http://github.com/jreidinger/studio_api
101
154
  licenses:
@@ -109,16 +162,20 @@ rdoc_options:
109
162
  require_paths:
110
163
  - lib
111
164
  required_ruby_version: !ruby/object:Gem::Requirement
165
+ none: false
112
166
  requirements:
113
167
  - - ">="
114
168
  - !ruby/object:Gem::Version
169
+ hash: 3
115
170
  segments:
116
171
  - 0
117
172
  version: "0"
118
173
  required_rubygems_version: !ruby/object:Gem::Requirement
174
+ none: false
119
175
  requirements:
120
176
  - - ">="
121
177
  - !ruby/object:Gem::Version
178
+ hash: 23
122
179
  segments:
123
180
  - 1
124
181
  - 3
@@ -127,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
184
  requirements: []
128
185
 
129
186
  rubyforge_project: studio_api
130
- rubygems_version: 1.3.6
187
+ rubygems_version: 1.5.2
131
188
  signing_key:
132
189
  specification_version: 3
133
190
  summary: Intuitive ruby bindings to Studio Api Interface.