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)