initial commit
This commit is contained in:
commit
11f1066619
9
.editorconfig
Normal file
9
.editorconfig
Normal file
@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*.cr]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
/docs/
|
||||
/lib/
|
||||
/bin/
|
||||
/.shards/
|
||||
*.dwarf
|
41
DESIGN.md
Normal file
41
DESIGN.md
Normal file
@ -0,0 +1,41 @@
|
||||
# Design for FaaSO
|
||||
|
||||
## Introduction
|
||||
|
||||
This should explain the high-level plan. Of course once I start
|
||||
writing the thing it will change, because I am *agile* like that.
|
||||
|
||||
So, here it is:
|
||||
|
||||
## Function Builder
|
||||
|
||||
Take the function code, some ancillary files, and build a docker
|
||||
image using a template so that it can be executed.
|
||||
|
||||
Additionally:
|
||||
|
||||
* The image should be runnable with a standard `docker run` command
|
||||
* A test can be defined to check if the function is working
|
||||
|
||||
## Function Runner
|
||||
|
||||
Given a description of what functions should be made available at
|
||||
which endpoints, like
|
||||
|
||||
/sum -> sum
|
||||
/mul -> multiply
|
||||
|
||||
It should:
|
||||
|
||||
* Start those functions via docker, running in specific ports
|
||||
* Create a reverse proxy that routes the paths to the correct function
|
||||
* Start/reload/configure the proxy as needed
|
||||
* Periodically check the functions are still running
|
||||
|
||||
Intentionally: No HA yet, no multiple instances of functions, no
|
||||
up/downscaling, no multiple versions routed by header.
|
||||
|
||||
# Implementation Ideas
|
||||
|
||||
* caddy for proxy? It's simple, fast, API-configurable.
|
||||
* Local docker registry for images? See https://www.docker.com/blog/how-to-use-your-own-registry-2/
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Roberto Alsina <roberto.alsina@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
27
README.md
Normal file
27
README.md
Normal file
@ -0,0 +1,27 @@
|
||||
# faaso
|
||||
|
||||
TODO: Write a description here
|
||||
|
||||
## Installation
|
||||
|
||||
TODO: Write installation instructions here
|
||||
|
||||
## Usage
|
||||
|
||||
TODO: Write usage instructions here
|
||||
|
||||
## Development
|
||||
|
||||
TODO: Write development instructions here
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork it (<https://github.com/your-github-user/faaso/fork>)
|
||||
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||
3. Commit your changes (`git commit -am 'Add some feature'`)
|
||||
4. Push to the branch (`git push origin my-new-feature`)
|
||||
5. Create a new Pull Request
|
||||
|
||||
## Contributors
|
||||
|
||||
- [Roberto Alsina](https://github.com/your-github-user) - creator and maintainer
|
13
shard.yml
Normal file
13
shard.yml
Normal file
@ -0,0 +1,13 @@
|
||||
name: faaso
|
||||
version: 0.1.0
|
||||
|
||||
authors:
|
||||
- Roberto Alsina <roberto.alsina@gmail.com>
|
||||
|
||||
targets:
|
||||
faaso:
|
||||
main: src/faaso.cr
|
||||
|
||||
crystal: '>= 1.12.2'
|
||||
|
||||
license: MIT
|
9
spec/faaso_spec.cr
Normal file
9
spec/faaso_spec.cr
Normal file
@ -0,0 +1,9 @@
|
||||
require "./spec_helper"
|
||||
|
||||
describe Faaso do
|
||||
# TODO: Write tests
|
||||
|
||||
it "works" do
|
||||
false.should eq(true)
|
||||
end
|
||||
end
|
2
spec/spec_helper.cr
Normal file
2
spec/spec_helper.cr
Normal file
@ -0,0 +1,2 @@
|
||||
require "spec"
|
||||
require "../src/faaso"
|
6
src/faaso.cr
Normal file
6
src/faaso.cr
Normal file
@ -0,0 +1,6 @@
|
||||
# TODO: Write documentation for `Faaso`
|
||||
module Faaso
|
||||
VERSION = "0.1.0"
|
||||
|
||||
# TODO: Put your code here
|
||||
end
|
Loading…
Reference in New Issue
Block a user