feat: dump config through Admin API

This commit is contained in:
Ivan Kasatenko
2024-02-05 19:16:05 -05:00
committed by GitHub
parent a45058ba02
commit 71887e4b78
3 changed files with 17 additions and 0 deletions
+1
View File
@@ -8,6 +8,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Added
- #2887, Add Preference `max-affected` to limit affected resources - @taimoorzaeem
- #3171, Add an ability to dump config via admin API - @skywriter
### Fixed
+6
View File
@@ -11,6 +11,8 @@ import qualified Network.Wai.Handler.Warp as Warp
import Control.Monad.Extra (whenJust)
import qualified Data.ByteString.Lazy as LBS
import Network.Socket
import Network.Socket.ByteString
@@ -18,6 +20,7 @@ import PostgREST.AppState (AppState)
import PostgREST.Config (AppConfig (..))
import qualified PostgREST.AppState as AppState
import qualified PostgREST.Config as Config
import Protolude
import Protolude.Partial (fromJust)
@@ -45,6 +48,9 @@ admin appState appConfig req respond = do
respond $ Wai.responseLBS (if isMainAppReachable && isConnectionUp && isSchemaCacheLoaded then HTTP.status200 else HTTP.status503) [] mempty
["live"] ->
respond $ Wai.responseLBS (if isMainAppReachable then HTTP.status200 else HTTP.status503) [] mempty
["config"] -> do
config <- AppState.getConfig appState
respond $ Wai.responseLBS HTTP.status200 [] (LBS.fromStrict $ encodeUtf8 $ Config.toText config)
_ ->
respond $ Wai.responseLBS HTTP.status404 [] mempty
+10
View File
@@ -632,6 +632,16 @@ def test_change_statement_timeout_held_connection(defaultenv, metapostgrest):
t.join()
def test_admin_config(defaultenv):
"Should get a success response from the admin server containing current configuration"
with run(env=defaultenv) as postgrest:
response = postgrest.admin.get("/config")
print(response.text)
assert response.status_code == 200
assert "admin-server-port" in response.text
def test_admin_ready_w_channel(defaultenv):
"Should get a success response from the admin server ready endpoint when the LISTEN channel is enabled"