rhc-rest 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/COPYRIGHT +1 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +11 -0
  4. data/Rakefile +1 -0
  5. data/bin/sample-usage.rb +124 -0
  6. data/doc/Gemfile.html +119 -0
  7. data/doc/Rakefile.html +117 -0
  8. data/doc/Rhc/Rest/Application.html +571 -0
  9. data/doc/Rhc/Rest/BaseException.html +226 -0
  10. data/doc/Rhc/Rest/Cartridge.html +475 -0
  11. data/doc/Rhc/Rest/Client.html +609 -0
  12. data/doc/Rhc/Rest/ClientErrorException.html +167 -0
  13. data/doc/Rhc/Rest/Domain.html +457 -0
  14. data/doc/Rhc/Rest/Key.html +378 -0
  15. data/doc/Rhc/Rest/RequestDeniedException.html +166 -0
  16. data/doc/Rhc/Rest/ResourceAccessException.html +161 -0
  17. data/doc/Rhc/Rest/ResourceNotFoundException.html +166 -0
  18. data/doc/Rhc/Rest/ServerErrorException.html +161 -0
  19. data/doc/Rhc/Rest/ServiceUnavailableException.html +167 -0
  20. data/doc/Rhc/Rest/UnAuthorizedException.html +167 -0
  21. data/doc/Rhc/Rest/User.html +354 -0
  22. data/doc/Rhc/Rest/ValidationException.html +255 -0
  23. data/doc/Rhc/Rest.html +410 -0
  24. data/doc/Rhc.html +329 -0
  25. data/doc/created.rid +13 -0
  26. data/doc/doc/created.rid +0 -0
  27. data/doc/images/add.png +0 -0
  28. data/doc/images/brick.png +0 -0
  29. data/doc/images/brick_link.png +0 -0
  30. data/doc/images/bug.png +0 -0
  31. data/doc/images/bullet_black.png +0 -0
  32. data/doc/images/bullet_toggle_minus.png +0 -0
  33. data/doc/images/bullet_toggle_plus.png +0 -0
  34. data/doc/images/date.png +0 -0
  35. data/doc/images/delete.png +0 -0
  36. data/doc/images/find.png +0 -0
  37. data/doc/images/loadingAnimation.gif +0 -0
  38. data/doc/images/macFFBgHack.png +0 -0
  39. data/doc/images/package.png +0 -0
  40. data/doc/images/page_green.png +0 -0
  41. data/doc/images/page_white_text.png +0 -0
  42. data/doc/images/page_white_width.png +0 -0
  43. data/doc/images/plugin.png +0 -0
  44. data/doc/images/ruby.png +0 -0
  45. data/doc/images/tag_blue.png +0 -0
  46. data/doc/images/tag_green.png +0 -0
  47. data/doc/images/transparent.png +0 -0
  48. data/doc/images/wrench.png +0 -0
  49. data/doc/images/wrench_orange.png +0 -0
  50. data/doc/images/zoom.png +0 -0
  51. data/doc/index.html +112 -0
  52. data/doc/js/darkfish.js +153 -0
  53. data/doc/js/jquery.js +18 -0
  54. data/doc/js/navigation.js +142 -0
  55. data/doc/js/search.js +94 -0
  56. data/doc/js/search_index.js +1 -0
  57. data/doc/js/searcher.js +228 -0
  58. data/doc/rdoc.css +543 -0
  59. data/doc/table_of_contents.html +198 -0
  60. data/lib/rhc-rest/application.rb +81 -0
  61. data/lib/rhc-rest/cartridge.rb +64 -0
  62. data/lib/rhc-rest/client.rb +122 -0
  63. data/lib/rhc-rest/domain.rb +56 -0
  64. data/lib/rhc-rest/exceptions/exceptions.rb +73 -0
  65. data/lib/rhc-rest/key.rb +34 -0
  66. data/lib/rhc-rest/user.rb +41 -0
  67. data/lib/rhc-rest/version.rb +5 -0
  68. data/lib/rhc-rest.rb +155 -0
  69. data/rhc-rest.gemspec +26 -0
  70. data/rhc-rest.spec +79 -0
  71. metadata +162 -0
@@ -0,0 +1,198 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>Table of Contents - RDoc Documentation</title>
8
+
9
+ <link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "./";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="./js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="./js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="./js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="./js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="./js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="./js/darkfish.js"></script>
21
+
22
+
23
+ <body class="indexpage">
24
+ <h1>Table of Contents - RDoc Documentation</h1>
25
+
26
+ <h2>Pages</h2>
27
+ <ul>
28
+ <li class="file">
29
+ <a href="Gemfile.html">Gemfile</a>
30
+ </li>
31
+ <li class="file">
32
+ <a href="Rakefile.html">Rakefile</a>
33
+ </li>
34
+
35
+ </ul>
36
+
37
+ <h2 id="classes">Classes/Modules</h2>
38
+ <ul>
39
+ <li class="module">
40
+ <a href="Rhc.html">Rhc</a>
41
+ </li>
42
+ <li class="module">
43
+ <a href="Rhc/Rest.html">Rhc::Rest</a>
44
+ </li>
45
+ <li class="class">
46
+ <a href="Rhc/Rest/Application.html">Rhc::Rest::Application</a>
47
+ </li>
48
+ <li class="class">
49
+ <a href="Rhc/Rest/BaseException.html">Rhc::Rest::BaseException</a>
50
+ </li>
51
+ <li class="class">
52
+ <a href="Rhc/Rest/Cartridge.html">Rhc::Rest::Cartridge</a>
53
+ </li>
54
+ <li class="class">
55
+ <a href="Rhc/Rest/Client.html">Rhc::Rest::Client</a>
56
+ </li>
57
+ <li class="class">
58
+ <a href="Rhc/Rest/ClientErrorException.html">Rhc::Rest::ClientErrorException</a>
59
+ </li>
60
+ <li class="class">
61
+ <a href="Rhc/Rest/Domain.html">Rhc::Rest::Domain</a>
62
+ </li>
63
+ <li class="class">
64
+ <a href="Rhc/Rest/Key.html">Rhc::Rest::Key</a>
65
+ </li>
66
+ <li class="class">
67
+ <a href="Rhc/Rest/RequestDeniedException.html">Rhc::Rest::RequestDeniedException</a>
68
+ </li>
69
+ <li class="class">
70
+ <a href="Rhc/Rest/ResourceAccessException.html">Rhc::Rest::ResourceAccessException</a>
71
+ </li>
72
+ <li class="class">
73
+ <a href="Rhc/Rest/ResourceNotFoundException.html">Rhc::Rest::ResourceNotFoundException</a>
74
+ </li>
75
+ <li class="class">
76
+ <a href="Rhc/Rest/ServerErrorException.html">Rhc::Rest::ServerErrorException</a>
77
+ </li>
78
+ <li class="class">
79
+ <a href="Rhc/Rest/ServiceUnavailableException.html">Rhc::Rest::ServiceUnavailableException</a>
80
+ </li>
81
+ <li class="class">
82
+ <a href="Rhc/Rest/UnAuthorizedException.html">Rhc::Rest::UnAuthorizedException</a>
83
+ </li>
84
+ <li class="class">
85
+ <a href="Rhc/Rest/User.html">Rhc::Rest::User</a>
86
+ </li>
87
+ <li class="class">
88
+ <a href="Rhc/Rest/ValidationException.html">Rhc::Rest::ValidationException</a>
89
+ </li>
90
+
91
+ </ul>
92
+
93
+ <h2 id="methods">Methods</h2>
94
+ <ul>
95
+
96
+ <li class="method"><a href="Rhc/Rest/Key.html#method-c-new">::new &mdash; Rhc::Rest::Key</a>
97
+
98
+ <li class="method"><a href="Rhc/Rest/ValidationException.html#method-c-new">::new &mdash; Rhc::Rest::ValidationException</a>
99
+
100
+ <li class="method"><a href="Rhc/Rest/Application.html#method-c-new">::new &mdash; Rhc::Rest::Application</a>
101
+
102
+ <li class="method"><a href="Rhc/Rest/Cartridge.html#method-c-new">::new &mdash; Rhc::Rest::Cartridge</a>
103
+
104
+ <li class="method"><a href="Rhc/Rest/Domain.html#method-c-new">::new &mdash; Rhc::Rest::Domain</a>
105
+
106
+ <li class="method"><a href="Rhc/Rest/Client.html#method-c-new">::new &mdash; Rhc::Rest::Client</a>
107
+
108
+ <li class="method"><a href="Rhc/Rest/BaseException.html#method-c-new">::new &mdash; Rhc::Rest::BaseException</a>
109
+
110
+ <li class="method"><a href="Rhc/Rest/User.html#method-c-new">::new &mdash; Rhc::Rest::User</a>
111
+
112
+ <li class="method"><a href="Rhc/Rest/Domain.html#method-i-add_application">#add_application &mdash; Rhc::Rest::Domain</a>
113
+
114
+ <li class="method"><a href="Rhc/Rest/Application.html#method-i-add_cartridge">#add_cartridge &mdash; Rhc::Rest::Application</a>
115
+
116
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-add_domain">#add_domain &mdash; Rhc::Rest::Client</a>
117
+
118
+ <li class="method"><a href="Rhc/Rest/User.html#method-i-add_key">#add_key &mdash; Rhc::Rest::User</a>
119
+
120
+ <li class="method"><a href="Rhc/Rest/Domain.html#method-i-applications">#applications &mdash; Rhc::Rest::Domain</a>
121
+
122
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-cartridges">#cartridges &mdash; Rhc::Rest::Client</a>
123
+
124
+ <li class="method"><a href="Rhc/Rest/Application.html#method-i-cartridges">#cartridges &mdash; Rhc::Rest::Application</a>
125
+
126
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-close">#close &mdash; Rhc::Rest::Client</a>
127
+
128
+ <li class="method"><a href="Rhc/Rest/Key.html#method-i-delete">#delete &mdash; Rhc::Rest::Key</a>
129
+
130
+ <li class="method"><a href="Rhc/Rest/Domain.html#method-i-delete">#delete &mdash; Rhc::Rest::Domain</a>
131
+
132
+ <li class="method"><a href="Rhc/Rest/Application.html#method-i-delete">#delete &mdash; Rhc::Rest::Application</a>
133
+
134
+ <li class="method"><a href="Rhc/Rest/Cartridge.html#method-i-delete">#delete &mdash; Rhc::Rest::Cartridge</a>
135
+
136
+ <li class="method"><a href="Rhc/Rest/Cartridge.html#method-i-destroy">#destroy &mdash; Rhc::Rest::Cartridge</a>
137
+
138
+ <li class="method"><a href="Rhc/Rest/Application.html#method-i-destroy">#destroy &mdash; Rhc::Rest::Application</a>
139
+
140
+ <li class="method"><a href="Rhc/Rest/Domain.html#method-i-destroy">#destroy &mdash; Rhc::Rest::Domain</a>
141
+
142
+ <li class="method"><a href="Rhc/Rest/Key.html#method-i-destroy">#destroy &mdash; Rhc::Rest::Key</a>
143
+
144
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-domains">#domains &mdash; Rhc::Rest::Client</a>
145
+
146
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-find_application">#find_application &mdash; Rhc::Rest::Client</a>
147
+
148
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-find_cartridge">#find_cartridge &mdash; Rhc::Rest::Client</a>
149
+
150
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-find_domain">#find_domain &mdash; Rhc::Rest::Client</a>
151
+
152
+ <li class="method"><a href="Rhc/Rest/User.html#method-i-find_key">#find_key &mdash; Rhc::Rest::User</a>
153
+
154
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-find_key">#find_key &mdash; Rhc::Rest::Client</a>
155
+
156
+ <li class="method"><a href="Rhc/Rest/User.html#method-i-keys">#keys &mdash; Rhc::Rest::User</a>
157
+
158
+ <li class="method"><a href="Rhc/Rest.html#method-i-logger">#logger &mdash; Rhc::Rest</a>
159
+
160
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-logout">#logout &mdash; Rhc::Rest::Client</a>
161
+
162
+ <li class="method"><a href="Rhc/Rest.html#method-i-parse_response">#parse_response &mdash; Rhc::Rest</a>
163
+
164
+ <li class="method"><a href="Rhc/Rest.html#method-i-process_error_response">#process_error_response &mdash; Rhc::Rest</a>
165
+
166
+ <li class="method"><a href="Rhc/Rest/Cartridge.html#method-i-reload">#reload &mdash; Rhc::Rest::Cartridge</a>
167
+
168
+ <li class="method"><a href="Rhc/Rest/Cartridge.html#method-i-restart">#restart &mdash; Rhc::Rest::Cartridge</a>
169
+
170
+ <li class="method"><a href="Rhc/Rest/Application.html#method-i-restart">#restart &mdash; Rhc::Rest::Application</a>
171
+
172
+ <li class="method"><a href="Rhc/Rest/Domain.html#method-i-save">#save &mdash; Rhc::Rest::Domain</a>
173
+
174
+ <li class="method"><a href="Rhc/Rest.html#method-i-send">#send &mdash; Rhc::Rest</a>
175
+
176
+ <li class="method"><a href="Rhc/Rest/Application.html#method-i-start">#start &mdash; Rhc::Rest::Application</a>
177
+
178
+ <li class="method"><a href="Rhc/Rest/Cartridge.html#method-i-start">#start &mdash; Rhc::Rest::Cartridge</a>
179
+
180
+ <li class="method"><a href="Rhc/Rest/Cartridge.html#method-i-stop">#stop &mdash; Rhc::Rest::Cartridge</a>
181
+
182
+ <li class="method"><a href="Rhc/Rest/Application.html#method-i-stop">#stop &mdash; Rhc::Rest::Application</a>
183
+
184
+ <li class="method"><a href="Rhc/Rest/Domain.html#method-i-update">#update &mdash; Rhc::Rest::Domain</a>
185
+
186
+ <li class="method"><a href="Rhc/Rest/Key.html#method-i-update">#update &mdash; Rhc::Rest::Key</a>
187
+
188
+ <li class="method"><a href="Rhc/Rest/Client.html#method-i-user">#user &mdash; Rhc::Rest::Client</a>
189
+
190
+ </ul>
191
+
192
+
193
+ <footer id="validator-badges">
194
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
195
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
196
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
197
+ </footer>
198
+
@@ -0,0 +1,81 @@
1
+
2
+ module Rhc
3
+ module Rest
4
+ class Application
5
+ include Rest
6
+ attr_reader :domain_id, :name, :creation_time, :uuid, :aliases, :server_identity
7
+ def initialize(args)
8
+ @domain_id = args[:domain_id] || args["domain_id"]
9
+ @name = args[:name] || args["name"]
10
+ @creation_time = args[:creation_time] || args["creation_time"]
11
+ @uuid = args[:uuid] || args["uuid"]
12
+ @aliases = args[:aliases] || args["aliases"]
13
+ @server_identity = args[:server_identity] || args["server_identity"]
14
+ @links = args[:links] || args["links"]
15
+ end
16
+
17
+ #Add Cartridge
18
+ def add_cartridge(name)
19
+ logger.debug "Adding cartridge #{name}"
20
+ url = @@end_point + @links['ADD_CARTRIDGE']['href']
21
+ method = @links['ADD_CARTRIDGE']['method']
22
+ payload = {:name => name}
23
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
24
+ return send(request)
25
+ end
26
+
27
+ #Get all Cartridge for this applications
28
+ def cartridges
29
+ logger.debug "Getting all cartridges for application #{self.name}"
30
+ url = @@end_point + @links['LIST_CARTRIDGES']['href']
31
+ method = @links['LIST_CARTRIDGES']['method']
32
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
33
+ return send(request)
34
+ end
35
+
36
+ #Start Application
37
+ def start
38
+ logger.debug "Starting application #{self.name}"
39
+ url = @@end_point + @links['START']['href']
40
+ method = @links['START']['method']
41
+ payload = {:event=> "start"}
42
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
43
+ return send(request)
44
+ end
45
+
46
+ #Stop Application
47
+ def stop(force=false)
48
+ logger.debug "Stopping application #{self.name} force-#{force}"
49
+ url = @@end_point + @links['STOP']['href']
50
+ method = @links['STOP']['method']
51
+ if force
52
+ payload = {:event=> "force-stop"}
53
+ else
54
+ payload = {:event=> "stop"}
55
+ end
56
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
57
+ return send(request)
58
+ end
59
+
60
+ #Restart Application
61
+ def restart
62
+ logger.debug "Restarting application #{self.name}"
63
+ url = @@end_point + @links['RESTART']['href']
64
+ method = @links['RESTART']['method']
65
+ payload = {:event=> "restart"}
66
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
67
+ return send(request)
68
+ end
69
+
70
+ #Delete Application
71
+ def destroy
72
+ logger.debug "Deleting application #{self.name}"
73
+ url = @@end_point + @links['DELETE']['href']
74
+ method = @links['DELETE']['method']
75
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
76
+ return send(request)
77
+ end
78
+ alias :delete :destroy
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,64 @@
1
+ module Rhc
2
+ module Rest
3
+ class Cartridge
4
+ include Rest
5
+ attr_reader :type, :name
6
+ def initialize(args)
7
+ @name = args[:name] || args["name"]
8
+ @type = args[:type] || args["type"]
9
+ @links = args[:links] || args["links"]
10
+ end
11
+
12
+ #Start Cartridge
13
+ def start
14
+ logger.debug "Starting cartridge #{self.name}"
15
+ url = @@end_point + @links['START']['href']
16
+ method = @links['START']['method']
17
+ payload = {:event=> "start"}
18
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
19
+ return send(request)
20
+ end
21
+
22
+ #Stop Cartridge
23
+ def stop()
24
+ logger.debug "Stopping cartridge #{self.name}"
25
+ url = @@end_point + @links['STOP']['href']
26
+ method = @links['STOP']['method']
27
+ payload = {:event=> "stop"}
28
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
29
+ return send(request)
30
+ end
31
+
32
+ #Restart Cartridge
33
+ def restart
34
+ logger.debug "Restarting cartridge #{self.name}"
35
+ url = @@end_point + @links['RESTART']['href']
36
+ method = @links['RESTART']['method']
37
+ payload = {:event=> "restart"}
38
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
39
+ return send(request)
40
+ end
41
+
42
+ #Reload Cartridge
43
+ def reload
44
+ logger.debug "Reloading cartridge #{self.name}"
45
+ url = @@end_point + @links['RESTART']['href']
46
+ method = @links['RESTART']['method']
47
+ payload = {:event=> "reload"}
48
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
49
+ return send(request)
50
+ end
51
+
52
+ #Delete Cartridge
53
+ def destroy
54
+ logger.debug "Deleting cartridge #{self.name}"
55
+ url = @@end_point + @links['DELETE']['href']
56
+ method = @links['DELETE']['method']
57
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
58
+ return send(request)
59
+ end
60
+ alias :delete :destroy
61
+ alias :delete :destroy
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,122 @@
1
+ require 'base64'
2
+
3
+ module Rhc
4
+ module Rest
5
+ class Client
6
+ include Rest
7
+ def initialize(end_point, username, password)
8
+ @@end_point = end_point
9
+ credentials = Base64.encode64("#{username}:#{password}")
10
+ @@headers["Authorization"] = "Basic #{credentials}"
11
+ #first get the API
12
+ request = RestClient::Request.new(:url => @@end_point + "/api", :method => :get, :headers => @@headers)
13
+ begin
14
+ response = request.execute
15
+ result = JSON.parse(response)
16
+ @links = send(request)
17
+ rescue RestClient::ExceptionWithResponse => e
18
+ logger.error "Failed to get API #{e.response}"
19
+ rescue Exception => e
20
+ raise ResourceAccessException.new("Resource could not be accessed:#{e.message}")
21
+ end
22
+ end
23
+
24
+ #Add Domain
25
+ def add_domain(namespace)
26
+ logger.debug "Adding domain #{namespace}"
27
+ url = @@end_point + @links['ADD_DOMAIN']['href']
28
+ method = @links['ADD_DOMAIN']['method']
29
+ payload = {:namespace => namespace}
30
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
31
+ return send(request)
32
+ end
33
+
34
+ #Get all Domain
35
+ def domains
36
+ logger.debug "Getting all domains"
37
+ url = @@end_point + @links['LIST_DOMAINS']['href']
38
+ method = @links['LIST_DOMAINS']['method']
39
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
40
+ return send(request)
41
+ end
42
+
43
+ #Find Domain by namesapce
44
+ def find_domain(namespace)
45
+ logger.debug "Finding domain #{namespace}"
46
+ filtered = Array.new
47
+ domains.each do |domain|
48
+ #TODO do a regex caomparison
49
+ if domain.namespace == namespace
50
+ filtered.push(domain)
51
+ end
52
+ end
53
+ return filtered
54
+ end
55
+
56
+ #Find Application by name
57
+ def find_application(name)
58
+ logger.debug "Finding application #{name}"
59
+ filtered = Array.new
60
+ domains.each do |domain|
61
+ #TODO do a regex caomparison
62
+ domain.applications.each do |app|
63
+ if app.name == name
64
+ filtered.push(app)
65
+ end
66
+ end
67
+ end
68
+ return filtered
69
+ end
70
+
71
+ #Get all Cartridge
72
+ def cartridges
73
+ logger.debug "Getting all cartridges"
74
+ url = @@end_point + @links['LIST_CARTRIDGES']['href']
75
+ method = @links['LIST_CARTRIDGES']['method']
76
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
77
+ return send(request)
78
+ end
79
+
80
+ #Find Cartridge by name
81
+ def find_cartridge(name)
82
+ logger.debug "Finding cartridge #{name}"
83
+ filtered = Array.new
84
+ cartridges.each do |cart|
85
+ #TODO do a regex caomparison
86
+ if cart.name == name
87
+ filtered.push(cart)
88
+ end
89
+ end
90
+ return filtered
91
+ end
92
+
93
+ #Get User info
94
+ def user
95
+ url = @@end_point + @links['GET_USER']['href']
96
+ method = @links['GET_USER']['method']
97
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
98
+ return send(request)
99
+ end
100
+
101
+ #find Key by name
102
+ def find_key(name)
103
+ logger.debug "Finding key #{name}"
104
+ filtered = Array.new
105
+ user.keys.each do |key|
106
+ #TODO do a regex caomparison
107
+ if key.name == name
108
+ filtered.push(key)
109
+ end
110
+ end
111
+ return filtered
112
+ end
113
+
114
+ def logout
115
+ #TODO logout
116
+ logger.debug "Logout/Close client"
117
+ end
118
+ alias :close :logout
119
+ end
120
+
121
+ end
122
+ end
@@ -0,0 +1,56 @@
1
+ module Rhc
2
+ module Rest
3
+ class Domain
4
+ include Rest
5
+ attr_reader :namespace
6
+ def initialize(args)
7
+ @namespace = args[:namespace] || args["namespace"]
8
+ @links = args[:links] || args["links"]
9
+ end
10
+
11
+ #Add Application to this domain
12
+ def add_application(name, cartridge, scale=false)
13
+ logger.debug "Adding application #{name} to domain #{self.namespace}"
14
+ url = @@end_point + @links['ADD_APPLICATION']['href']
15
+ method = @links['ADD_APPLICATION']['method']
16
+ payload = {:name => name, :cartridge => cartridge}
17
+ if scale
18
+ payload[:scale] = true
19
+ end
20
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
21
+ return send(request)
22
+ end
23
+
24
+ #Get all Application for this domain
25
+ def applications
26
+ logger.debug "Getting all applications for domain #{self.namespace}"
27
+ url = @@end_point + @links['LIST_APPLICATIONS']['href']
28
+ method = @links['LIST_APPLICATIONS']['method']
29
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
30
+ return send(request)
31
+ end
32
+
33
+ #Update Domain
34
+ def update(new_namespace)
35
+ logger.debug "Updating domain #{self.namespace} to #{new_namespace}"
36
+ url = @@end_point + @links['UPDATE']['href']
37
+ method = @links['UPDATE']['method']
38
+ payload = {:namespace => new_namespace}
39
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
40
+ return send(request)
41
+ end
42
+ alias :save :update
43
+
44
+ #Delete Domain
45
+ def destroy(force=false)
46
+ logger.debug "Deleting domain #{self.namespace}"
47
+ url = @@end_point + @links['DELETE']['href']
48
+ method = @links['DELETE']['method']
49
+ payload = {:force => force}
50
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
51
+ return send(request)
52
+ end
53
+ alias :delete :destroy
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,73 @@
1
+ module Rhc
2
+ module Rest
3
+ class BaseException < RuntimeError
4
+ attr_reader :code
5
+ def initialize(message=nil, code=nil)
6
+ super(message)
7
+ @code = code
8
+ end
9
+ end
10
+
11
+ #Exceptions thrown in case of an HTTP 5xx is received.
12
+ class ServerErrorException < Rhc::Rest::BaseException; end
13
+
14
+ #Exceptions thrown in case of an HTTP 503 is received.
15
+ #
16
+ #503 Service Unavailable
17
+ #
18
+ #The server is currently unable to handle the request due to a temporary
19
+ #overloading or maintenance of the server. The implication is that this
20
+ #is a temporary condition which will be alleviated after some delay.
21
+
22
+ class ServiceUnavailableException < Rhc::Rest::ServerErrorException; end
23
+
24
+ #Exceptions thrown in case of an HTTP 4xx is received with the exception
25
+ #of 401, 403, 403 and 422 where a more sepcific exception is thrown
26
+ #
27
+ #HTTP Error Codes 4xx
28
+ #
29
+ #The 4xx class of status code is intended for cases in which the client
30
+ #seems to have errored.
31
+
32
+
33
+ class ClientErrorException < Rhc::Rest::BaseException; end
34
+
35
+ #Exceptions thrown in case of an HTTP 404 is received.
36
+ #
37
+ #404 Not Found
38
+ #
39
+ #The server has not found anything matching the Request-URI or the
40
+ #requested resource does not exist
41
+ class ResourceNotFoundException < Rhc::Rest::ClientErrorException; end
42
+
43
+ #Exceptions thrown in case of an HTTP 422 is received.
44
+ class ValidationException < Rhc::Rest::ClientErrorException
45
+ attr_reader :field
46
+ def initialize(message, field=nil)
47
+ super(message)
48
+ @field = field
49
+ end
50
+ end
51
+
52
+ #Exceptions thrown in case of an HTTP 403 is received.
53
+ #
54
+ #403 Forbidden
55
+ #
56
+ #The server understood the request, but is refusing to fulfill it.
57
+ #Authorization will not help and the request SHOULD NOT be repeated.
58
+ class RequestDeniedException < Rhc::Rest::ClientErrorException; end
59
+
60
+ #Exceptions thrown in case of an HTTP 401 is received.
61
+ #
62
+ #401 Unauthorized
63
+ #
64
+ #The request requires user authentication. If the request already
65
+ #included Authorization credentials, then the 401 response indicates
66
+ #that authorization has been refused for those credentials.
67
+ class UnAuthorizedException < Rhc::Rest::ClientErrorException; end
68
+
69
+ #I/O Exceptions Connection timeouts, Unreachable host, etc
70
+ class ResourceAccessException < Rhc::Rest::BaseException; end
71
+
72
+ end
73
+ end
@@ -0,0 +1,34 @@
1
+ module Rhc
2
+ module Rest
3
+ class Key
4
+ include Rest
5
+ attr_reader :name, :type, :content
6
+ def initialize(args)
7
+ @name = args[:name] || args["name"]
8
+ @type = args[:type] || args["type"]
9
+ @content = args[:content] || args["content"]
10
+ @links = args[:links] || args["links"]
11
+ end
12
+
13
+ # Update Key
14
+ def update(type, content)
15
+ logger.debug "Updating key #{self.name}"
16
+ url = @@end_point + @links['UPDATE']['href']
17
+ method = @links['UPDATE']['method']
18
+ payload = {:type => type, :content => content}
19
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
20
+ return send(request)
21
+ end
22
+
23
+ #Delete Key
24
+ def destroy
25
+ logger.debug "Deleting key #{self.name}"
26
+ url = @@end_point + @links['DELETE']['href']
27
+ method = @links['DELETE']['method']
28
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
29
+ return send(request)
30
+ end
31
+ alias :delete :destroy
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,41 @@
1
+ module Rhc
2
+ module Rest
3
+ class User
4
+ include Rest
5
+ attr_reader :login
6
+ def initialize(args)
7
+ @login = args[:login] || args["login"]
8
+ @links = args[:links] || args["links"]
9
+ end
10
+
11
+ #Add Key for this user
12
+ def add_key(name, content, type)
13
+ url = @@end_point + @links['ADD_KEY']['href']
14
+ method = @links['ADD_KEY']['method']
15
+ payload = {:name => name, :type => type, :content => content}
16
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers, :payload => payload)
17
+ return send(request)
18
+ end
19
+
20
+ #Get all Key for this user
21
+ def keys
22
+ url = @@end_point + @links['LIST_KEYS']['href']
23
+ method = @links['LIST_KEYS']['method']
24
+ request = RestClient::Request.new(:url => url, :method => method, :headers => @@headers)
25
+ return send(request)
26
+ end
27
+
28
+ #Find Key by name
29
+ def find_key(name)
30
+ filtered = Array.new
31
+ keys.each do |key|
32
+ #TODO do a regex caomparison
33
+ if key.name == name
34
+ filtered.push(key)
35
+ end
36
+ end
37
+ return filtered
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,5 @@
1
+ module Rhc
2
+ module Rest
3
+ VERSION = "0.0.1"
4
+ end
5
+ end