Signed-off-by: Guido Trotter <ultrot...@google.com> --- lib/confd/querylib.py | 5 +++++ lib/confd/server.py | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/lib/confd/querylib.py b/lib/confd/querylib.py index e4fd753..5b74e01 100644 --- a/lib/confd/querylib.py +++ b/lib/confd/querylib.py @@ -30,6 +30,7 @@ class ConfdQuery(object): """Confd Query base class. """ + QUERY = None def __init__(self, reader): """Constructor for Confd Query @@ -62,6 +63,8 @@ class PingQuery(ConfdQuery): It will return success on an empty argument, and an error on any other argument. """ + QUERY = constants.CONFD_REQ_PING + def Exec(self, query): """EmptyQuery main execution @@ -81,6 +84,8 @@ class NodeRoleQuery(ConfdQuery): It will return success on an empty argument, and an error on any other argument. """ + QUERY = constants.CONFD_REQ_NODE_ROLE_BYNAME + def Exec(self, query): """EmptyQuery main execution diff --git a/lib/confd/server.py b/lib/confd/server.py index a39a535..7c37e2a 100644 --- a/lib/confd/server.py +++ b/lib/confd/server.py @@ -42,12 +42,6 @@ class ConfdProcessor(object): """A processor for confd requests. """ - DISPATCH_TABLE = { - constants.CONFD_REQ_PING: querylib.PingQuery, - constants.CONFD_REQ_NODE_ROLE_BYNAME: querylib.NodeRoleQuery, - constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP: querylib.ConfdQuery, - } - def __init__(self, reader): """Constructor for ConfdProcessor @@ -57,6 +51,13 @@ class ConfdProcessor(object): """ self.reader = reader self.hmac_key = utils.ReadFile(constants.HMAC_CLUSTER_KEY) + self.DISPATCH_TABLE = {} + for query in dir(querylib): + if isinstance(query, querylib.ConfdQuery) and query.QUERY is not None: + self.DISPATCH_TABLE[query.QUERY] = query + for query in constants.CONFD_REQS: + if query not in self.DISPATCH_TABLE: + self.DISPATCH_TABLE[query] = querylib.ConfdQuery assert \ not constants.CONFD_REQS.symmetric_difference(self.DISPATCH_TABLE), \ "DISPATCH_TABLE is unaligned with CONFD_REQS" -- 1.5.6.5