faaso up now supports remote call
This commit is contained in:
parent
58813cbd27
commit
394a004d8d
@ -48,6 +48,18 @@ ReversePath "/admin/" "http://127.0.0.1:3000/"
|
||||
proxy_config
|
||||
end
|
||||
|
||||
# Bring up the funko
|
||||
get "/funko/:name/up/" do |env|
|
||||
name = env.params.url["name"]
|
||||
response = run_faaso(["up", name])
|
||||
|
||||
if response["exit_code"] != 0
|
||||
halt env, status_code: 500, response: response.to_json
|
||||
else
|
||||
response.to_json
|
||||
end
|
||||
end
|
||||
|
||||
# Build image for funko received as "funko.tgz"
|
||||
# TODO: This may take a while, consider using something like
|
||||
# mosquito-cr/mosquito to make it a job queue
|
||||
|
22
src/faaso.cr
22
src/faaso.cr
@ -105,7 +105,7 @@ module Faaso
|
||||
end
|
||||
end
|
||||
|
||||
# Bring up one or more funkos.
|
||||
# Bring up one or more funkos by name.
|
||||
#
|
||||
# This doesn't guarantee that they will be running the latest
|
||||
# version, and it will try to recicle paused and exited containers.
|
||||
@ -124,8 +124,26 @@ module Faaso
|
||||
end
|
||||
|
||||
def run
|
||||
funkos = Funko.from_paths(@arguments)
|
||||
funkos = Funko.from_names(@arguments)
|
||||
funkos.each do |funko|
|
||||
local = @options.@bool["local"]
|
||||
|
||||
if !local
|
||||
begin
|
||||
response = Crest.get("#{FAASO_API}funko/#{funko.name}/up/",
|
||||
user: "admin", password: "admin")
|
||||
body = JSON.parse(response.body)
|
||||
puts body["stdout"]
|
||||
next
|
||||
rescue ex : Crest::InternalServerError
|
||||
puts "Error bringing up #{funko.name}"
|
||||
body = JSON.parse(ex.response.body)
|
||||
puts body["stdout"]
|
||||
puts body["stderr"]
|
||||
exit 1
|
||||
end
|
||||
end
|
||||
|
||||
if funko.image_history.empty?
|
||||
puts "Error: no images available for #{funko.name}:latest"
|
||||
next
|
||||
|
@ -47,6 +47,14 @@ class Funko
|
||||
}
|
||||
end
|
||||
|
||||
# Create an array of funkos just from names. These are limited in function
|
||||
# and can't call `prepare_build` or some other functionality
|
||||
def self.from_names(names : Array(String)) : Array(Funko)
|
||||
names.map { |name|
|
||||
Funko.from_yaml("name: #{name}")
|
||||
}
|
||||
end
|
||||
|
||||
# Setup the target directory `path` with all the files needed
|
||||
# to build a docker image
|
||||
def prepare_build(path : Path)
|
||||
|
Loading…
Reference in New Issue
Block a user