Revision 94497dd1
b/doc/rapi.rst | ||
---|---|---|
1326 | 1326 |
|
1327 | 1327 |
It supports the bool ``force`` argument. |
1328 | 1328 |
|
1329 |
|
|
1330 |
``/2/nodes/[node_name]/modify`` |
|
1331 |
+++++++++++++++++++++++++++++++++ |
|
1332 |
|
|
1333 |
Modifies the parameters of a node. Supports the following commands: |
|
1334 |
``POST``. |
|
1335 |
|
|
1336 |
``POST`` |
|
1337 |
~~~~~~~ |
|
1338 |
|
|
1339 |
Returns a job ID. |
|
1340 |
|
|
1341 |
Body parameters: |
|
1342 |
|
|
1343 |
.. opcode_params:: OP_NODE_SET_PARAMS |
|
1344 |
:exclude: node_name |
|
1345 |
|
|
1346 |
Job result: |
|
1347 |
|
|
1348 |
.. opcode_result:: OP_NODE_SET_PARAMS |
|
1349 |
|
|
1350 |
|
|
1329 | 1351 |
``/2/nodes/[node_name]/storage`` |
1330 | 1352 |
++++++++++++++++++++++++++++++++ |
1331 | 1353 |
|
b/lib/rapi/client.py | ||
---|---|---|
1449 | 1449 |
("/%s/nodes/%s/role" % |
1450 | 1450 |
(GANETI_RAPI_VERSION, node)), query, role) |
1451 | 1451 |
|
1452 |
def ModifyNode(self, group, **kwargs): |
|
1453 |
"""Modifies a node. |
|
1454 |
|
|
1455 |
More details for parameters can be found in the RAPI documentation. |
|
1456 |
|
|
1457 |
@type group: string |
|
1458 |
@param group: Node name |
|
1459 |
@rtype: string |
|
1460 |
@return: job id |
|
1461 |
|
|
1462 |
""" |
|
1463 |
return self._SendRequest(HTTP_POST, |
|
1464 |
("/%s/nodes/%s/modify" % |
|
1465 |
(GANETI_RAPI_VERSION, group)), None, kwargs) |
|
1466 |
|
|
1452 | 1467 |
def GetNodeStorageUnits(self, node, storage_type, output_fields): |
1453 | 1468 |
"""Gets the storage units for a node. |
1454 | 1469 |
|
b/lib/rapi/connector.py | ||
---|---|---|
177 | 177 |
rlib2.R_2_nodes_name_evacuate, |
178 | 178 |
re.compile(r"^/2/nodes/(%s)/migrate$" % node_name_pattern): |
179 | 179 |
rlib2.R_2_nodes_name_migrate, |
180 |
re.compile(r"^/2/nodes/(%s)/modify$" % node_name_pattern): |
|
181 |
rlib2.R_2_nodes_name_modify, |
|
180 | 182 |
re.compile(r"^/2/nodes/(%s)/storage$" % node_name_pattern): |
181 | 183 |
rlib2.R_2_nodes_name_storage, |
182 | 184 |
re.compile(r"^/2/nodes/(%s)/storage/modify$" % node_name_pattern): |
b/lib/rapi/rlib2.py | ||
---|---|---|
497 | 497 |
return baserlib.SubmitJob([op]) |
498 | 498 |
|
499 | 499 |
|
500 |
class R_2_nodes_name_modify(baserlib.R_Generic): |
|
501 |
"""/2/nodes/[node_name]/modify resource. |
|
502 |
|
|
503 |
""" |
|
504 |
def POST(self): |
|
505 |
"""Changes parameters of a node. |
|
506 |
|
|
507 |
@return: a job id |
|
508 |
|
|
509 |
""" |
|
510 |
baserlib.CheckType(self.request_body, dict, "Body contents") |
|
511 |
|
|
512 |
op = baserlib.FillOpcode(opcodes.OpNodeSetParams, self.request_body, { |
|
513 |
"instance_name": self.items[0], |
|
514 |
}) |
|
515 |
|
|
516 |
return baserlib.SubmitJob([op]) |
|
517 |
|
|
518 |
|
|
500 | 519 |
class R_2_nodes_name_storage(baserlib.R_Generic): |
501 | 520 |
"""/2/nodes/[node_name]/storage resource. |
502 | 521 |
|
b/test/ganeti.rapi.client_unittest.py | ||
---|---|---|
973 | 973 |
self.assertQuery("force", ["1"]) |
974 | 974 |
self.assertEqual("\"master-candidate\"", self.rapi.GetLastRequestData()) |
975 | 975 |
|
976 |
def testModifyNode(self): |
|
977 |
self.rapi.AddResponse("3783") |
|
978 |
job_id = self.client.ModifyNode("node16979.example.com", drained=True) |
|
979 |
self.assertEqual(job_id, 3783) |
|
980 |
self.assertHandler(rlib2.R_2_nodes_name_modify) |
|
981 |
self.assertItems(["node16979.example.com"]) |
|
982 |
self.assertEqual(self.rapi.CountPending(), 0) |
|
983 |
|
|
976 | 984 |
def testGetNodeStorageUnits(self): |
977 | 985 |
self.rapi.AddResponse("42") |
978 | 986 |
self.assertEqual(42, |
Also available in: Unified diff