commit 6387dcf3b01ee5dce7a2c4abd438b877b34de462
Merge: 9b6d390 671d167
Author: Brian Foley <[email protected]>
Date: Tue May 17 12:44:44 2016 +0100
Merge branch 'stable-2.15' into stable-2.16
* stable-2.15
mcpu: Raise caught OpPrereqErrors with too few args
Make EnsureDirs print chmod mode on errors
Fix CLI option typo in NEWS file
Signed-off-by: Brian Foley <[email protected]>
diff --cc test/py/ganeti.mcpu_unittest.py
index 54bd640,796c2ba..42446c7
--- a/test/py/ganeti.mcpu_unittest.py
+++ b/test/py/ganeti.mcpu_unittest.py
@@@ -33,14 -33,16 +33,17 @@@
import unittest
import itertools
+ import mocks
+ from cmdlib.testsupport.rpc_runner_mock import CreateRpcRunnerMock
from ganeti import compat
+from ganeti import errors
from ganeti import mcpu
from ganeti import opcodes
from ganeti import cmdlib
from ganeti import locking
+from ganeti import serializer
+ from ganeti import ht
-from ganeti import errors
from ganeti import constants
from ganeti.constants import \
LOCK_ATTEMPTS_TIMEOUT, \
@@@ -177,42 -179,37 +180,73 @@@ class TestProcessResult(unittest.TestCa
self.assertEqual(op2.comment, "foobar")
self.assertEqual(op2.debug_level, 3)
+ class TestExecLU(unittest.TestCase):
+ class OpTest(opcodes.OpCode):
+ OP_DSC_FIELD = "data"
+ OP_PARAMS = [
+ ("data", ht.NoDefault, ht.TString, None),
+ ]
+
+ def setUp(self):
+ self.ctx = mocks.FakeContext()
+ self.cfg = self.ctx.GetConfig("ec_id")
+ self.rpc = CreateRpcRunnerMock()
+ self.proc = mcpu.Processor(self.ctx, "ec_id", enable_locks = False)
+ self.op = self.OpTest()
+ self.calc_timeout = lambda: 42
+
+ def testRunLU(self):
+ lu = mocks.FakeLU(self.proc, self.op, self.cfg, self.rpc, None)
+ self.proc._ExecLU(lu)
+
+ def testRunLUWithPrereqError(self):
+ prereq = errors.OpPrereqError(self.op, errors.ECODE_INVAL)
+ lu = mocks.FakeLU(self.proc, self.op, self.cfg, self.rpc, prereq)
+ self.assertRaises(errors.OpPrereqError, self.proc._LockAndExecLU,
+ lu, locking.LEVEL_CLUSTER, self.calc_timeout)
+
+ def testRunLUWithPrereqErrorMissingECode(self):
+ prereq = errors.OpPrereqError(self.op)
+ lu = mocks.FakeLU(self.proc, self.op, self.cfg, self.rpc, prereq)
+ self.assertRaises(errors.OpPrereqError, self.proc._LockAndExecLU,
+ lu, locking.LEVEL_CLUSTER, self.calc_timeout)
+
+class TestSecretParams(unittest.TestCase):
+ def testSecretParamsCheckNoError(self):
+ op = opcodes.OpInstanceCreate(
+ instance_name="plain.example.com",
+ pnode="master.example.com",
+ disk_template=constants.DT_PLAIN,
+ mode=constants.INSTANCE_CREATE,
+ nics=[{}],
+ disks=[{
+ constants.IDISK_SIZE: 1024
+ }],
+ osparams_secret= serializer.PrivateDict({"foo":"bar", "foo2":"bar2"}),
+ os_type="debian-image")
+
+ try:
+ mcpu._CheckSecretParameters(op)
+ except errors.OpPrereqError:
+ self.fail("OpPrereqError raised unexpectedly in _CheckSecretParameters")
+
+ def testSecretParamsCheckWithError(self):
+ op = opcodes.OpInstanceCreate(
+ instance_name="plain.example.com",
+ pnode="master.example.com",
+ disk_template=constants.DT_PLAIN,
+ mode=constants.INSTANCE_CREATE,
+ nics=[{}],
+ disks=[{
+ constants.IDISK_SIZE: 1024
+ }],
+ osparams_secret= serializer.PrivateDict({"foo":"bar",
+ "secret_param":"<redacted>"}),
+ os_type="debian-image")
+
+ self.assertRaises(errors.OpPrereqError, mcpu._CheckSecretParameters, op)
+
+
if __name__ == "__main__":
testutils.GanetiTestProgram()