Fix fwupdates requireing a reboot

pull/420/head^2
connor rigby 2018-01-22 13:01:14 -08:00
parent 97cae33e8d
commit 34ba1797f4
5 changed files with 32 additions and 13 deletions

View File

@ -1 +1 @@
6.1.0
6.1.1

View File

@ -12,4 +12,7 @@ defmodule Farmbot.System.UpdateHandler do
@doc "Setup updates."
@callback setup(atom) :: :ok | {:error, term}
@doc "If a fw has already been applied."
@callback requires_reboot? :: boolean
end

View File

@ -22,20 +22,30 @@ defmodule Farmbot.System.Updates do
@doc "Force check updates."
def check_updates(reboot) do
token = ConfigStorage.get_config_value(:string, "authorization", "token")
if token do
case Farmbot.Jwt.decode(token) do
{:ok, %Farmbot.Jwt{os_update_server: normal_update_server, beta_os_update_server: beta_update_server}} ->
override = ConfigStorage.get_config_value(:string, "settings", "os_update_server_overwrite")
if ConfigStorage.get_config_value(:bool, "settings", "beta_opt_in") do
do_check_updates_http(override || beta_update_server, reboot)
else
do_check_updates_http(override || normal_update_server, reboot)
end
_ -> no_token()
if @handler.requires_reboot? do
if reboot do
Logger.info 1, "Farmbot applied an update. Rebooting."
Farmbot.System.reboot("Update reboot required")
else
Logger.info 1, "Farmbot already applied an update. Please reboot."
:ok
end
else
no_token()
token = ConfigStorage.get_config_value(:string, "authorization", "token")
if token do
case Farmbot.Jwt.decode(token) do
{:ok, %Farmbot.Jwt{os_update_server: normal_update_server, beta_os_update_server: beta_update_server}} ->
override = ConfigStorage.get_config_value(:string, "settings", "os_update_server_overwrite")
if ConfigStorage.get_config_value(:bool, "settings", "beta_opt_in") do
do_check_updates_http(override || beta_update_server, reboot)
else
do_check_updates_http(override || normal_update_server, reboot)
end
_ -> no_token()
end
else
no_token()
end
end
end

View File

@ -21,4 +21,6 @@ defmodule Farmbot.Host.UpdateHandler do
def setup(_env) do
:ok
end
def requires_reboot?, do: false
end

View File

@ -28,4 +28,8 @@ defmodule Farmbot.Target.UpdateHandler do
def setup(_) do
:ok
end
def requires_reboot? do
!Nerves.Firmware.allow_upgrade?
end
end