Revision 7eac4a4d
b/doc/rapi.rst | ||
---|---|---|
280 | 280 |
Redistribute configuration to all nodes. The result will be a job id. |
281 | 281 |
|
282 | 282 |
|
283 |
``/2/features`` |
|
284 |
+++++++++++++++ |
|
285 |
|
|
286 |
``GET`` |
|
287 |
~~~~~~~ |
|
288 |
|
|
289 |
Returns a list of features supported by the RAPI server. Available |
|
290 |
features: |
|
291 |
|
|
292 |
``instance-create-reqv1`` |
|
293 |
Instance creation request data version 1 supported. |
|
294 |
|
|
295 |
|
|
283 | 296 |
``/2/instances`` |
284 | 297 |
++++++++++++++++ |
285 | 298 |
|
b/lib/rapi/client.py | ||
---|---|---|
39 | 39 |
HTTP_PUT = "PUT" |
40 | 40 |
HTTP_POST = "POST" |
41 | 41 |
HTTP_OK = 200 |
42 |
HTTP_NOT_FOUND = 404 |
|
42 | 43 |
HTTP_APP_JSON = "application/json" |
43 | 44 |
|
44 | 45 |
REPLACE_DISK_PRI = "replace_on_primary" |
... | ... | |
433 | 434 |
""" |
434 | 435 |
return self._SendRequest(HTTP_GET, "/version", None, None) |
435 | 436 |
|
437 |
def GetFeatures(self): |
|
438 |
"""Gets the list of optional features supported by RAPI server. |
|
439 |
|
|
440 |
@rtype: list |
|
441 |
@return: List of optional features |
|
442 |
|
|
443 |
""" |
|
444 |
try: |
|
445 |
return self._SendRequest(HTTP_GET, "/%s/features" % GANETI_RAPI_VERSION, |
|
446 |
None, None) |
|
447 |
except GanetiApiError, err: |
|
448 |
# Older RAPI servers don't support this resource |
|
449 |
if err.code == HTTP_NOT_FOUND: |
|
450 |
return [] |
|
451 |
|
|
452 |
raise |
|
453 |
|
|
436 | 454 |
def GetOperatingSystems(self): |
437 | 455 |
"""Gets the Operating Systems running in the Ganeti cluster. |
438 | 456 |
|
b/lib/rapi/connector.py | ||
---|---|---|
216 | 216 |
"/2/info": rlib2.R_2_info, |
217 | 217 |
"/2/os": rlib2.R_2_os, |
218 | 218 |
"/2/redistribute-config": rlib2.R_2_redist_config, |
219 |
"/2/features": rlib2.R_2_features, |
|
219 | 220 |
} |
220 | 221 |
|
221 | 222 |
|
b/lib/rapi/rlib2.py | ||
---|---|---|
118 | 118 |
return client.QueryClusterInfo() |
119 | 119 |
|
120 | 120 |
|
121 |
class R_2_features(baserlib.R_Generic): |
|
122 |
"""/2/features resource. |
|
123 |
|
|
124 |
""" |
|
125 |
@staticmethod |
|
126 |
def GET(): |
|
127 |
"""Returns list of optional RAPI features implemented. |
|
128 |
|
|
129 |
""" |
|
130 |
return [] |
|
131 |
|
|
132 |
|
|
121 | 133 |
class R_2_os(baserlib.R_Generic): |
122 | 134 |
"""/2/os resource. |
123 | 135 |
|
b/test/ganeti.rapi.client_unittest.py | ||
---|---|---|
190 | 190 |
self.assertEqual(2, self.client.GetVersion()) |
191 | 191 |
self.assertHandler(rlib2.R_version) |
192 | 192 |
|
193 |
def testGetFeatures(self): |
|
194 |
for features in [[], ["foo", "bar", "baz"]]: |
|
195 |
self.rapi.AddResponse(serializer.DumpJson(features)) |
|
196 |
self.assertEqual(features, self.client.GetFeatures()) |
|
197 |
self.assertHandler(rlib2.R_2_features) |
|
198 |
|
|
193 | 199 |
def testGetOperatingSystems(self): |
194 | 200 |
self.rapi.AddResponse("[\"beos\"]") |
195 | 201 |
self.assertEqual(["beos"], self.client.GetOperatingSystems()) |
Also available in: Unified diff