Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: interactive project initialization #498

Merged
merged 1 commit into from Dec 2, 2022

Conversation

Procrat
Copy link
Contributor

@Procrat Procrat commented Nov 29, 2022

PR for #493.

All the functionality should be there. However, when it came to writing tests, I noticed that the current integration test setup can't really test stdin/stdout. I think we'd have to call it as a standalone program to do so. Does anyone have any thoughts on that? I'm happy to try and change it to such a setup tomorrow. Edit: I've added some tests with that sort of setup now.

cc @oddgrd @brokad

@Procrat Procrat force-pushed the feat/interactive-project-init branch from d86872b to 898c264 Compare November 30, 2022 09:02
@Procrat Procrat force-pushed the feat/interactive-project-init branch from 898c264 to 9d92bb1 Compare November 30, 2022 11:12
@Procrat
Copy link
Contributor Author

Procrat commented Nov 30, 2022

I've written some tests for the interactive route that interact with cargo-shuttle as an executable now.

@Procrat Procrat marked this pull request as ready for review November 30, 2022 11:14
@Procrat Procrat force-pushed the feat/interactive-project-init branch from 9d92bb1 to 5fd5c8d Compare November 30, 2022 11:28
@Procrat
Copy link
Contributor Author

Procrat commented Nov 30, 2022

(Rebased.)

@Procrat Procrat force-pushed the feat/interactive-project-init branch from 5fd5c8d to 696a211 Compare November 30, 2022 12:45
@Procrat
Copy link
Contributor Author

Procrat commented Nov 30, 2022

Hmmm, the test run::actix_web_hello_world seems to be failing, but I can't immediately see how it would be related to these changes. Could it be that it was already failing before?

Copy link
Member

@chesedo chesedo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really awesome, thanks @Procrat!

I like how this flows for users. Maybe we can refactor the code a bit to make its reading flow simpler.

cargo-shuttle/src/lib.rs Show resolved Hide resolved
cargo-shuttle/tests/integration/init.rs Outdated Show resolved Hide resolved
cargo-shuttle/tests/integration/init.rs Outdated Show resolved Hide resolved
cargo-shuttle/src/init.rs Outdated Show resolved Hide resolved
cargo-shuttle/src/args.rs Show resolved Hide resolved
cargo-shuttle/src/init.rs Show resolved Hide resolved
cargo-shuttle/src/lib.rs Show resolved Hide resolved
@Procrat
Copy link
Contributor Author

Procrat commented Nov 30, 2022

Thanks for the thoughtful review, @chesedo! I'll have a look at it tomorrow :)

@Procrat Procrat force-pushed the feat/interactive-project-init branch from 696a211 to 18af60d Compare December 1, 2022 08:41
@Procrat
Copy link
Contributor Author

Procrat commented Dec 1, 2022

Thanks for all the good suggestions, @chesedo! I've incorporated them now. Any thoughts on this question?

@Procrat Procrat force-pushed the feat/interactive-project-init branch 2 times, most recently from e3c4269 to f1265ad Compare December 1, 2022 12:11
@Procrat
Copy link
Contributor Author

Procrat commented Dec 1, 2022

Everything's good to go on my end 👍

Copy link
Member

@chesedo chesedo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some small optimization suggestions 😄

cargo-shuttle/src/args.rs Outdated Show resolved Hide resolved
cargo-shuttle/src/args.rs Outdated Show resolved Hide resolved
@Procrat Procrat force-pushed the feat/interactive-project-init branch from f1265ad to 233ef93 Compare December 1, 2022 12:44
@Procrat
Copy link
Contributor Author

Procrat commented Dec 1, 2022

Good idea! Done!

Copy link
Member

@chesedo chesedo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This turned out great, thanks @Procrat!

@chesedo chesedo merged commit 887dce4 into shuttle-hq:main Dec 2, 2022
@Procrat Procrat deleted the feat/interactive-project-init branch December 2, 2022 13:01
chesedo added a commit that referenced this pull request Dec 21, 2022
* feat(blog): add missing sqlx migration code to auth blog post (#408)

* feat(blog): add missing sqlx migration code

* fix: nit

* misc: 0.7.0 (#407)

* misc: drop patches

* infra: pin postgres to version 14

* refactor: fix thruster example app name

* infra: db_fqdn fix

* tests: warp hello world

* fix(cargo-shuttle): prevent crash when config owned by root (#409)

* fix: use correct timeout start point (#410)

* fix: use correct timeout start point

* tweak health check frequency

* fmt

* feat(deployer): implement container memory limits (#411)

* feat(deployer): implement container memory limits

* test: fix warp integration test

* bug: `transport error` when trying to connect to provisioner (#416)

* bug: keep provisioner connections alive

* refactor: reduce scope provisioner client is running

* feat: gateway admin revive (#412)

* feat: gateway admin command (revive)

* fmt

* clippy

* refactor: revive deployers using GatewayService

* tests: add ContextArgs

* refactor: simplify passing around of fqdn

* tests: update test archive

* refactor: remove stray exec.rs file

* refactor: unused is_error()

Co-authored-by: chesedo <pieter@chesedo.me>

* bug: timeout curl health check on deployer (#415)

* Article/beta article (#420)

* updated docs url

* beta article w/ damiens corrections

* Feat(www): shuttle beta signup (#421)

* feat(www): add beta signup form

* feat: add formspree endpoint

* feat: remove socials footer from beta page

* feat: add dummy text above sign up form

* feat: placeholder gif

* feat: align dummy text left

* feat: remove gif, add text

* feat: update beta page text

* feat: update the rest of the site

* bug: Fix thruster postgres example (#414)

* feat: shell completions (#343)

* bug: package Secrets.toml (#422)

* bug: package Secrets.toml

* refactor: clippy suggestion

* bug: big archives being cut off at 32 768 bytes (#423)

* refactor: set chunked header

* refactor: don't send stream across threads

Doing this is causing us to loose everything after 32 768 bytes. Don't
know the reason why 🤷

* refactor: fix health check

* refactor: remove unused use

* chore: v0.7.1 (#424)

* chore: v0.7.1

* chore: resources v0.7.1

* docs: v0.7.1

* tests: v0.7.1

* tests: fix warp test

* tests: fix warp test

* tests: fix secrets e2e test

* ci: remove hard coded DD env

* misc: unintended shell changes

* refactor: cargo check suggestion

* refactor: provide better context for errors (#430)

* refactor: do our own health checks on deployer containers (#427)

* refactor: do our own health checks on deployer containers

We are doing this because the docker health checks eats up 25% of a
single CPU core and we are spinning up many of these containers.

https://www.reddit.com/r/docker/comments/b68r53/healtchecks_add_high_cpu_load/
moby/moby#39102

* refactor: clippy suggestion

* bug: clear build folder before extracting (#428)

* refactor: make sure extract directory is created

* tests: test build folder is cleared

* bug: clear the build directory

* added some images (#435)

* feat(www): beta blog updates (#434)

* feat: add captioned image component (#440)

* feat: add captioned image component

* feat: update images

* feat: add header caption

* fix: quotes in header

* www: post small tweaks (#439)

* a few tweaks to the article

* feat: update gif

Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* feat: replace cursed gif (#441)

* Feat/update contributing (#426)

* feat(docs): update contributing.md

* feat(e2e): make e2e admin user unique

* feat(e2e): clean up e2e test projects on test complete

* feat(e2e): don't fail on superuser conflict

* feat: add section about contributing to docs

* feat: remove unwrap, add comment to drop impl

* tests: update e2e test key

Co-authored-by: chesedo <pieter@chesedo.me>

* chore: v0.7.2 (#442)

* chore: v0.7.2

* chore: resources v0.7.2

* docs: v0.7.2

* misc: v0.7.2

* misc: script to deploy all examples

* misc: targets for publishing crates

* misc: remove old scripts

* misc: instructions for next steps

* misc: get Cargo.lock changes

* misc: update .PHONY

* misc: show usage

* feat: link the tracing spans between services (#445)

* ci: DD environments

* refactor: try lowering broadcast channel for quicker feedback

* refactor: propagate tracing across threads in deployer

* refactor: propagate tracing between gateway and deployer

* refactor: trace account name

* refactor: associate project with each container

* feat: trace and propagate proxy in gateway

* feat: gateway record project

* refactor: tracing use 'error' for errors

* refactor: fix comment

* refactor: drop recording unused field

* Add docker-compose extra flags param in Makefile (#446)

* Add docker-compose extra flags param

* rename to avoid confusion

* misc: restructure repo (#453)

* misc: only run e2e on production

* misc: move www to shuttle-hq/www repo

* misc: move examples to shuttle-hq/examples repo

* refactor: update links to examples repo

* ci: remove checking fmt of examples

* ci: checkout submodules

* refactor: tf files have been moved to shuttle-hq/terraform-aws-shuttle

* fix: wrap around common::ProjectName for parsing (#451)

* fix: gateway state drifts, health checks and project recreation (#447)

* misc: add more helpful flags to Makefile

* misc: remove old migrator (#463)

* feat: add account_tier column (#458)

* feat: prefetch shuttle-service crates (#461)

* feat: prefetch shuttle-service crates

* refactor: add comment to prepare.sh files

* Feat: revive via gateway endpoint (#460)

* feat: revive via gateway api initial commit

* feat: cleanup, document gateway testing

* refactor: use post for revive endpoint

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: send task to global queue

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: create a new admin cli binary crate (#462)

* feat: init shuttle-admin

* feat: add args

* feat: simple client

* feat: read api_key

* refactor: hook it all together

* refactor: switch to post

* fix: broken link (#467)

* fix: add timeout to health checks (#468)

* fix: add timeout to health checks

* Parameterise the timeout

* rollback on inadvertent circleci change

* misc: log out a warning when a task has been running for a long time

* longer timeouts

* Address review

* Fmt

* feat(gateway): add custom domains table and routing (#465)

* WIP feat: count recent start events before restart (#469)

* feat: count recent start events before restart

* feat: try_collect and handle error in start counter

* fix: clippy

* refactor: gateway clippy

* feat: make deployer only answer its own project (#466)

* feat: make deployer only answer its own project

* bug: use correct project name

* refactor: make backwards compatible

* Fixed Links in Readme (#477)

* refactor: base client error off response status code (#470)

* refactor: base client error off response status code

* Update common/src/models/error.rs

Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>

* refactor: use tracing

Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>

* feat: verify project exists before sending destroy task (#474)

* feat: add a custom domains admin route (#473)

Co-authored-by: Alex Krantz <alex@krantz.dev>

* bug: deployer freezes (#478)

* bug: reduce spawning to have deployer lock up less

* refactor: don't return cargo logs

* ci: green (#482)

* tests: allow longer time for build

* refactor: trim dependencies on persist

* refactor: clippy suggestion

* feat: TLS acceptor with SNI resolver (#471)

* fix: custom domain routing (#484)

* refactor: more metrics (#475)

* feat: add more metric dimensions to deployer

* feat: add more metric dimensions to gateway

* refactor: common metrics code

* refactor: forward account name

* refactor: add backend feature to deployer

* refactor: standardize naming

* refactor: cargo sort

* misc: configurable deployment tags (#486)

* feat: gateway restores removed containers (#485)

* fix: backend bumps and hot fixes (#487)

* Feature/support actix web (#491)

* Support actix-web: impl Service

* Support actix-web: cli + boilerplate code

* Support actix-web: add framework to doc comment

* Support actix-web: add e2e test

* Support actix-web: fmt

* Support actix-web: sorting toml deps

* Support actix-web: add actix-web to ci

* Support actix-web: formatted boilerplate code for actix-web hello world example

* Support actix-web: formatted boilerplate code for actix-web hello world example
Support actix-web: update cargo lock zstd dep

* Support actix-web: simplify example

* Support actix-web: add test, change example dependency

* fix: e2e test assert, reset example module

Co-authored-by: maksim <maksim@blockchaincmdt.io>
Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* Doc: Fix command to prime database with docker-compose (#502)

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

* Doc: Improve contributing documentation (#499)

In the doc it mentions to go to subfolder of examples but it was not
there :).

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

* feat: static file support for a single folder (#501)

* feat: static-folder resource

* refactor: make local client work

* refactor: make local deployer work

* feat: storage_manager

* refactor: comments

* refactor: remove unwraps and expects

* refactor: update tests

* refactor: clippy suggestion

* refactor: update version

* refactor: update readme

* refactor: update comment

* refactor: change public to static

* ci: add static-folder

* refactor: code fixes

* refactor: update tests

* refactor: update description

Co-authored-by: Damien <damienbroka@mailbox.org>

Co-authored-by: Damien <damienbroka@mailbox.org>

* ci: build binary (#483)

* ci: build binary

* ci: make tar archive

* ci: make GH draft release with artifacts

* ci: add aarch64

* ci: get version from tag

* ci: rename to linux builds

* ci: add windows

* ci: add macos

* ci: test all

* ci: put all the artifacts under a command

* ci: only on tagged

* ci: restore old

* ci: fix windows

* ci: put archive in separate folder

* ci: switch to tar

* ci: restore old

* refactor: better `cargo-binstall` support

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

* refactor: binary name

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

* feat: bump rust to 1.64, bump dependencies (#495)

* feat: bump rust to 1.64, correct contributing.md bug

* feat: bump service deps, change example branch

* fix: pin chrono to 4.22

* chore: upgrade workspace dependencies

* feat: remove aws-smithy-types

ref: smithy-lang/smithy-rs#1760

* feat: upgrade axum to 0.6 in common

* feat: upgrade to axum 0.6.0 in deployer

* feat: upgrade gateway to axum 0.6.0

* feat: upgrde sqlx to 0.6.2 in gateway

* feat: bump chrono to 0.4.23

* feat: replace deprecated chrono functions in deployer

* feat: bump chrono in common

* feat: ignore actix integration test

* feat: implement new state extractor in gateway

* feat: interactive project initialization (#498)

* feat: bump pinned rust version to 1.65 (#504)

* feat: bump pinned rust version to 1.65

 lockfile update is from binary dist PR #483

* ci: install newer protoc

* fix: special module name warning

* fix: clippy

* feat: install newer protoc in dockerfile as well

* misc: env updates (#509)

* ci: update toolchain for binaries

* misc: update dev environment

* misc: remove patches from Cargo.lock

* feat: make the folder configurable (#508)

* feat: make the folder configurable

* Update resources/static-folder/README.md

Co-authored-by: Damien <damienbroka@mailbox.org>

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: implement workspace inheritance (#506)

* refactor: switch away from cargo package (#507)

* feat: add spinner wait for `project new` and `project status --follow` (#503)

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>
Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* fix: capitalise correctly (#511)

* fix: make nice (#512)

* feat: find (soon to be) invalid project names (#479)

* feat: find (soon to be) invalid project names

* refactor: move logic to admin client

* refactor: missed axum 0.6 update (#513)

* feat: build tests in release profile, limit build workers (#514)

* feat: build tests in release profile, limit build workers

* fix: typo in manifests

* feat: create `init` project from correct dir (#518)

* misc: interactive init gif (#519)

* Feat/set examples submodule to main (#520)

* feat: revert examples submodule back to main

* feat: un-ignore actix tests

* chore: 0.8.0 (#521)

* chore: bump examples (#522)

* bug: hacking static folders (#524)

* fix: actix integration with state (#523)

* feat(gateway,deployer): add more tracing events (#500)

* feat(deployer): add more tracing events

* feat(gateway): add more tracing events

* feat: canonicalize before trace (#531)

* feat: 'clean' subcommand (#530)

* feat: 'clean' subcommand

* refactor: output cleaning is done

* Feat/set cpu limit (#529)

* feat: remove redundant actix worker limit

* feat: remove redundant build job limit

* feat: set cpu limit for deployer container

* fix: limit actix worker and build jobs to 4

* feat: add panamax for mirroring crates.io (#525)

* feat: build queue (#532)

* feat: per-project parallelism (#533)

* feat: temp validation of project name in gateway (#534)

* fix(deployer): keep Cargo.lock between deployments (#517)

* ci: remove build and push req on build binaries (#535)

* refactor: don't crash when failing to release slot (#536)

* refactor: release build slot parse type correctly (#538)

* refactor: remove prefetch (#539)

* feat: add cron job for syncing mirror (#537)

* chore: bump cargo-shuttle to 0.8.1 (#540)

* chore: bump cargo-shuttle to 0.8.1

* chore: cargo.lock

* refactor: update manifests and lockfile

implement workspace inheritance for runtime, and remove default-features from shuttle-service

* refactor: fmt

* fix: unused imports, add runtime to deploymentmanager

* feat: move storagemanager to common

* fix: storage manager imports

* fix: codegen test with outdated expected error

* fix: service tests after removing service default features

* fix: deployer tests after removing service default features

* fix: typo

* ci: attempt to fix protoc error

* fix: deployer runtime client connection

* refactor: remove redundant feature flags

* refactor: remove storage_manager from deployer crate

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>
Co-authored-by: Pieter <pieter@chesedo.me>
Co-authored-by: Alexander Krantz <alex@krantz.dev>
Co-authored-by: Damien <git@damien.sh>
Co-authored-by: Ivan <ivancernja@gmail.com>
Co-authored-by: Peter Mertz <peter.s.mertz@gmail.com>
Co-authored-by: XyLyXyRR <39663597+XyLyXyRR@users.noreply.github.com>
Co-authored-by: Damien <damienbroka@mailbox.org>
Co-authored-by: Nereuxofficial <37740907+Nereuxofficial@users.noreply.github.com>
Co-authored-by: Maxim <59533214+biryukovmaxim@users.noreply.github.com>
Co-authored-by: maksim <maksim@blockchaincmdt.io>
Co-authored-by: Federico Guerinoni <41150432+guerinoni@users.noreply.github.com>
Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>
Co-authored-by: Stijn ("stain") Seghers <stijnseghers@gmail.com>
chesedo added a commit that referenced this pull request Jan 16, 2023
* feat(blog): add missing sqlx migration code to auth blog post (#408)

* feat(blog): add missing sqlx migration code

* fix: nit

* misc: 0.7.0 (#407)

* misc: drop patches

* infra: pin postgres to version 14

* refactor: fix thruster example app name

* infra: db_fqdn fix

* tests: warp hello world

* fix(cargo-shuttle): prevent crash when config owned by root (#409)

* fix: use correct timeout start point (#410)

* fix: use correct timeout start point

* tweak health check frequency

* fmt

* feat(deployer): implement container memory limits (#411)

* feat(deployer): implement container memory limits

* test: fix warp integration test

* bug: `transport error` when trying to connect to provisioner (#416)

* bug: keep provisioner connections alive

* refactor: reduce scope provisioner client is running

* feat: gateway admin revive (#412)

* feat: gateway admin command (revive)

* fmt

* clippy

* refactor: revive deployers using GatewayService

* tests: add ContextArgs

* refactor: simplify passing around of fqdn

* tests: update test archive

* refactor: remove stray exec.rs file

* refactor: unused is_error()

Co-authored-by: chesedo <pieter@chesedo.me>

* bug: timeout curl health check on deployer (#415)

* Article/beta article (#420)

* updated docs url

* beta article w/ damiens corrections

* Feat(www): shuttle beta signup (#421)

* feat(www): add beta signup form

* feat: add formspree endpoint

* feat: remove socials footer from beta page

* feat: add dummy text above sign up form

* feat: placeholder gif

* feat: align dummy text left

* feat: remove gif, add text

* feat: update beta page text

* feat: update the rest of the site

* bug: Fix thruster postgres example (#414)

* feat: shell completions (#343)

* bug: package Secrets.toml (#422)

* bug: package Secrets.toml

* refactor: clippy suggestion

* bug: big archives being cut off at 32 768 bytes (#423)

* refactor: set chunked header

* refactor: don't send stream across threads

Doing this is causing us to loose everything after 32 768 bytes. Don't
know the reason why 🤷

* refactor: fix health check

* refactor: remove unused use

* chore: v0.7.1 (#424)

* chore: v0.7.1

* chore: resources v0.7.1

* docs: v0.7.1

* tests: v0.7.1

* tests: fix warp test

* tests: fix warp test

* tests: fix secrets e2e test

* ci: remove hard coded DD env

* misc: unintended shell changes

* refactor: cargo check suggestion

* refactor: provide better context for errors (#430)

* refactor: do our own health checks on deployer containers (#427)

* refactor: do our own health checks on deployer containers

We are doing this because the docker health checks eats up 25% of a
single CPU core and we are spinning up many of these containers.

https://www.reddit.com/r/docker/comments/b68r53/healtchecks_add_high_cpu_load/
moby/moby#39102

* refactor: clippy suggestion

* bug: clear build folder before extracting (#428)

* refactor: make sure extract directory is created

* tests: test build folder is cleared

* bug: clear the build directory

* added some images (#435)

* feat(www): beta blog updates (#434)

* feat: add captioned image component (#440)

* feat: add captioned image component

* feat: update images

* feat: add header caption

* fix: quotes in header

* www: post small tweaks (#439)

* a few tweaks to the article

* feat: update gif

Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* feat: replace cursed gif (#441)

* Feat/update contributing (#426)

* feat(docs): update contributing.md

* feat(e2e): make e2e admin user unique

* feat(e2e): clean up e2e test projects on test complete

* feat(e2e): don't fail on superuser conflict

* feat: add section about contributing to docs

* feat: remove unwrap, add comment to drop impl

* tests: update e2e test key

Co-authored-by: chesedo <pieter@chesedo.me>

* chore: v0.7.2 (#442)

* chore: v0.7.2

* chore: resources v0.7.2

* docs: v0.7.2

* misc: v0.7.2

* misc: script to deploy all examples

* misc: targets for publishing crates

* misc: remove old scripts

* misc: instructions for next steps

* misc: get Cargo.lock changes

* misc: update .PHONY

* misc: show usage

* feat: link the tracing spans between services (#445)

* ci: DD environments

* refactor: try lowering broadcast channel for quicker feedback

* refactor: propagate tracing across threads in deployer

* refactor: propagate tracing between gateway and deployer

* refactor: trace account name

* refactor: associate project with each container

* feat: trace and propagate proxy in gateway

* feat: gateway record project

* refactor: tracing use 'error' for errors

* refactor: fix comment

* refactor: drop recording unused field

* Add docker-compose extra flags param in Makefile (#446)

* Add docker-compose extra flags param

* rename to avoid confusion

* misc: restructure repo (#453)

* misc: only run e2e on production

* misc: move www to shuttle-hq/www repo

* misc: move examples to shuttle-hq/examples repo

* refactor: update links to examples repo

* ci: remove checking fmt of examples

* ci: checkout submodules

* refactor: tf files have been moved to shuttle-hq/terraform-aws-shuttle

* fix: wrap around common::ProjectName for parsing (#451)

* fix: gateway state drifts, health checks and project recreation (#447)

* misc: add more helpful flags to Makefile

* misc: remove old migrator (#463)

* feat: add account_tier column (#458)

* feat: prefetch shuttle-service crates (#461)

* feat: prefetch shuttle-service crates

* refactor: add comment to prepare.sh files

* Feat: revive via gateway endpoint (#460)

* feat: revive via gateway api initial commit

* feat: cleanup, document gateway testing

* refactor: use post for revive endpoint

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: send task to global queue

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: create a new admin cli binary crate (#462)

* feat: init shuttle-admin

* feat: add args

* feat: simple client

* feat: read api_key

* refactor: hook it all together

* refactor: switch to post

* fix: broken link (#467)

* fix: add timeout to health checks (#468)

* fix: add timeout to health checks

* Parameterise the timeout

* rollback on inadvertent circleci change

* misc: log out a warning when a task has been running for a long time

* longer timeouts

* Address review

* Fmt

* feat(gateway): add custom domains table and routing (#465)

* WIP feat: count recent start events before restart (#469)

* feat: count recent start events before restart

* feat: try_collect and handle error in start counter

* fix: clippy

* refactor: gateway clippy

* feat: make deployer only answer its own project (#466)

* feat: make deployer only answer its own project

* bug: use correct project name

* refactor: make backwards compatible

* Fixed Links in Readme (#477)

* refactor: base client error off response status code (#470)

* refactor: base client error off response status code

* Update common/src/models/error.rs

Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>

* refactor: use tracing

Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>

* feat: verify project exists before sending destroy task (#474)

* feat: add a custom domains admin route (#473)

Co-authored-by: Alex Krantz <alex@krantz.dev>

* bug: deployer freezes (#478)

* bug: reduce spawning to have deployer lock up less

* refactor: don't return cargo logs

* ci: green (#482)

* tests: allow longer time for build

* refactor: trim dependencies on persist

* refactor: clippy suggestion

* feat: TLS acceptor with SNI resolver (#471)

* fix: custom domain routing (#484)

* refactor: more metrics (#475)

* feat: add more metric dimensions to deployer

* feat: add more metric dimensions to gateway

* refactor: common metrics code

* refactor: forward account name

* refactor: add backend feature to deployer

* refactor: standardize naming

* refactor: cargo sort

* misc: configurable deployment tags (#486)

* feat: gateway restores removed containers (#485)

* fix: backend bumps and hot fixes (#487)

* Feature/support actix web (#491)

* Support actix-web: impl Service

* Support actix-web: cli + boilerplate code

* Support actix-web: add framework to doc comment

* Support actix-web: add e2e test

* Support actix-web: fmt

* Support actix-web: sorting toml deps

* Support actix-web: add actix-web to ci

* Support actix-web: formatted boilerplate code for actix-web hello world example

* Support actix-web: formatted boilerplate code for actix-web hello world example
Support actix-web: update cargo lock zstd dep

* Support actix-web: simplify example

* Support actix-web: add test, change example dependency

* fix: e2e test assert, reset example module

Co-authored-by: maksim <maksim@blockchaincmdt.io>
Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* Doc: Fix command to prime database with docker-compose (#502)

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

* Doc: Improve contributing documentation (#499)

In the doc it mentions to go to subfolder of examples but it was not
there :).

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

* feat: static file support for a single folder (#501)

* feat: static-folder resource

* refactor: make local client work

* refactor: make local deployer work

* feat: storage_manager

* refactor: comments

* refactor: remove unwraps and expects

* refactor: update tests

* refactor: clippy suggestion

* refactor: update version

* refactor: update readme

* refactor: update comment

* refactor: change public to static

* ci: add static-folder

* refactor: code fixes

* refactor: update tests

* refactor: update description

Co-authored-by: Damien <damienbroka@mailbox.org>

Co-authored-by: Damien <damienbroka@mailbox.org>

* ci: build binary (#483)

* ci: build binary

* ci: make tar archive

* ci: make GH draft release with artifacts

* ci: add aarch64

* ci: get version from tag

* ci: rename to linux builds

* ci: add windows

* ci: add macos

* ci: test all

* ci: put all the artifacts under a command

* ci: only on tagged

* ci: restore old

* ci: fix windows

* ci: put archive in separate folder

* ci: switch to tar

* ci: restore old

* refactor: better `cargo-binstall` support

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

* refactor: binary name

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

* feat: bump rust to 1.64, bump dependencies (#495)

* feat: bump rust to 1.64, correct contributing.md bug

* feat: bump service deps, change example branch

* fix: pin chrono to 4.22

* chore: upgrade workspace dependencies

* feat: remove aws-smithy-types

ref: smithy-lang/smithy-rs#1760

* feat: upgrade axum to 0.6 in common

* feat: upgrade to axum 0.6.0 in deployer

* feat: upgrade gateway to axum 0.6.0

* feat: upgrde sqlx to 0.6.2 in gateway

* feat: bump chrono to 0.4.23

* feat: replace deprecated chrono functions in deployer

* feat: bump chrono in common

* feat: ignore actix integration test

* feat: implement new state extractor in gateway

* feat: interactive project initialization (#498)

* feat: bump pinned rust version to 1.65 (#504)

* feat: bump pinned rust version to 1.65

 lockfile update is from binary dist PR #483

* ci: install newer protoc

* fix: special module name warning

* fix: clippy

* feat: install newer protoc in dockerfile as well

* misc: env updates (#509)

* ci: update toolchain for binaries

* misc: update dev environment

* misc: remove patches from Cargo.lock

* feat: make the folder configurable (#508)

* feat: make the folder configurable

* Update resources/static-folder/README.md

Co-authored-by: Damien <damienbroka@mailbox.org>

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: implement workspace inheritance (#506)

* refactor: switch away from cargo package (#507)

* feat: add spinner wait for `project new` and `project status --follow` (#503)

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>
Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* fix: capitalise correctly (#511)

* fix: make nice (#512)

* feat: find (soon to be) invalid project names (#479)

* feat: find (soon to be) invalid project names

* refactor: move logic to admin client

* refactor: missed axum 0.6 update (#513)

* feat: build tests in release profile, limit build workers (#514)

* feat: build tests in release profile, limit build workers

* fix: typo in manifests

* feat: create `init` project from correct dir (#518)

* misc: interactive init gif (#519)

* Feat/set examples submodule to main (#520)

* feat: revert examples submodule back to main

* feat: un-ignore actix tests

* chore: 0.8.0 (#521)

* chore: bump examples (#522)

* bug: hacking static folders (#524)

* fix: actix integration with state (#523)

* feat(gateway,deployer): add more tracing events (#500)

* feat(deployer): add more tracing events

* feat(gateway): add more tracing events

* feat: canonicalize before trace (#531)

* feat: 'clean' subcommand (#530)

* feat: 'clean' subcommand

* refactor: output cleaning is done

* Feat/set cpu limit (#529)

* feat: remove redundant actix worker limit

* feat: remove redundant build job limit

* feat: set cpu limit for deployer container

* fix: limit actix worker and build jobs to 4

* feat: add panamax for mirroring crates.io (#525)

* feat: build queue (#532)

* feat: per-project parallelism (#533)

* feat: temp validation of project name in gateway (#534)

* fix(deployer): keep Cargo.lock between deployments (#517)

* ci: remove build and push req on build binaries (#535)

* refactor: don't crash when failing to release slot (#536)

* refactor: release build slot parse type correctly (#538)

* refactor: remove prefetch (#539)

* feat: add cron job for syncing mirror (#537)

* chore: bump cargo-shuttle to 0.8.1 (#540)

* chore: bump cargo-shuttle to 0.8.1

* chore: cargo.lock

* test: fixes (#554)

* tests: custom domains

* tests: end to end

* Refactor: remove deprecated auth command (#550)

* refactor: remove deprecated auth command

* docs: update main readme

* ci: add Makefile command for Windows to convert .sh files to LF format (#555)

* Add documentation for unblocking Windows CRLF

+ Add documentation for unblocking CRLF issues in Windows using git commands

* refactor: footnote for git link, remove extra newlines

Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* Fix: dependencies compiled with incompatible versions of rustc (#545)

* feat: disable honor_rust_version

* feat: add rust toolchain override to deployer

* feat: remove rust-toolchain from deployer

* feat: add RUSTUP_TOOLCHAIN env to deployer container

* feat: get currently installed rustc version

* fix: better naming

* feat: set containerfile rust version via makefile

also set the RUSTUP_TOOLCHAIN env var via the dockerfile, and pass it to deployers

* refactor: remove unused dep

Co-authored-by: Pieter <pieter@chesedo.me>

* refactor: remove toolchain env from deployer config

Co-authored-by: Pieter <pieter@chesedo.me>

* feat: create subcommand to list all projects of calling account (#553)

* feat: create subcommand to list all projects of calling account

* fix: filter query by account name

* tests: iter_user_projects_detailed

Co-authored-by: chesedo <pieter@chesedo.me>

* bug: deployer drifting state (#548)

* ci: fix bin builds (#546)

* ci: comment out other jobs than linux bins

* ci: try without tag

* feat: set git tag with git describe

* feat: echo tag in CI for debugging

* fix: set tag earlier for testing

* ci: echo artifacts directory

* ci: pass tag via parameters

* ci: move artifacts in target sub directory

* ci: create artifacts subdir

* ci: test draft release

* ci: authenticate ghr

* ci: try with symlink

* ci: revert symlink, cp bins from subdirs before release

* ci: flatten artifacts dir before releasing

* ci: set-tag command

* ci: fix invalid config

* fix: invalid config

* ci: test if artifacts flattening command works for win bin

* ci: enable linux bin build too

* ci: remove environment field

* ci: check artifacts dir structure

* ci: tweak ghr command and verify tag is set

* ci: include tag in make-artifact env

* fix: invalid command

* fix: incorrect path to bash.env

* ci: set tag in env in preceding step

* ci: clean up, add comments

* fix: rm path

* ci: re-enable all workflows, remove tag filters

* fix: formatting

* update contributing (#556)

Make docker compose commands consistent

* feat: Support Poise (#560)

* feat: impl Service for Poise

* feat(poise): add to ci

* doc(poise): add link to poise example

* feat(poise): add poise to cargo shuttle init

Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* feat: add flag for router IP local run (#565)

* feat: add flag for router IP local run

* refactor: amend ipaddr setting, local run init fn

* refactor: delete unnecessary dependency

Forgot to delete a dependency and it looks like I can't squash commits, whoops 🤦

* Revert "refactor: delete unnecessary dependency"

This reverts commit 1794cc6.

* refactor: remove unnecessary dep (amendment)
Re-pushing this amendment but without the git diff. Probably should have changed that before submitting initially.

* clippy

* amendment from clippy warning (needless borrow)

* refactor: apply cargo fmt diffs

* refactor: return URL from run test setup fn
+ cargo_shuttle_run() now returns a string containing the full base URL instead of port
+ Relevant changes have been made to tests to account for this

* refactor: change flag name to be 'external'

Changed as per discussion on the PR.

* refactor: use passed args directly for struct

* test: make sure tests align to proper folders

Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>

* bug: no networks (#541)

* refactor: connect to user network on startup

* feat: revive containers not connected to the user network

* refactor: attach network first

* refactor: revive created containers

* feat: attaching state

* refactor: resetting some code

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>
Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>
Co-authored-by: Alexander Krantz <alex@krantz.dev>
Co-authored-by: Damien <git@damien.sh>
Co-authored-by: Ivan <ivancernja@gmail.com>
Co-authored-by: Peter Mertz <peter.s.mertz@gmail.com>
Co-authored-by: XyLyXyRR <39663597+XyLyXyRR@users.noreply.github.com>
Co-authored-by: Damien <damienbroka@mailbox.org>
Co-authored-by: Nereuxofficial <37740907+Nereuxofficial@users.noreply.github.com>
Co-authored-by: Maxim <59533214+biryukovmaxim@users.noreply.github.com>
Co-authored-by: maksim <maksim@blockchaincmdt.io>
Co-authored-by: Federico Guerinoni <41150432+guerinoni@users.noreply.github.com>
Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>
Co-authored-by: Stijn ("stain") Seghers <stijnseghers@gmail.com>
Co-authored-by: Joshua Mo <102877324+joshua-mo-143@users.noreply.github.com>
Co-authored-by: Emma <85257928+emmakuen@users.noreply.github.com>
Co-authored-by: Oleks Gnatovskyi <22867443+alekspickle@users.noreply.github.com>
Co-authored-by: Anafabula <57800226+Anafabula@users.noreply.github.com>
chesedo added a commit that referenced this pull request Mar 20, 2023
* feat: shuttle-serenity initial commit poc (#429)

* feat: shuttle-serenity initial commit poc

* remove shuttle-service

* refactor: drop more shuttle_service stuff

* refactor: drop default serenity framework

* misc: add wasm32-wasi to nix shell

* refactor: cargo sort

* refactor: cargo fmt

Co-authored-by: chesedo <pieter@chesedo.me>

* shuttle next wrapper POC (#431)

* feat: runtime skeleton

* feat: cleanup

* feat: update cargo.lock, sort deps

* fix: typo

* refactor: create runtimes workspace (#432)

* refactor: rename plugins to runtimes

* refactor: drop serenity folder

* refactor: rename runtime to shuttle-next

* refactor: prepare shuttle-legacy runtime

* feat: add   --provisioner-address arg to both runtimes (#433)

* refactor: fix up dependencies

* feat: add --provisioner-address to both runtimes

* feat: create a control plane interface (part 1) (#436)

* feat: add proto for runtimes

* refactor: legacy move main to lib

* feat: impl Runtime server for legacy

* feat: impl Runtime server for next

* refactor: combine runtimes into one (#438)

* feat: add --legacy flag

* refactor: merge next and legacy runtimes

* refactor: merge proto crates

* refactor: rename to runtime

* refactor: promote runtime

* refactor: update README.md

* refactor: cargo sort

* feat(deployer): add support for building wasm projects (#437)

* feat: move factory to runtime (#444)

* feat: initial commit of moving factory to runtime

* feat: replace deployer factory with dummy,
clean commented code

* feat: update legacy runtime readme

* WIP feat: start runtime from deployer (#450)

* WIP feat: start runtime from deployer

* feat: attempt to start runtime as a child process

* fix: add current dir

* feat: clean up, update readme

* feat: use cargo manifest dir for runtime path

* refactor: clean up, fmt

* refactor: clippy warnings for Eq

Co-authored-by: chesedo <pieter@chesedo.me>

* feat: get logs from runtime (#459)

* feat: get logs from runtime

* refactor: trim down deployer

* refactor: start runtime earlier

* refactor: connect to client earlier

* refactor: hook runtime logs to persistence

* bug: associate deployment id with logs

* refactor: cleanup

* feat: make sure grpc connection stays open

* feat(shuttle-next): first edition of axum-wasm router (#472)

* feat(shuttle-next): POC of axum wasm router

* feat: use std mutex

* feat: serialize/deserialize http requests to rmp

this serializes/deserializes http requests across the ffi to the axum-wasm router, using the rust messagepack dataformat. sending the body is still a wip

* feat: serialize the full HTTP req/res to rmp

* fix: comment typo

* feat: start hyper with tonic and serve wasm router

* feat: clone inner router arc

* feat: send request body without serialization

* docs: todo comment

* feat: write response body

* fix: serialize response parts

* feat: deserialize parts directly from reader

this also adds a new fd to separate streaming of body and parts

* feat: add axum-wasm to runtime cli

* refactor: remove unused method

* refactor: typo

Co-authored-by: Pieter <pieter@chesedo.me>

* refactor: comments, clean up wrappers

* refactor: move axum-wasm utils to shuttle-common

* refactor: fmt

* refactor: clippy

Co-authored-by: Pieter <pieter@chesedo.me>

* Feat(shuttle-next): stop runtime services (#481)

* feat: add tonic endpoint to stop runtime services

* refactor: use tracing

* feat: implement stop method for serenity bot

* feat: install protoc 21.9 in dockerfile

* refactor: comment

* feat: convert uuid bytes to string then uuid

* docs: update readme

* docs: update readme for serenity bot

* feat: implement stop for axum-wasm and document it

* ci: install newer protoc in CI

* feat: remove axum-wasm feature in runtime for now

we will come back to this later and likely split the runtime by features

* docs: remove feature flags from readme

* fix: clippy

* fix: clippy

* fix: clippy

* feat: send kill signal without spawning task

* feat: return error response on kill_tx err

* feat(next): expand macro into axum routes (#488)

* feat: app codegen model

* refactor: qualify all namespaces

* feat: low-level wasi export fn

* refactor: restrict to supported axum methods

* Feat: parse shuttle::endpoint macro (#490)

* feat: parse params

* feat: parse app

* feat: add test for missing endpoint attribute

* test: invalid args, params and syntax

* feat: check for and test no params

* feat: don't emit error for missing annotation

this way users can create separate functions for their endpoint logic

* fix: remove missing attribute error, not param

* refactor: reword comment

Co-authored-by: Pieter <pieter@chesedo.me>

* feat: duplicate param test, address review

* feat: only strip endpoint attributes

* feat: check for extra endpoint attributes

* refactor: clearer error span for extra endpoints

* feat: has_err variable to group param errors

* refactor: remove optional hint

Co-authored-by: Pieter <pieter@chesedo.me>

* docs: add TODO for multiple endpoint attributes

Co-authored-by: Pieter <pieter@chesedo.me>

* feat: merge main into shuttle-next (#543)

* feat(blog): add missing sqlx migration code to auth blog post (#408)

* feat(blog): add missing sqlx migration code

* fix: nit

* misc: 0.7.0 (#407)

* misc: drop patches

* infra: pin postgres to version 14

* refactor: fix thruster example app name

* infra: db_fqdn fix

* tests: warp hello world

* fix(cargo-shuttle): prevent crash when config owned by root (#409)

* fix: use correct timeout start point (#410)

* fix: use correct timeout start point

* tweak health check frequency

* fmt

* feat(deployer): implement container memory limits (#411)

* feat(deployer): implement container memory limits

* test: fix warp integration test

* bug: `transport error` when trying to connect to provisioner (#416)

* bug: keep provisioner connections alive

* refactor: reduce scope provisioner client is running

* feat: gateway admin revive (#412)

* feat: gateway admin command (revive)

* fmt

* clippy

* refactor: revive deployers using GatewayService

* tests: add ContextArgs

* refactor: simplify passing around of fqdn

* tests: update test archive

* refactor: remove stray exec.rs file

* refactor: unused is_error()

Co-authored-by: chesedo <pieter@chesedo.me>

* bug: timeout curl health check on deployer (#415)

* Article/beta article (#420)

* updated docs url

* beta article w/ damiens corrections

* Feat(www): shuttle beta signup (#421)

* feat(www): add beta signup form

* feat: add formspree endpoint

* feat: remove socials footer from beta page

* feat: add dummy text above sign up form

* feat: placeholder gif

* feat: align dummy text left

* feat: remove gif, add text

* feat: update beta page text

* feat: update the rest of the site

* bug: Fix thruster postgres example (#414)

* feat: shell completions (#343)

* bug: package Secrets.toml (#422)

* bug: package Secrets.toml

* refactor: clippy suggestion

* bug: big archives being cut off at 32 768 bytes (#423)

* refactor: set chunked header

* refactor: don't send stream across threads

Doing this is causing us to loose everything after 32 768 bytes. Don't
know the reason why 🤷

* refactor: fix health check

* refactor: remove unused use

* chore: v0.7.1 (#424)

* chore: v0.7.1

* chore: resources v0.7.1

* docs: v0.7.1

* tests: v0.7.1

* tests: fix warp test

* tests: fix warp test

* tests: fix secrets e2e test

* ci: remove hard coded DD env

* misc: unintended shell changes

* refactor: cargo check suggestion

* refactor: provide better context for errors (#430)

* refactor: do our own health checks on deployer containers (#427)

* refactor: do our own health checks on deployer containers

We are doing this because the docker health checks eats up 25% of a
single CPU core and we are spinning up many of these containers.

https://www.reddit.com/r/docker/comments/b68r53/healtchecks_add_high_cpu_load/
moby/moby#39102

* refactor: clippy suggestion

* bug: clear build folder before extracting (#428)

* refactor: make sure extract directory is created

* tests: test build folder is cleared

* bug: clear the build directory

* added some images (#435)

* feat(www): beta blog updates (#434)

* feat: add captioned image component (#440)

* feat: add captioned image component

* feat: update images

* feat: add header caption

* fix: quotes in header

* www: post small tweaks (#439)

* a few tweaks to the article

* feat: update gif

Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* feat: replace cursed gif (#441)

* Feat/update contributing (#426)

* feat(docs): update contributing.md

* feat(e2e): make e2e admin user unique

* feat(e2e): clean up e2e test projects on test complete

* feat(e2e): don't fail on superuser conflict

* feat: add section about contributing to docs

* feat: remove unwrap, add comment to drop impl

* tests: update e2e test key

Co-authored-by: chesedo <pieter@chesedo.me>

* chore: v0.7.2 (#442)

* chore: v0.7.2

* chore: resources v0.7.2

* docs: v0.7.2

* misc: v0.7.2

* misc: script to deploy all examples

* misc: targets for publishing crates

* misc: remove old scripts

* misc: instructions for next steps

* misc: get Cargo.lock changes

* misc: update .PHONY

* misc: show usage

* feat: link the tracing spans between services (#445)

* ci: DD environments

* refactor: try lowering broadcast channel for quicker feedback

* refactor: propagate tracing across threads in deployer

* refactor: propagate tracing between gateway and deployer

* refactor: trace account name

* refactor: associate project with each container

* feat: trace and propagate proxy in gateway

* feat: gateway record project

* refactor: tracing use 'error' for errors

* refactor: fix comment

* refactor: drop recording unused field

* Add docker-compose extra flags param in Makefile (#446)

* Add docker-compose extra flags param

* rename to avoid confusion

* misc: restructure repo (#453)

* misc: only run e2e on production

* misc: move www to shuttle-hq/www repo

* misc: move examples to shuttle-hq/examples repo

* refactor: update links to examples repo

* ci: remove checking fmt of examples

* ci: checkout submodules

* refactor: tf files have been moved to shuttle-hq/terraform-aws-shuttle

* fix: wrap around common::ProjectName for parsing (#451)

* fix: gateway state drifts, health checks and project recreation (#447)

* misc: add more helpful flags to Makefile

* misc: remove old migrator (#463)

* feat: add account_tier column (#458)

* feat: prefetch shuttle-service crates (#461)

* feat: prefetch shuttle-service crates

* refactor: add comment to prepare.sh files

* Feat: revive via gateway endpoint (#460)

* feat: revive via gateway api initial commit

* feat: cleanup, document gateway testing

* refactor: use post for revive endpoint

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: send task to global queue

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: create a new admin cli binary crate (#462)

* feat: init shuttle-admin

* feat: add args

* feat: simple client

* feat: read api_key

* refactor: hook it all together

* refactor: switch to post

* fix: broken link (#467)

* fix: add timeout to health checks (#468)

* fix: add timeout to health checks

* Parameterise the timeout

* rollback on inadvertent circleci change

* misc: log out a warning when a task has been running for a long time

* longer timeouts

* Address review

* Fmt

* feat(gateway): add custom domains table and routing (#465)

* WIP feat: count recent start events before restart (#469)

* feat: count recent start events before restart

* feat: try_collect and handle error in start counter

* fix: clippy

* refactor: gateway clippy

* feat: make deployer only answer its own project (#466)

* feat: make deployer only answer its own project

* bug: use correct project name

* refactor: make backwards compatible

* Fixed Links in Readme (#477)

* refactor: base client error off response status code (#470)

* refactor: base client error off response status code

* Update common/src/models/error.rs

Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>

* refactor: use tracing

Co-authored-by: Oddbjørn Grødem <29732646+oddgrd@users.noreply.github.com>

* feat: verify project exists before sending destroy task (#474)

* feat: add a custom domains admin route (#473)

Co-authored-by: Alex Krantz <alex@krantz.dev>

* bug: deployer freezes (#478)

* bug: reduce spawning to have deployer lock up less

* refactor: don't return cargo logs

* ci: green (#482)

* tests: allow longer time for build

* refactor: trim dependencies on persist

* refactor: clippy suggestion

* feat: TLS acceptor with SNI resolver (#471)

* fix: custom domain routing (#484)

* refactor: more metrics (#475)

* feat: add more metric dimensions to deployer

* feat: add more metric dimensions to gateway

* refactor: common metrics code

* refactor: forward account name

* refactor: add backend feature to deployer

* refactor: standardize naming

* refactor: cargo sort

* misc: configurable deployment tags (#486)

* feat: gateway restores removed containers (#485)

* fix: backend bumps and hot fixes (#487)

* Feature/support actix web (#491)

* Support actix-web: impl Service

* Support actix-web: cli + boilerplate code

* Support actix-web: add framework to doc comment

* Support actix-web: add e2e test

* Support actix-web: fmt

* Support actix-web: sorting toml deps

* Support actix-web: add actix-web to ci

* Support actix-web: formatted boilerplate code for actix-web hello world example

* Support actix-web: formatted boilerplate code for actix-web hello world example
Support actix-web: update cargo lock zstd dep

* Support actix-web: simplify example

* Support actix-web: add test, change example dependency

* fix: e2e test assert, reset example module

Co-authored-by: maksim <maksim@blockchaincmdt.io>
Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* Doc: Fix command to prime database with docker-compose (#502)

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

* Doc: Improve contributing documentation (#499)

In the doc it mentions to go to subfolder of examples but it was not
there :).

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>

* feat: static file support for a single folder (#501)

* feat: static-folder resource

* refactor: make local client work

* refactor: make local deployer work

* feat: storage_manager

* refactor: comments

* refactor: remove unwraps and expects

* refactor: update tests

* refactor: clippy suggestion

* refactor: update version

* refactor: update readme

* refactor: update comment

* refactor: change public to static

* ci: add static-folder

* refactor: code fixes

* refactor: update tests

* refactor: update description

Co-authored-by: Damien <damienbroka@mailbox.org>

Co-authored-by: Damien <damienbroka@mailbox.org>

* ci: build binary (#483)

* ci: build binary

* ci: make tar archive

* ci: make GH draft release with artifacts

* ci: add aarch64

* ci: get version from tag

* ci: rename to linux builds

* ci: add windows

* ci: add macos

* ci: test all

* ci: put all the artifacts under a command

* ci: only on tagged

* ci: restore old

* ci: fix windows

* ci: put archive in separate folder

* ci: switch to tar

* ci: restore old

* refactor: better `cargo-binstall` support

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

* refactor: binary name

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>

* feat: bump rust to 1.64, bump dependencies (#495)

* feat: bump rust to 1.64, correct contributing.md bug

* feat: bump service deps, change example branch

* fix: pin chrono to 4.22

* chore: upgrade workspace dependencies

* feat: remove aws-smithy-types

ref: smithy-lang/smithy-rs#1760

* feat: upgrade axum to 0.6 in common

* feat: upgrade to axum 0.6.0 in deployer

* feat: upgrade gateway to axum 0.6.0

* feat: upgrde sqlx to 0.6.2 in gateway

* feat: bump chrono to 0.4.23

* feat: replace deprecated chrono functions in deployer

* feat: bump chrono in common

* feat: ignore actix integration test

* feat: implement new state extractor in gateway

* feat: interactive project initialization (#498)

* feat: bump pinned rust version to 1.65 (#504)

* feat: bump pinned rust version to 1.65

 lockfile update is from binary dist PR #483

* ci: install newer protoc

* fix: special module name warning

* fix: clippy

* feat: install newer protoc in dockerfile as well

* misc: env updates (#509)

* ci: update toolchain for binaries

* misc: update dev environment

* misc: remove patches from Cargo.lock

* feat: make the folder configurable (#508)

* feat: make the folder configurable

* Update resources/static-folder/README.md

Co-authored-by: Damien <damienbroka@mailbox.org>

Co-authored-by: Damien <damienbroka@mailbox.org>

* feat: implement workspace inheritance (#506)

* refactor: switch away from cargo package (#507)

* feat: add spinner wait for `project new` and `project status --follow` (#503)

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>
Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* fix: capitalise correctly (#511)

* fix: make nice (#512)

* feat: find (soon to be) invalid project names (#479)

* feat: find (soon to be) invalid project names

* refactor: move logic to admin client

* refactor: missed axum 0.6 update (#513)

* feat: build tests in release profile, limit build workers (#514)

* feat: build tests in release profile, limit build workers

* fix: typo in manifests

* feat: create `init` project from correct dir (#518)

* misc: interactive init gif (#519)

* Feat/set examples submodule to main (#520)

* feat: revert examples submodule back to main

* feat: un-ignore actix tests

* chore: 0.8.0 (#521)

* chore: bump examples (#522)

* bug: hacking static folders (#524)

* fix: actix integration with state (#523)

* feat(gateway,deployer): add more tracing events (#500)

* feat(deployer): add more tracing events

* feat(gateway): add more tracing events

* feat: canonicalize before trace (#531)

* feat: 'clean' subcommand (#530)

* feat: 'clean' subcommand

* refactor: output cleaning is done

* Feat/set cpu limit (#529)

* feat: remove redundant actix worker limit

* feat: remove redundant build job limit

* feat: set cpu limit for deployer container

* fix: limit actix worker and build jobs to 4

* feat: add panamax for mirroring crates.io (#525)

* feat: build queue (#532)

* feat: per-project parallelism (#533)

* feat: temp validation of project name in gateway (#534)

* fix(deployer): keep Cargo.lock between deployments (#517)

* ci: remove build and push req on build binaries (#535)

* refactor: don't crash when failing to release slot (#536)

* refactor: release build slot parse type correctly (#538)

* refactor: remove prefetch (#539)

* feat: add cron job for syncing mirror (#537)

* chore: bump cargo-shuttle to 0.8.1 (#540)

* chore: bump cargo-shuttle to 0.8.1

* chore: cargo.lock

* refactor: update manifests and lockfile

implement workspace inheritance for runtime, and remove default-features from shuttle-service

* refactor: fmt

* fix: unused imports, add runtime to deploymentmanager

* feat: move storagemanager to common

* fix: storage manager imports

* fix: codegen test with outdated expected error

* fix: service tests after removing service default features

* fix: deployer tests after removing service default features

* fix: typo

* ci: attempt to fix protoc error

* fix: deployer runtime client connection

* refactor: remove redundant feature flags

* refactor: remove storage_manager from deployer crate

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>
Co-authored-by: Pieter <pieter@chesedo.me>
Co-authored-by: Alexander Krantz <alex@krantz.dev>
Co-authored-by: Damien <git@damien.sh>
Co-authored-by: Ivan <ivancernja@gmail.com>
Co-authored-by: Peter Mertz <peter.s.mertz@gmail.com>
Co-authored-by: XyLyXyRR <39663597+XyLyXyRR@users.noreply.github.com>
Co-authored-by: Damien <damienbroka@mailbox.org>
Co-authored-by: Nereuxofficial <37740907+Nereuxofficial@users.noreply.github.com>
Co-authored-by: Maxim <59533214+biryukovmaxim@users.noreply.github.com>
Co-authored-by: maksim <maksim@blockchaincmdt.io>
Co-authored-by: Federico Guerinoni <41150432+guerinoni@users.noreply.github.com>
Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>
Co-authored-by: Stijn ("stain") Seghers <stijnseghers@gmail.com>

* refactor: one store per request (#510)

* refactor: read from file

* refactor: make store for every request

* refactor: remove the serenity runtime (#549)

* Feat: shuttle next bump deps (#551)

* fix: axum tests

* feat: bump wasmtime crates

* feat: return streaming body from wasm router (#558)

* feat: stream body to and from router

* fix: reader to stream hack didn't work in wasm

I added a post endpoint and test, which proved that my hacky stream from BufReader didn't work on the wasm side

* refactor: test string

* feat: update codegen with axum-wasm changes

* refactor: clean up

* refactor: typo

* feat: guard against large request bodies

* feat: embed runtime into client and deployer (#559)

* refactor: runtime startup code

* feat: hook cli to runtime

* feat: hook up logs

* feat: custom port

* feat: start a next project with the local runner

* feat: embed executable

* refactor: axum update

* refactor: tonic version from workspace

* refactor: kill runtime correctly

* feat: DB resources for local runs

* feat: static folders for local runs

* feat: secrets for local runner

* refactor: cleanup logs and errors

* refactor: rebuild runtime if it changed

* refactor: more comments

* feat: minimal axum logs

* refactor: unneeded default features

* refactor: fix rerun-if for runtime

* bug: codegen handle_request

* refactor: restore db error

* bug: expanded broken merge (#567)

* feat: refactor router and router inner (#566)

* refactor: clean up imports

* refactor: remove RouterInner

* feat: handle wasi errors

* feat: handle_request error handling

* docs: comments

* refactor: make hyper dev-dep, better error message

* fix: axum-wasm missed import and bracket

* feat: hook in runtime logs (#568)

* feat: simple wasm log to send over unix socket

* feat: hook up logs subscription

* refactor: extra comments

* refactor: simpler interface

* refactor: combine JsonVisitors

* refactor: clippy suggestions

* refactor: update tests

* refactor: extra comment

* refactor: increase channel for better performance

* refactor: move off stderr

* misc: merge main (#572)

* Merge remote-tracking branch 'upstream/main' into shuttle-next

* refactor: touch ups

* fix: missing feature flag in common dep (#573)

* feat: change log read to spawn blocking (#574)

* feat: DX (#577)

* feat: shuttle-next crate for better DX

* refactor: trim dependencies

* bug: fix next check

* ci: add shuttle-runtime

* refactor: activating missing features on dependencies

* refactor: update to shuttle_next::endpoint

* feat: get runtime binary from cargo install (#578)

* feat: get runtime binary from cargo install

* refactor: remove build.rs

* refactor: determine environment with debug assertions

* ci: comment out cargo-sort installation

* fix: clippy

* feat: use cargo home dir, install runtime in prepare.sh

* fix: unused import

* refactor: build from local version in prepare.sh

* fix: local debug run installing from incorrect path

* feat: canonicalize path to debug runtime

* feat: set release runtime install branch to prod

* refactor: move secondary protoc install to common stage

* feat: deployer next (#575)

* feat: propagate next runtime

* feat: store is_next in DB

* feat: runtime manager to allow deployer to start up both runtimes

* feat: make sure tests run

* refactor: better migration query

* refactor: handle runtime errors better

* feat: shutdown runtimes

* bug: missing so

* bug: stop services

* bug: ffi and runtime manager not living long enough

* bug: missing so error

* refactor: run cleanups

* refactor: clippy suggestions

* misc: remove unneeded codegen feature (#584)

* refactor: proto fixups (#585)

* refactor: comment

* refactor: restore binding to external address

* Feat: cleanup fds and tmp (#586)

* feat: remove redundant body fd and /tmp

* feat: update codegen

* refactor: remove tmp from workspace exclude

* ci: next patch and wasi target

* refactor: unwraps and mor (#587)

* refactor: better error handling

* refactor: trim mutexes

* refactor: remove abstract factory

* refactor: remove extension todo

* feat: build our images with the release profile (#583)

* feat: build our images with the release profile

Currently our containerfile builds images with the default debug profile, which means when `get_runtime_executable` is called it will try to install from a checked out local version of `shuttle-runtime`.

* feat: add build arg for cargo profile

* refactor: update comment

* fix: broken codegen/axum test

* feat: install wasm32-wasi target in deploy.sh

* feat: build deps in `CARGO_PROFILE`

* feat: use closure to determine shuttle-runtime path

* fix: path to runtime in docker deployer, clippy

* fix: incorrect function for cargo home

* refactor: always use cargo_home for path to runtime in deployer

* Feature/eng 378 axum wasm multiple handlers per endpoint (#588)

* refactor: clean up if let

* feat: move method validation, add test for it

* test: add test for chained endpoint handlers

* feat: chain endpoints with the same address

* feat: duplicate method error, handler chain bug fix

chaining handlers with a full type path caused a bug where a `,` was inserted, I think the reason is that `path` types can't be followed by `.`. Importing all the routing methods in `app` works, but it is not ideal

* refactor: remove some clones

* refactor: remove unwrap

Co-authored-by: Pieter <pieter@chesedo.me>

* feat: use BTreeMap for building endpoint chains

* fix: only add namespace to first handler in chain

* fix: skip rustfmt for quote in app_to_token test

rustfmt will add a comma to the expected output, which will also be done in the expanded macro output, but not in the stringified output

* refactor: revert btreemap change

* docs: document why we sort the endpoint chains

---------

Co-authored-by: Pieter <pieter@chesedo.me>

* refactor: find code to wrap legacy runtime (#675)

* refactor: find code to wrap legacy runtime

* misc: update README with test instructions

* feat: remove box self from services, remove syncwrapper from axum service (#677)

* feat: remove box self from all services

* feat: remove syncwrapper from axum integration

* Fix/move docker profiles to dev (#674)

* refactor: move docker profiles to dev.yml

* docs: update comment in makefile

* feat: extract next runtime into separate binary (#679)

* feat: extract next runtime into separate binary

* fix: remove startrequestsservice name

* Feature: remove tokio runtime from all resources (#680)

* feat: remove runtime from resources

* fix: compile errors, comments

* fix: remove comment

* feat: trim the service loader, unpin tokio (#681)

* feat: trim the serviceloader, unpin tokio

* fix: tokio sync is needed

* feat: unpin tokio in runtime as well

* fix: static folder tests need tokio rt

* feat: rename loader, build_crate return bin path

* fix: build_Crate invalid args

* chore(typos): fix typos (#682)

* chore(typos): fix typos

* Fix indentation for poise init example (#687)

* Feature/eng 477 make wasm dependencies optional (#688)

* feat: make wasm runtime dependencies optional

* feat: feature gate next lib, update readme

* ci: rename loader feature in ci

* refactor: hyper with server feature in next features

* Feature: eng 465 update all the codegens (#686)

* feat: initial commit of codegen rewrite

* refactor: wrapper to loader

* tests: update the unit tests

* fix: don't unwrap return type

* feat: setup tracing in loader codegen

* fix: pass inn logger to loader

* feat: mvp of shuttle-next local run

* refactor: move logger to runtime

* refactor: move storagemanager export to runtime

* docs: add note about git tags in contrib (#691)

* bug: idle static folder (#692)

* misc: add more logs

* bug: copy static folder

* bug: extra subdirectory

* chore: v0.11.3 (#695)

* Feature: eng 483 trim and fix the tests in shuttle-service (#693)

* tests: update build_crate tests

* tests: remove loader tests

* feat: cleanup service deps

* feat: setup integration tests in runtime

* feat: expected panic message for not_shuttle

* refactor: simplify dummy provisioner

* feat: re-export main and service from runtime

* fix: Respect `Cargo.lock` when building containers (#700)

Building the shuttle containers was failing during the `cargo chef cook`
step because of a cyclic dependency introduced by an upstream crate.
This did not happen when building outside of a container, because the
versions pinned by `Cargo.lock` did not contain any cycles.

See tkaitchuck/aHash#95

* ci: resolve CI errors in shuttle-next (#580)

* test: compile wasm module in axum runtime test setup

* ci: add next patch override to CI

* ci: include wasm32-wasi target in rust install

* fix: deployer tests where runtime fails to start

* fix: incorrect provisioner address

* feat: log service state changes in runtime

* feat: don't send stop req on startup failure

* refactor: unused imports

* refactor: handling legacy panics

* tests: deadlock less

* refactor: fixups

* refactor: clippy suggestions

* tests: mock provisioner

* refactor: restore capture from 'log' and colors

* refactor: clippy suggestions

* tests: longer wait

* tests: don't panic while holding lock

* tests: don't panic on stream closed

* tests: don't filter out state logs

* tests: bigger timeout

* ci: remove duplicate patch

* refactor: comments

---------

Co-authored-by: chesedo <pieter@chesedo.me>

* Merge remote-tracking branch 'upstream/main' into shuttle-next

* Feature/eng 486 update deployer with runtime changes (#696)

* feat: update deployer to work with runtime changes

* feat: pass next feature flag to runtime installs

* fix: revert this change, the error is a rust-analyzer bug

* tests: make deployer test resources bins

* ci: add shuttle-runtime patch to CI

* refactor: consistent naming

* fix: redundant clone of runtime manager

* feat: delete rocket bin from runtime

* feat: make storagemanager a trait object

* docs: add comment about why we use arc

* refactor: use &str in storagemanager

* feat: add runtime patch to deployer

* fix: deployer logic bug, add debug logs

* feat: extract service integrations into separate crates (#702)

* feat: draft of extracting service integrations

* refactor: revert codegen changes

* refactor: depend on shuttle_runtime & service integration

* feat: remove rocket bin, comment out version check

* feat: impl from for integration wrapper

* feat: cleanup shuttle-axum docs, remove version check

* feat: actix-web service integration

* feat: extract poem service integration

* feat: extract poise service integration

* feat: extract rocket service integration

* feat: extract salvo service integration

* feat: extract the serenity service integration

* feat: extract the thruster service integration

* feat: extract warp service integration

* feat: extract the tower service integration

* feat: delete persist from service

* feat: extract tide service integration

* feat: update cargo.lock

* feat: make service integration inner pub

* fix: merge fixes

* refactor: rename integrations, remove comment

* ci: run check-standalone on services

* feat: update test resources

* ci: refactor workspace-clippy job

* fix: add tokio dev dep to services

* fix: remaining services tests

* [next] tests: CI go green (#704)

* tests: thread local tracing

* tests: bind panic in runtime

* tests: post create project params

* tests: fix cargo-shuttle

* misc: std missing from tracing

* tests: update main test for shuttle runtime

* ci: merge workspace jobs

* ci: move service to platform tests

* ci: better names

* refactor: trim dependencies

Trim dependencies to minimize the build times of user projects.

* refactor: catch error and panics in main

* tests: trim cargo-shuttle tests

Make sure there is only one main test for each major vector / feature.

* refactor: missing serde derive

* refactor: missing serde std

* ci: balance machines

* tests: give more time

* ci: bump images more

* ci: bump workspace image

* ci: 2xlarge not available '/

* feat: emit error when shuttle::main is named main (#707)

* Feature: eng 484 update init with codegen changes (#706)

* feat: update init boilerplate with shuttle-next changes

* tests: update shuttle_init_tests

* tests: ignore broken integration tests

* feat: refactor init to create bin

* fix: bug when passing path to init

* fix: codegen clippy (#709)

* fix: codegen clippy

* fix: clippy

* misc: v0.12.0-rc1 (#708)

* misc: v0.12.0-rc1

* misc: publish proto

* refactor: remove relative from build.rs

* refactor: add description to proto

* refactor: make runtime publishable

* refactor: make actix publishable

* feat: make shuttle-axum publishable

* feat: make poem publishable

* feat: make poise publishable

* feat: make shuttle-rocket publishable

* refactor: make warp publishable

* refactor: make tower publishable

* refactor: make tide publishable

* refactor: make thruster publishable

* refactor: make serenity publishable

* refactor: make salvo publishable

---------

Co-authored-by: oddgrd <29732646+oddgrd@users.noreply.github.com>

* [next] refactor: update runtime manager (#711)

* refactor: allow multiple runtimes to run at the same time

This is needed so that a new deployment can enter the loading state
without killing currently running runtimes.

* refactor: extra comment

* Feature: eng 497 update or remove the docs in shuttle (#710)

* docs: update service docs

* docs: move service crate-docs to runtime

* docs: update main readme

* tests: fix init test

* refactor: rename legacy runtime to alpha (#713)

* refactor: rename legacy runtime to alpha

* refactor: move next to services (#714)

* refactor: move next to services

* ci: correct next

* refactor: align folder

* [next] refactor: remove ids from runtime (#712)

* refactor: remove deployment id

* refactor: create proto LogItem directly

* refactor: more tracing for local binary

* misc: add kondo to env

* refactor: clippy suggestion

* tests: update

* feat: embed protoc in shuttle-proto (#715)

* feat: embed protoc in shuttle-proto

* fix: path to shuttle-next in runtime next-resource

* [next] bug: communicating resources (#716)

* refactor: send claim to provisioner

* feat: recording of provisioned resources

This returns provisioned resources from runtime so that they can be
recorded by deployer. Closes #ENG-252.

* refactor: restore resources for idle containers waking up

* tests: next tests using wrong folder

* tests: swap rocket for the more stable poem

* refactor: pass auth_uri to runtime

* misc: update all patches

* feat(local): don't install next-runtime from git (#718)

* fix: static folder local run clearing file contents, add missing tests in cargo-shuttle (#717)

* fix: static folder local run clearing file contents

* fix: clippy

* fix: cargo shuttle init tests not logging in

* fix: bail if non-interactive and --new without api-key

* fix: update codegen tests

* [next] refactor: tracing (#719)

* refactor: use tracing setup helper

* refactor: better trace propagation

* refactor: clippy suggestion

* fix: windows local run path bug (#721)

* refactor: pull out vendored protoc from shuttle-proto (#726)

* feat: use grpcio to avoid needing protoc

* refactor: remove vendored protoc, revert to tonic otlp

* [next] bug: misc fixes (#725)

* bug: thread local logging breaking serenity

* refactor: patch all crates

* refactor: extend tokens to 15 minutes

* bug: next runtime not sending stop signal (#728)

* bug: next runtime not sending stop signal

* refactor: better unwrap

* chore: v0.12.0 (#727)

* chore: v0.12.0

* chore: bump examples

---------

Signed-off-by: Federico Guerinoni <guerinoni.federico@gmail.com>
Co-authored-by: Damien <git@damien.sh>
Co-authored-by: chesedo <pieter@chesedo.me>
Co-authored-by: Alexander Krantz <alex@krantz.dev>
Co-authored-by: Ivan <ivancernja@gmail.com>
Co-authored-by: Peter Mertz <peter.s.mertz@gmail.com>
Co-authored-by: XyLyXyRR <39663597+XyLyXyRR@users.noreply.github.com>
Co-authored-by: Damien <damienbroka@mailbox.org>
Co-authored-by: Nereuxofficial <37740907+Nereuxofficial@users.noreply.github.com>
Co-authored-by: Maxim <59533214+biryukovmaxim@users.noreply.github.com>
Co-authored-by: maksim <maksim@blockchaincmdt.io>
Co-authored-by: Federico Guerinoni <41150432+guerinoni@users.noreply.github.com>
Co-authored-by: Isaiah Gamble <77396670+tsar-boomba@users.noreply.github.com>
Co-authored-by: Stijn ("stain") Seghers <stijnseghers@gmail.com>
Co-authored-by: Sara Tavares <29093946+stavares843@users.noreply.github.com>
Co-authored-by: HexPandaa <47880094+HexPandaa@users.noreply.github.com>
Co-authored-by: Kieren Davies <kieren@kdavi.es>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants