summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-03-10 15:31:44 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-03-10 15:31:44 +0300
commit426f5ee48a09dbf321c013db08cc849c8929d86d (patch)
tree826001542b3786f04fa23d72d2b358d5890ed9d2
parentd9f8941dac983d89709645831b41e02adc454740 (diff)
downloadpleroma-426f5ee48a09dbf321c013db08cc849c8929d86d.tar.gz
pleroma-426f5ee48a09dbf321c013db08cc849c8929d86d.zip
tesla adapter can't be changed in adminFE
-rw-r--r--lib/pleroma/config/transfer_task.ex58
-rw-r--r--test/web/admin_api/admin_api_controller_test.exs21
2 files changed, 31 insertions, 48 deletions
diff --git a/lib/pleroma/config/transfer_task.ex b/lib/pleroma/config/transfer_task.ex
index bf1b943d8..4a4c022f0 100644
--- a/lib/pleroma/config/transfer_task.ex
+++ b/lib/pleroma/config/transfer_task.ex
@@ -20,8 +20,7 @@ defmodule Pleroma.Config.TransferTask do
{:pleroma, :markup},
{:pleroma, :streamer},
{:pleroma, :pools},
- {:pleroma, :connections_pool},
- {:tesla, :adapter}
+ {:pleroma, :connections_pool}
]
@reboot_time_subkeys [
@@ -35,8 +34,6 @@ defmodule Pleroma.Config.TransferTask do
{:pleroma, :gopher, [:enabled]}
]
- @reject [nil, :prometheus]
-
def start_link(_) do
load_and_update_env()
if Pleroma.Config.get(:env) == :test, do: Ecto.Adapters.SQL.Sandbox.checkin(Repo)
@@ -45,35 +42,30 @@ defmodule Pleroma.Config.TransferTask do
@spec load_and_update_env([ConfigDB.t()]) :: :ok | false
def load_and_update_env(deleted \\ [], restart_pleroma? \\ true) do
- with {:configurable, true} <-
- {:configurable, Pleroma.Config.get(:configurable_from_database)},
- true <- Ecto.Adapters.SQL.table_exists?(Repo, "config"),
- started_applications <- Application.started_applications() do
+ with {_, true} <- {:configurable, Pleroma.Config.get(:configurable_from_database)} do
# We need to restart applications for loaded settings take effect
-
in_db = Repo.all(ConfigDB)
with_deleted = in_db ++ deleted
- reject_for_restart = if restart_pleroma?, do: @reject, else: [:pleroma | @reject]
-
- applications =
- with_deleted
- |> Enum.map(&merge_and_update(&1))
- |> Enum.uniq()
- # TODO: some problem with prometheus after restart!
- |> Enum.reject(&(&1 in reject_for_restart))
+ # TODO: some problem with prometheus after restart!
+ reject = [nil, :prometheus]
- # to be ensured that pleroma will be restarted last
- applications =
- if :pleroma in applications do
- List.delete(applications, :pleroma) ++ [:pleroma]
+ reject_for_restart =
+ if restart_pleroma? do
+ reject
else
- Restarter.Pleroma.rebooted()
- applications
+ [:pleroma | reject]
end
- Enum.each(applications, &restart(started_applications, &1, Pleroma.Config.get(:env)))
+ started_applications = Application.started_applications()
+
+ with_deleted
+ |> Enum.map(&merge_and_update(&1))
+ |> Enum.uniq()
+ |> Enum.reject(&(&1 in reject_for_restart))
+ |> maybe_set_pleroma_last()
+ |> Enum.each(&restart(started_applications, &1, Pleroma.Config.get(:env)))
:ok
else
@@ -81,6 +73,18 @@ defmodule Pleroma.Config.TransferTask do
end
end
+ defp maybe_set_pleroma_last(apps) do
+ # to be ensured that pleroma will be restarted last
+ if :pleroma in apps do
+ apps
+ |> List.delete(:pleroma)
+ |> List.insert_at(-1, :pleroma)
+ else
+ Restarter.Pleroma.rebooted()
+ apps
+ end
+ end
+
defp group_for_restart(:logger, key, _, merged_value) do
# change logger configuration in runtime, without restart
if Keyword.keyword?(merged_value) and
@@ -93,14 +97,10 @@ defmodule Pleroma.Config.TransferTask do
nil
end
- defp group_for_restart(:tesla, _, _, _), do: :pleroma
-
defp group_for_restart(group, _, _, _) when group != :pleroma, do: group
defp group_for_restart(group, key, value, _) do
- if pleroma_need_restart?(group, key, value) do
- group
- end
+ if pleroma_need_restart?(group, key, value), do: group
end
defp merge_and_update(setting) do
diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs
index d6b839948..76240e5bc 100644
--- a/test/web/admin_api/admin_api_controller_test.exs
+++ b/test/web/admin_api/admin_api_controller_test.exs
@@ -2513,8 +2513,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
"value" => "Tesla.Adapter.Httpc",
"db" => [":adapter"]
}
- ],
- "need_reboot" => true
+ ]
}
end
@@ -2586,9 +2585,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
end
test "common config example", %{conn: conn} do
- adapter = Application.get_env(:tesla, :adapter)
- on_exit(fn -> Application.put_env(:tesla, :adapter, adapter) end)
-
conn =
post(conn, "/api/pleroma/admin/config", %{
configs: [
@@ -2607,16 +2603,10 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
%{"tuple" => [":regex4", "~r/https:\/\/example.com/s"]},
%{"tuple" => [":name", "Pleroma"]}
]
- },
- %{
- "group" => ":tesla",
- "key" => ":adapter",
- "value" => "Tesla.Adapter.Httpc"
}
]
})
- assert Application.get_env(:tesla, :adapter) == Tesla.Adapter.Httpc
assert Config.get([Pleroma.Captcha.NotReal, :name]) == "Pleroma"
assert json_response(conn, 200) == %{
@@ -2648,15 +2638,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
":regex4",
":name"
]
- },
- %{
- "group" => ":tesla",
- "key" => ":adapter",
- "value" => "Tesla.Adapter.Httpc",
- "db" => [":adapter"]
}
- ],
- "need_reboot" => true
+ ]
}
end