Revision d56e7dc7
b/doc/rapi.rst | ||
---|---|---|
649 | 649 |
Whether a previously failed migration should be cleaned up. |
650 | 650 |
|
651 | 651 |
|
652 |
``/2/instances/[instance_name]/rename`` |
|
653 |
++++++++++++++++++++++++++++++++++++++++ |
|
654 |
|
|
655 |
Renames an instance. |
|
656 |
|
|
657 |
Supports the following commands: ``PUT``. |
|
658 |
|
|
659 |
``PUT`` |
|
660 |
~~~~~~~ |
|
661 |
|
|
662 |
Returns a job ID. |
|
663 |
|
|
664 |
Body parameters: |
|
665 |
|
|
666 |
``new_name`` (string, required) |
|
667 |
New instance name. |
|
668 |
``ip_check`` (bool) |
|
669 |
Whether to ensure instance's IP address is inactive. |
|
670 |
``name_check`` (bool) |
|
671 |
Whether to ensure instance's name is resolvable. |
|
672 |
|
|
673 |
|
|
652 | 674 |
``/2/instances/[instance_name]/tags`` |
653 | 675 |
+++++++++++++++++++++++++++++++++++++ |
654 | 676 |
|
b/lib/rapi/connector.py | ||
---|---|---|
215 | 215 |
rlib2.R_2_instances_name_export, |
216 | 216 |
re.compile(r'^/2/instances/(%s)/migrate$' % instance_name_pattern): |
217 | 217 |
rlib2.R_2_instances_name_migrate, |
218 |
re.compile(r'^/2/instances/(%s)/rename$' % instance_name_pattern): |
|
219 |
rlib2.R_2_instances_name_rename, |
|
218 | 220 |
|
219 | 221 |
"/2/jobs": rlib2.R_2_jobs, |
220 | 222 |
re.compile(r"^/2/jobs/(%s)$" % job_id_pattern): |
b/lib/rapi/rlib2.py | ||
---|---|---|
1023 | 1023 |
return baserlib.SubmitJob([op]) |
1024 | 1024 |
|
1025 | 1025 |
|
1026 |
def _ParseRenameInstanceRequest(name, data): |
|
1027 |
"""Parses a request for renaming an instance. |
|
1028 |
|
|
1029 |
@rtype: L{opcodes.OpRenameInstance} |
|
1030 |
@return: Instance rename opcode |
|
1031 |
|
|
1032 |
""" |
|
1033 |
new_name = baserlib.CheckParameter(data, "new_name") |
|
1034 |
ip_check = baserlib.CheckParameter(data, "ip_check", default=True) |
|
1035 |
name_check = baserlib.CheckParameter(data, "name_check", default=True) |
|
1036 |
|
|
1037 |
return opcodes.OpRenameInstance(instance_name=name, new_name=new_name, |
|
1038 |
name_check=name_check, ip_check=ip_check) |
|
1039 |
|
|
1040 |
|
|
1041 |
class R_2_instances_name_rename(baserlib.R_Generic): |
|
1042 |
"""/2/instances/[instance_name]/rename resource. |
|
1043 |
|
|
1044 |
""" |
|
1045 |
def PUT(self): |
|
1046 |
"""Changes the name of an instance. |
|
1047 |
|
|
1048 |
@return: a job id |
|
1049 |
|
|
1050 |
""" |
|
1051 |
baserlib.CheckType(self.request_body, dict, "Body contents") |
|
1052 |
|
|
1053 |
op = _ParseRenameInstanceRequest(self.items[0], self.request_body) |
|
1054 |
|
|
1055 |
return baserlib.SubmitJob([op]) |
|
1056 |
|
|
1057 |
|
|
1026 | 1058 |
class _R_Tags(baserlib.R_Generic): |
1027 | 1059 |
""" Quasiclass for tagging resources |
1028 | 1060 |
|
b/test/ganeti.rapi.rlib2_unittest.py | ||
---|---|---|
254 | 254 |
self.assertFalse(op.cleanup) |
255 | 255 |
|
256 | 256 |
|
257 |
class TestParseRenameInstanceRequest(testutils.GanetiTestCase): |
|
258 |
def setUp(self): |
|
259 |
testutils.GanetiTestCase.setUp(self) |
|
260 |
|
|
261 |
self.Parse = rlib2._ParseRenameInstanceRequest |
|
262 |
|
|
263 |
def test(self): |
|
264 |
name = "instij0eeph7" |
|
265 |
|
|
266 |
for new_name in ["ua0aiyoo", "fai3ongi"]: |
|
267 |
for ip_check in [False, True]: |
|
268 |
for name_check in [False, True]: |
|
269 |
data = { |
|
270 |
"new_name": new_name, |
|
271 |
"ip_check": ip_check, |
|
272 |
"name_check": name_check, |
|
273 |
} |
|
274 |
|
|
275 |
op = self.Parse(name, data) |
|
276 |
self.assert_(isinstance(op, opcodes.OpRenameInstance)) |
|
277 |
self.assertEqual(op.instance_name, name) |
|
278 |
self.assertEqual(op.new_name, new_name) |
|
279 |
self.assertEqual(op.ip_check, ip_check) |
|
280 |
self.assertEqual(op.name_check, name_check) |
|
281 |
|
|
282 |
def testDefaults(self): |
|
283 |
name = "instahchie3t" |
|
284 |
|
|
285 |
for new_name in ["thag9mek", "quees7oh"]: |
|
286 |
data = { |
|
287 |
"new_name": new_name, |
|
288 |
} |
|
289 |
|
|
290 |
op = self.Parse(name, data) |
|
291 |
self.assert_(isinstance(op, opcodes.OpRenameInstance)) |
|
292 |
self.assertEqual(op.instance_name, name) |
|
293 |
self.assertEqual(op.new_name, new_name) |
|
294 |
self.assert_(op.ip_check) |
|
295 |
self.assert_(op.name_check) |
|
296 |
|
|
297 |
|
|
257 | 298 |
if __name__ == '__main__': |
258 | 299 |
testutils.GanetiTestProgram() |
Also available in: Unified diff