From 4b678e1d42ea66fae49f2248b4c4cfeb32fe0a09 Mon Sep 17 00:00:00 2001 From: Michal 'vorner' Vaner Date: Thu, 14 Feb 2013 10:23:44 +0100 Subject: [PATCH] [1676] Basics of the rpc_call in python Successful case. Small fixes of the tests. --- src/lib/python/isc/config/ccsession.py | 11 +++++++++++ src/lib/python/isc/config/tests/ccsession_test.py | 4 ++-- .../python/isc/config/tests/unittest_fakesession.py | 5 +++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/lib/python/isc/config/ccsession.py b/src/lib/python/isc/config/ccsession.py index 8464a01e04..c5c8a891f0 100644 --- a/src/lib/python/isc/config/ccsession.py +++ b/src/lib/python/isc/config/ccsession.py @@ -37,6 +37,7 @@ """ from isc.cc import Session +from isc.cc.proto_defs import * from isc.config.config_data import ConfigData, MultiConfigData, BIND10_CONFIG_DATA_VERSION import isc.config.module_spec import isc @@ -474,6 +475,16 @@ class ModuleCCSession(ConfigData): except isc.cc.SessionTimeout: raise ModuleCCSessionError("CC Session timeout waiting for configuration manager") + def rpc_call(self, command, group, instance=CC_INSTANCE_WILDCARD, + to=CC_TO_WILDCARD, **params): + cmd = create_command(command, params) + seq = self._session.group_sendmsg(cmd, group, instance=instance, + to=to, want_answer=True) + # For non-blocking, we'll have rpc_call_async (once the nonblock actualy + # works) + reply, rheaders = self._session.group_recvmsg(nonblock=False, seq=seq) + code, value = parse_answer(reply) + return value class UIModuleCCSession(MultiConfigData): """This class is used in a configuration user interface. It contains diff --git a/src/lib/python/isc/config/tests/ccsession_test.py b/src/lib/python/isc/config/tests/ccsession_test.py index cb4fc28313..0f772ff3d8 100644 --- a/src/lib/python/isc/config/tests/ccsession_test.py +++ b/src/lib/python/isc/config/tests/ccsession_test.py @@ -299,13 +299,13 @@ class TestModuleCCSession(unittest.TestCase): fake_session.message_queue = [ ["Spec1", None, {"result": [0, {"Hello": "a"}]}, False] ] - result = mccs.rpc_call("Spec2", "*", "test", param1="Param 1", + result = mccs.rpc_call("test", "Spec2", param1="Param 1", param2="Param 2") self.assertEqual([ ["Spec2", "*", {"command": ["test", { "param1": "Param 1", "param2": "Param 2" - }]}] + }]}, True] ], fake_session.message_queue) self.assertEqual({"Hello": "a"}, result) diff --git a/src/lib/python/isc/config/tests/unittest_fakesession.py b/src/lib/python/isc/config/tests/unittest_fakesession.py index 38a0637069..84be1fe619 100644 --- a/src/lib/python/isc/config/tests/unittest_fakesession.py +++ b/src/lib/python/isc/config/tests/unittest_fakesession.py @@ -68,8 +68,9 @@ class FakeModuleCCSession: else: return False - def group_sendmsg(self, msg, channel, target=None, want_answer=False): - self.message_queue.append([ channel, target, msg, want_answer ]) + def group_sendmsg(self, msg, group, instance=None, to=None, + want_answer=False): + self.message_queue.append([ group, instance, msg, want_answer ]) return 42 def group_reply(self, env, msg):