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