diff --git a/src/Ganeti/Monitoring/Server.hs b/src/Ganeti/Monitoring/Server.hs index 1f311e1f377d93019199157235b05c313e827433..f31524ea4819dc814b3b3b5a853b10a7a65a5508 100644 --- a/src/Ganeti/Monitoring/Server.hs +++ b/src/Ganeti/Monitoring/Server.hs @@ -135,7 +135,8 @@ reportHandler = route [ ("all", allReports) , (":category/:collector", oneReport) - ] + ] <|> + errorReport -- | Return the report of all the available collectors. allReports :: Snap () @@ -154,6 +155,16 @@ catFromName "hypervisor" = BT.Ok $ Just DCHypervisor catFromName "default" = BT.Ok Nothing catFromName _ = BT.Bad "No such category" +errorReport :: Snap () +errorReport = do + modifyResponse $ setResponseStatus 404 "Not found" + writeBS "Unable to produce a report for the requested resource" + +error404 :: Snap () +error404 = do + modifyResponse $ setResponseStatus 404 "Not found" + writeBS "Resource not found" + -- | Return the report of one collector oneReport :: Snap () oneReport = do @@ -178,7 +189,8 @@ oneReport = do monitoringApi :: Snap () monitoringApi = ifTop versionQ <|> - dir "1" version1Api + dir "1" version1Api <|> + error404 -- | Main function. main :: MainFn CheckResult PrepResult