Add special setting to ignore settings updates.

pull/444/head
connor rigby 2018-02-13 09:25:29 -08:00
parent a033f0fa87
commit 1875a1bcb5
3 changed files with 31 additions and 10 deletions

View File

@ -5,7 +5,8 @@ defmodule Farmbot.Bootstrap.SettingsSync do
import Farmbot.System.ConfigStorage, only: [get_config_value: 3, update_config_value: 4, get_config_as_map: 0]
def start_link() do
Task.start_link(__MODULE__, :run, [])
run()
:ignore
end
def run() do
@ -95,6 +96,7 @@ defmodule Farmbot.Bootstrap.SettingsSync do
def do_sync_settings(_unimportant_data) do
Logger.info 3, "FBOS is the source of truth; Uploading data."
update_config_value(:bool, "settings", "ignore_fbos_config", true)
auto_sync = get_config_value(:bool, "settings", "auto_sync")
beta_opt_in = get_config_value(:bool, "settings", "beta_opt_in")
disable_factory_reset = get_config_value(:bool, "settings", "disable_factory_reset")
@ -124,6 +126,7 @@ defmodule Farmbot.Bootstrap.SettingsSync do
} |> Poison.encode!()
Farmbot.HTTP.delete!("/api/fbos_config")
Farmbot.HTTP.put!("/api/fbos_config", payload)
update_config_value(:bool, "settings", "ignore_fbos_config", false)
:ok
end

View File

@ -233,16 +233,25 @@ defmodule Farmbot.BotState.Transport.AMQP do
{:noreply, [], state}
end
def handle_fbos_config(_, _, %{state_cache: nil}) do
# Don't update fbos config, if we don't have a state cache for whatever reason.
{:noreply, [], state}
end
def handle_fbos_config(_id, payload, state) do
case Poison.decode(payload) do
# TODO(Connor) What do I do with deletes?
{:ok, %{"body" => nil}} -> {:noreply, [], state}
{:ok, %{"body" => config}} ->
# Logger.info 1, "Got fbos config from amqp: #{inspect config}"
old = state.state_cache.configuration
updated = Farmbot.Bootstrap.SettingsSync.apply_map(old, config)
push_bot_state(state.chan, state.bot, %{state.state_cache | configuration: updated})
{:noreply, [], state}
if get_config_value(:bool, "settings", "ignore_fbos_config") do
{:noreply, [], state}
else
case Poison.decode(payload) do
# TODO(Connor) What do I do with deletes?
{:ok, %{"body" => nil}} -> {:noreply, [], state}
{:ok, %{"body" => config}} ->
# Logger.info 1, "Got fbos config from amqp: #{inspect config}"
old = state.state_cache.configuration
updated = Farmbot.Bootstrap.SettingsSync.apply_map(old, config)
push_bot_state(state.chan, state.bot, %{state.state_cache | configuration: updated})
{:noreply, [], state}
end
end
end

View File

@ -0,0 +1,9 @@
defmodule Farmbot.System.ConfigStorage.Migrations.IgnoreFbosConfig do
use Ecto.Migration
import Farmbot.System.ConfigStorage.MigrationHelpers
def change do
create_settings_config("ignore_fbos_config", :bool, true)
end
end