Revision 075a29be

b/lib/rapi/rlib2.py
1020 1020
      })
1021 1021

  
1022 1022

  
1023
def _ParseMigrateInstanceRequest(name, data):
1024
  """Parses a request for an instance migration.
1025

  
1026
  @rtype: L{opcodes.OpInstanceMigrate}
1027
  @return: Instance migration opcode
1028

  
1029
  """
1030
  return baserlib.FillOpcode(opcodes.OpInstanceMigrate, data, {
1031
    "instance_name": name,
1032
    })
1033

  
1034

  
1035
class R_2_instances_name_migrate(baserlib.ResourceBase):
1023
class R_2_instances_name_migrate(baserlib.OpcodeResource):
1036 1024
  """/2/instances/[instance_name]/migrate resource.
1037 1025

  
1038 1026
  """
1039
  def PUT(self):
1040
    """Migrates an instance.
1027
  PUT_OPCODE = opcodes.OpInstanceMigrate
1041 1028

  
1042
    @return: a job id
1029
  def GetPutOpInput(self):
1030
    """Migrates an instance.
1043 1031

  
1044 1032
    """
1045
    baserlib.CheckType(self.request_body, dict, "Body contents")
1046

  
1047
    op = _ParseMigrateInstanceRequest(self.items[0], self.request_body)
1048

  
1049
    return self.SubmitJob([op])
1033
    return (self.request_body, {
1034
      "instance_name": self.items[0],
1035
      })
1050 1036

  
1051 1037

  
1052 1038
class R_2_instances_name_failover(baserlib.ResourceBase):
b/test/ganeti.rapi.rlib2_unittest.py
728 728
      self.assertRaises(http.HttpBadRequest, handler.PUT)
729 729

  
730 730

  
731
class TestParseMigrateInstanceRequest(testutils.GanetiTestCase):
732
  def setUp(self):
733
    testutils.GanetiTestCase.setUp(self)
734

  
735
    self.Parse = rlib2._ParseMigrateInstanceRequest
736

  
731
class TestInstanceMigrate(testutils.GanetiTestCase):
737 732
  def test(self):
733
    clfactory = _FakeClientFactory(_FakeClient)
734

  
738 735
    name = "instYooho6ek"
739 736

  
740 737
    for cleanup in [False, True]:
......
743 740
          "cleanup": cleanup,
744 741
          "mode": mode,
745 742
          }
746
        op = self.Parse(name, data)
747
        self.assert_(isinstance(op, opcodes.OpInstanceMigrate))
743

  
744
        handler = _CreateHandler(rlib2.R_2_instances_name_migrate, [name], {},
745
                                 data, clfactory)
746
        job_id = handler.PUT()
747

  
748
        cl = clfactory.GetNextClient()
749
        self.assertRaises(IndexError, clfactory.GetNextClient)
750

  
751
        (exp_job_id, (op, )) = cl.GetNextSubmittedJob()
752
        self.assertEqual(job_id, exp_job_id)
753
        self.assertTrue(isinstance(op, opcodes.OpInstanceMigrate))
748 754
        self.assertEqual(op.instance_name, name)
749 755
        self.assertEqual(op.mode, mode)
750 756
        self.assertEqual(op.cleanup, cleanup)
757
        self.assertFalse(hasattr(op, "dry_run"))
758
        self.assertFalse(hasattr(op, "force"))
759

  
760
        self.assertRaises(IndexError, cl.GetNextSubmittedJob)
751 761

  
752 762
  def testDefaults(self):
763
    clfactory = _FakeClientFactory(_FakeClient)
764

  
753 765
    name = "instnohZeex0"
754 766

  
755
    op = self.Parse(name, {})
756
    self.assert_(isinstance(op, opcodes.OpInstanceMigrate))
767
    handler = _CreateHandler(rlib2.R_2_instances_name_migrate, [name], {}, {},
768
                             clfactory)
769
    job_id = handler.PUT()
770

  
771
    cl = clfactory.GetNextClient()
772
    self.assertRaises(IndexError, clfactory.GetNextClient)
773

  
774
    (exp_job_id, (op, )) = cl.GetNextSubmittedJob()
775
    self.assertEqual(job_id, exp_job_id)
776
    self.assertTrue(isinstance(op, opcodes.OpInstanceMigrate))
757 777
    self.assertEqual(op.instance_name, name)
758 778
    self.assertFalse(hasattr(op, "mode"))
759 779
    self.assertFalse(hasattr(op, "cleanup"))
780
    self.assertFalse(hasattr(op, "dry_run"))
781
    self.assertFalse(hasattr(op, "force"))
782

  
783
    self.assertRaises(IndexError, cl.GetNextSubmittedJob)
760 784

  
761 785

  
762 786
class TestParseRenameInstanceRequest(testutils.GanetiTestCase):

Also available in: Unified diff