querylib: abstract a couple of common errors
[ganeti-local] / lib / confd / server.py
index 3d1a2ee..a39a535 100644 (file)
@@ -44,7 +44,7 @@ class ConfdProcessor(object):
   """
   DISPATCH_TABLE = {
       constants.CONFD_REQ_PING: querylib.PingQuery,
   """
   DISPATCH_TABLE = {
       constants.CONFD_REQ_PING: querylib.PingQuery,
-      constants.CONFD_REQ_NODE_ROLE_BYNAME: querylib.ConfdQuery,
+      constants.CONFD_REQ_NODE_ROLE_BYNAME: querylib.NodeRoleQuery,
       constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP: querylib.ConfdQuery,
   }
 
       constants.CONFD_REQ_NODE_PIP_BY_INSTANCE_IP: querylib.ConfdQuery,
   }
 
@@ -57,6 +57,9 @@ class ConfdProcessor(object):
     """
     self.reader = reader
     self.hmac_key = utils.ReadFile(constants.HMAC_CLUSTER_KEY)
     """
     self.reader = reader
     self.hmac_key = utils.ReadFile(constants.HMAC_CLUSTER_KEY)
+    assert \
+      not constants.CONFD_REQS.symmetric_difference(self.DISPATCH_TABLE), \
+      "DISPATCH_TABLE is unaligned with CONFD_REQS"
 
   def ExecQuery(self, payload_in, ip, port):
     """Process a single UDP request from a client.
 
   def ExecQuery(self, payload_in, ip, port):
     """Process a single UDP request from a client.
@@ -131,10 +134,6 @@ class ConfdProcessor(object):
       msg = "missing requested salt"
       raise errors.ConfdRequestError(msg)
 
       msg = "missing requested salt"
       raise errors.ConfdRequestError(msg)
 
-    if request.type not in self.DISPATCH_TABLE:
-      msg = "Valid request %d not in DISPATCH_TABLE" % request.type
-      raise errors.ProgrammerError(msg)
-
     query_object = self.DISPATCH_TABLE[request.type](self.reader)
     status, answer = query_object.Exec(request.query)
     reply = objects.ConfdReply(
     query_object = self.DISPATCH_TABLE[request.type](self.reader)
     status, answer = query_object.Exec(request.query)
     reply = objects.ConfdReply(