commit 0de2fa53a1e3d66c0456dd83b6927e1bb39db491
Merge: df376ff 7bb2282
Author: Hrvoje Ribicic <[email protected]>
Date:   Thu Mar 27 17:09:50 2014 +0000

    Merge branch 'stable-2.10' into stable-2.11

    * stable-2.9
      Fix failing gnt-node list-drbd command

    * stable-2.8
      Add reason parameter to RAPI client functions

    Signed-off-by: Hrvoje Ribicic <[email protected]>

    Conflicts:
    lib/rapi/client.py: Add both params
    lib/rapi/rlib2.py: Remove reference to missing LU, add aliases
    src/Ganeti/Query/Query.hs: Take more imports

diff --cc lib/rapi/client.py
index 174f171,4b4969d..250f4f7
--- a/lib/rapi/client.py
+++ b/lib/rapi/client.py
@@@ -1179,9 -1276,8 +1276,8 @@@ class GanetiRapiClient(object): # pylin
                                (GANETI_RAPI_VERSION, instance)), query,
None)

    def ExportInstance(self, instance, mode, destination, shutdown=None,
--                     remove_instance=None,
-                      x509_key_name=None, destination_x509_ca=None,
-                      compress=None):
 -                     x509_key_name=None, destination_x509_ca=None,
reason=None):
++                     remove_instance=None, x509_key_name=None,
++                     destination_x509_ca=None, compress=None,
reason=None):
      """Exports an instance.

      @type instance: string
@@@ -1203,14 -1301,16 +1301,17 @@@
      _SetItemIf(body, x509_key_name is not None, "x509_key_name",
x509_key_name)
      _SetItemIf(body, destination_x509_ca is not None,
                 "destination_x509_ca", destination_x509_ca)
 +    _SetItemIf(body, compress is not None, "compress", compress)

+     query = []
+     _AppendReason(query, reason)
+
      return self._SendRequest(HTTP_PUT,
                               ("/%s/instances/%s/export" %
-                               (GANETI_RAPI_VERSION, instance)), None,
body)
+                               (GANETI_RAPI_VERSION, instance)), query,
body)

    def MigrateInstance(self, instance, mode=None, cleanup=None,
-                       target_node=None):
+                       target_node=None, reason=None):
      """Migrates an instance.

      @type instance: string
diff --cc lib/rapi/rlib2.py
index b9828fb,2e92c05..df90620
--- a/lib/rapi/rlib2.py
+++ b/lib/rapi/rlib2.py
@@@ -413,6 -418,10 +417,9 @@@ class R_2_nodes_name(baserlib.OpcodeRes
    """/2/nodes/[node_name] resource.

    """
 -  GET_OPCODE = opcodes.OpNodeQuery
+   GET_ALIASES = {
+     "sip": "secondary_ip",
+     }

    def GET(self):
      """Send information about a node.
diff --cc qa/qa_node.py
index 58c281c,42d13d6..3d02548
--- a/qa/qa_node.py
+++ b/qa/qa_node.py
@@@ -32,10 -32,10 +32,10 @@@ import qa_confi
  import qa_error
  import qa_utils

- from qa_utils import AssertCommand, AssertEqual
+ from qa_utils import AssertCommand, AssertEqual, AssertIn,
GetCommandOutput


 -def _NodeAdd(node, readd=False):
 +def NodeAdd(node, readd=False, group=None):
    if not readd and node.added:
      raise qa_error.Error("Node %s already in cluster" % node.primary)
    elif readd and not node.added:
diff --cc qa/qa_rapi.py
index 5e6904c,7ce41c1..cfbf3ff
--- a/qa/qa_rapi.py
+++ b/qa/qa_rapi.py
@@@ -23,24 -23,24 +23,25 @@@

  """

- import tempfile
+ import functools
+ import itertools
  import random
  import re
- import itertools
- import functools
+ import tempfile

- from ganeti import utils
+ from ganeti import cli
+ from ganeti import compat
  from ganeti import constants
  from ganeti import errors
- from ganeti import cli
- from ganeti import rapi
+ from ganeti import pathutils
  from ganeti import objects
+ from ganeti import opcodes
  from ganeti import query
- from ganeti import compat
  from ganeti import qlang
- from ganeti import pathutils
+ from ganeti import rapi
+ from ganeti import utils

 +from ganeti.http.auth import ParsePasswordFile
  import ganeti.rapi.client        # pylint: disable=W0611
  import ganeti.rapi.client_utils

diff --cc test/py/ganeti.rapi.rlib2_unittest.py
index 1b760c8,ba0ac62..eee87e4
--- a/test/py/ganeti.rapi.rlib2_unittest.py
+++ b/test/py/ganeti.rapi.rlib2_unittest.py
@@@ -1584,10 -1620,44 +1620,44 @@@ class TestGroupModify(unittest.TestCase

      self.assertTrue(isinstance(op, opcodes.OpGroupSetParams))
      self.assertEqual(op.group_name, name)
 -    self.assertFalse(hasattr(op, "alloc_policy"))
 -    self.assertFalse(hasattr(op, "dry_run"))
 +    self.assertTrue(op.alloc_policy is None)
 +    self.assertFalse(op.dry_run)
      self.assertRaises(IndexError, cl.GetNextSubmittedJob)

+   def testCustomParamRename(self):
+     clfactory = _FakeClientFactory(_FakeClient)
+
+     name = "groupie"
+     data = {
+       "custom_diskparams": {},
+       "custom_ipolicy": {},
+       "custom_ndparams": {},
+       }
+
+     handler = _CreateHandler(rlib2.R_2_groups_name_modify, [name], {},
data,
+                              clfactory)
+     job_id = handler.PUT()
+
+     cl = clfactory.GetNextClient()
+     self.assertRaises(IndexError, clfactory.GetNextClient)
+
+     (exp_job_id, (op, )) = cl.GetNextSubmittedJob()
+     self.assertEqual(job_id, exp_job_id)
+
+     self.assertTrue(isinstance(op, opcodes.OpGroupSetParams))
+     self.assertEqual(op.diskparams, {})
+     self.assertEqual(op.ipolicy, {})
+     self.assertEqual(op.ndparams, {})
+
+     self.assertRaises(IndexError, cl.GetNextSubmittedJob)
+
+     # Define both
+     data["diskparams"] = {}
+     assert "diskparams" in data and "custom_diskparams" in data
+     handler = _CreateHandler(rlib2.R_2_groups_name_modify, [name], {},
data,
+                              clfactory)
+     self.assertRaises(http.HttpBadRequest, handler.PUT)
+

  class TestGroupAdd(unittest.TestCase):
    def test(self):

Reply via email to