Compare client/server versions and warn if different

This commit is contained in:
2024-07-06 22:27:34 -03:00
parent 889a5a2955
commit 824c94bebc
10 changed files with 31 additions and 12 deletions

View File

@ -17,6 +17,7 @@ module Faaso
Log.info { "Building function... #{funko.name} in #{tmp_dir}" }
funko.build tmp_dir
else # Running against a server
Faaso.check_version
# Create a tarball for the funko
buf = IO::Memory.new
Compress::Gzip::Writer.open(buf) do |gzip|

View File

@ -27,6 +27,7 @@ module Faaso
end
def remote(options, name, scale) : Int32
Faaso.check_version
if !scale
Crest.get(
"#{FAASO_SERVER}funkos/#{name}/scale/", \

View File

@ -13,6 +13,7 @@ module Faaso
end
def remote(options, funko, name, secret) : Int32
Faaso.check_version
if options["--add"]
Crest.post(
"#{FAASO_SERVER}secrets/",

View File

@ -26,6 +26,7 @@ module Faaso
end
def remote(options, name) : Int32
Faaso.check_version
Crest.get(
"#{FAASO_SERVER}funkos/#{name}/status/", \
user: "admin", password: "admin") do |response|

View File

@ -8,8 +8,16 @@ require "docr"
require "kemal"
require "uuid"
macro version
"{{ `grep version shard.yml | cut -d: -f2` }}".strip()
end
get "/" do |env|
env.redirect "/index.html"
end
get "/version" do
"#{version}"
end
Kemal.run

View File

@ -28,9 +28,18 @@ module Faaso
))
rescue ex : Docr::Errors::DockerAPIError
raise ex if ex.status_code != 409 # Network already exists
end
module Commands
# Compare version with server's
def self.check_version
server_version = Crest.get(
"#{FAASO_SERVER}version/", \
user: "admin", password: "admin").body
local_version = "#{version}"
if server_version != local_version
Log.warn { "Server is version #{server_version} and client is #{local_version}" }
end
end
end

View File

@ -3,6 +3,10 @@ require "colorize"
require "docopt"
require "rucksack"
macro version
"{{ `grep version shard.yml | cut -d: -f2` }}".strip()
end
struct LogFormat < Log::StaticFormatter
@@colors = {
"FATAL" => :red,
@ -82,6 +86,8 @@ when .fetch("secret", false)
status = Faaso::Commands::Secret.new.run(ans, ans["FUNKO"].as(String), ans["SECRET"].as(String))
when .fetch("status", false)
status = Faaso::Commands::Status.new.run(ans, ans["FUNKO"].as(String))
when .fetch("version", false)
Log.info { "#{version}" }
end
exit(status)