diff --git a/lib/constants.py b/lib/constants.py index 0e4f471d36fe437ffd68a083458e450060d2e8c0..db84892ce6f7a73d09aafbcbbb990c6abb12e62b 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 f7373261ce7f56ad2f718c90286d0690cd40cec6..4339ce2a528315a3334045e85fc4ab3c62f32fc8 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 5439fbe77b001dca5aa7ecbb674afcb40dfd455e..f503c3dedec9f869af3a62c8ef89d9b6c8ecfde1 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)