Browse Source

added need_reboot endpoint to admin api

contrib/munin-healthcheck
Alexander Strizhakov 4 years ago
parent
commit
72ef6cc4f2
No known key found for this signature in database GPG Key ID: 22896A53AEF1381
5 changed files with 52 additions and 29 deletions
  1. +6
    -0
      CHANGELOG.md
  2. +17
    -4
      docs/API/admin_api.md
  3. +12
    -23
      lib/pleroma/web/admin_api/admin_api_controller.ex
  4. +1
    -0
      lib/pleroma/web/router.ex
  5. +16
    -2
      test/web/admin_api/admin_api_controller_test.exs

+ 6
- 0
CHANGELOG.md View File

@@ -25,6 +25,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed
- Logger configuration through AdminFE

### Added
<details>
<summary>API Changes</summary>
- Admin API: `GET /api/pleroma/admin/need_reboot`.
</details>

## [2.0.2] - 2020-04-08
### Added
- Support for Funkwhale's `Audio` activity


+ 17
- 4
docs/API/admin_api.md View File

@@ -786,6 +786,8 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret

### Restarts pleroma application

**Only works when configuration from database is enabled.**

- Params: none
- Response:
- On failure:
@@ -795,11 +797,24 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
{}
```

## `GET /api/pleroma/admin/need_reboot`

### Returns the flag whether the pleroma should be restarted

- Params: none
- Response:
- `need_reboot` - boolean
```json
{
"need_reboot": false
}
```

## `GET /api/pleroma/admin/config`

### Get list of merged default settings with saved in database.

*If `need_reboot` flag exists in response, instance must be restarted, so reboot time settings can take effect.*
*If `need_reboot` is `true`, instance must be restarted, so reboot time settings can take effect.*

**Only works when configuration from database is enabled.**

@@ -821,13 +836,12 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
"need_reboot": true
}
```
need_reboot - *optional*, if were changed reboot time settings.

## `POST /api/pleroma/admin/config`

### Update config settings

*If `need_reboot` flag exists in response, instance must be restarted, so reboot time settings can take effect.*
*If `need_reboot` is `true`, instance must be restarted, so reboot time settings can take effect.*

**Only works when configuration from database is enabled.**

@@ -971,7 +985,6 @@ config :quack,
"need_reboot": true
}
```
need_reboot - *optional*, if were changed reboot time settings.

## ` GET /api/pleroma/admin/config/descriptions`



+ 12
- 23
lib/pleroma/web/admin_api/admin_api_controller.ex View File

@@ -914,16 +914,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
end)
|> List.flatten()

response = %{configs: merged}

response =
if Restarter.Pleroma.need_reboot?() do
Map.put(response, :need_reboot, true)
else
response
end

json(conn, response)
json(conn, %{configs: merged, need_reboot: Restarter.Pleroma.need_reboot?()})
end
end

@@ -950,28 +941,22 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do

Config.TransferTask.load_and_update_env(deleted, false)

need_reboot? =
Restarter.Pleroma.need_reboot?() ||
Enum.any?(updated, fn config ->
if !Restarter.Pleroma.need_reboot?() do
changed_reboot_settings? =
(updated ++ deleted)
|> Enum.any?(fn config ->
group = ConfigDB.from_string(config.group)
key = ConfigDB.from_string(config.key)
value = ConfigDB.from_binary(config.value)
Config.TransferTask.pleroma_need_restart?(group, key, value)
end)

response = %{configs: updated}

response =
if need_reboot? do
Restarter.Pleroma.need_reboot()
Map.put(response, :need_reboot, need_reboot?)
else
response
end
if changed_reboot_settings?, do: Restarter.Pleroma.need_reboot()
end

conn
|> put_view(ConfigView)
|> render("index.json", response)
|> render("index.json", %{configs: updated, need_reboot: Restarter.Pleroma.need_reboot?()})
end
end

@@ -983,6 +968,10 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
end
end

def need_reboot(conn, _params) do
json(conn, %{need_reboot: Restarter.Pleroma.need_reboot?()})
end

defp configurable_from_database(conn) do
if Config.get(:configurable_from_database) do
:ok


+ 1
- 0
lib/pleroma/web/router.ex View File

@@ -203,6 +203,7 @@ defmodule Pleroma.Web.Router do
get("/config", AdminAPIController, :config_show)
post("/config", AdminAPIController, :config_update)
get("/config/descriptions", AdminAPIController, :config_descriptions)
get("/need_reboot", AdminAPIController, :need_reboot)
get("/restart", AdminAPIController, :restart)

get("/moderation_log", AdminAPIController, :list_log)


+ 16
- 2
test/web/admin_api/admin_api_controller_test.exs View File

@@ -2110,7 +2110,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
|> get("/api/pleroma/admin/config")
|> json_response(200)

refute Map.has_key?(configs, "need_reboot")
assert configs["need_reboot"] == false
end

test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do
@@ -2166,7 +2166,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
|> get("/api/pleroma/admin/config")
|> json_response(200)

refute Map.has_key?(configs, "need_reboot")
assert configs["need_reboot"] == false
end

test "saving config with nested merge", %{conn: conn} do
@@ -2861,6 +2861,20 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
end
end

test "need_reboot flag", %{conn: conn} do
assert conn
|> get("/api/pleroma/admin/need_reboot")
|> json_response(200) == %{"need_reboot" => false}

Restarter.Pleroma.need_reboot()

assert conn
|> get("/api/pleroma/admin/need_reboot")
|> json_response(200) == %{"need_reboot" => true}

on_exit(fn -> Restarter.Pleroma.refresh() end)
end

describe "GET /api/pleroma/admin/statuses" do
test "returns all public and unlisted statuses", %{conn: conn, admin: admin} do
blocked = insert(:user)


Loading…
Cancel
Save