From 332a83ca92e288b414d11e4e15721dcfabe37cad Mon Sep 17 00:00:00 2001 From: Michele Tartara <mtartara@google.com> Date: Thu, 10 Jan 2013 09:22:57 +0100 Subject: [PATCH] Add request type to Confd server for getting instance list Add to Confd server a new request type (and its implementation) to ask for the list of instances in a node. Signed-off-by: Michele Tartara <mtartara@google.com> Reviewed-by: Iustin Pop <iustin@google.com> --- lib/constants.py | 1 + src/Ganeti/Confd/Server.hs | 8 ++++++++ src/Ganeti/Confd/Types.hs | 1 + 3 files changed, 10 insertions(+) diff --git a/lib/constants.py b/lib/constants.py index 0e4f471d3..db84892ce 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -2144,6 +2144,7 @@ CONFD_REQ_NODE_PIP_LIST = 4 CONFD_REQ_MC_PIP_LIST = 5 CONFD_REQ_INSTANCES_IPS_LIST = 6 CONFD_REQ_NODE_DRBD = 7 +CONFD_REQ_NODE_INSTANCES = 8 # Confd request query fields. These are used to narrow down queries. # These must be strings rather than integers, because json-encoding diff --git a/src/Ganeti/Confd/Server.hs b/src/Ganeti/Confd/Server.hs index f7373261c..4339ce2a5 100644 --- a/src/Ganeti/Confd/Server.hs +++ b/src/Ganeti/Confd/Server.hs @@ -242,6 +242,14 @@ buildResponse cdata req@(ConfdRequest { confdRqType = ReqNodeDrbd }) = do (a, b, c, d, e, f) <- minors] return (ReplyStatusOk, J.showJSON encoded) +buildResponse cdata req@(ConfdRequest { confdRqType = ReqNodeInstances }) = do + let cfg = fst cdata + node_name <- case confdRqQuery req of + PlainQuery str -> return str + _ -> fail $ "Invalid query type " ++ show (confdRqQuery req) + let instances = getNodeInstances cfg node_name + return (ReplyStatusOk, J.showJSON instances) + -- | Creates a ConfdReply from a given answer. serializeResponse :: Result StatusAnswer -> ConfdReply serializeResponse r = diff --git a/src/Ganeti/Confd/Types.hs b/src/Ganeti/Confd/Types.hs index 5439fbe77..f503c3ded 100644 --- a/src/Ganeti/Confd/Types.hs +++ b/src/Ganeti/Confd/Types.hs @@ -78,6 +78,7 @@ $(declareIADT "ConfdRequestType" , ("ReqMcPipList", 'C.confdReqMcPipList ) , ("ReqInstIpsList", 'C.confdReqInstancesIpsList ) , ("ReqNodeDrbd", 'C.confdReqNodeDrbd ) + , ("ReqNodeInstances", 'C.confdReqNodeInstances) ]) $(makeJSONInstance ''ConfdRequestType) -- GitLab