zrb 0.0.38__tar.gz → 0.0.40__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zrb-0.0.38 → zrb-0.0.40}/PKG-INFO +1 -1
- {zrb-0.0.38 → zrb-0.0.40}/playground-template/generate-project.sh +8 -5
- {zrb-0.0.38 → zrb-0.0.40}/pyproject.toml +1 -1
- {zrb-0.0.38 → zrb-0.0.40}/requirements.txt +1 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/__init__.py +2 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/docker_compose_task/template/_automate/snake_task_name.py +4 -1
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/add.py +131 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/app/app_env.py +16 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/start.sh +15 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/compose/compose_checker.py +49 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/compose/compose_env.py +52 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/container.py +91 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/local.py +92 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/docker-compose.yml +82 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component}/__init__.py +0 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app.py +51 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app_state.py +26 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/log.py +20 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/message_consumer.py +42 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/message_mocker.py +6 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/message_publisher.py +42 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/message_serializer.py +9 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/config.py +43 -0
- {zrb-0.0.38/src/zrb/config → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/helper → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus}/__init__.py +0 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/kafka/consumer.py +198 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/kafka/publisher.py +144 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/messagebus.py +52 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/mock.py +51 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/rabbitmq/consumer.py +92 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/rabbitmq/publisher.py +61 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/serializer/serializer.py +35 -0
- {zrb-0.0.38/src/zrb/helper/file → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/helper}/__init__.py +0 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/helper/async_task.py +17 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/helper/conversion.py +27 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/main.py +38 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/requirements.txt +8 -0
- zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/template.env +17 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/cmd/pulumi-destroy.sh +2 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/cmd/pulumi-up.sh +2 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/cmd/start.sh +3 -1
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/common.py +81 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/container.py +1 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/deployment.py +55 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/image.py +44 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/local.py +1 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/.gitignore +2 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/Pulumi.yaml +6 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/__main__.py +79 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/requirements.txt +3 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/.dockerignore +3 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/.gitignore +3 -0
- zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/Dockerfile +5 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/template.env +1 -0
- zrb-0.0.40/src/zrb/helper/__init__.py +0 -0
- zrb-0.0.40/src/zrb/helper/accessories/__init__.py +0 -0
- zrb-0.0.40/src/zrb/helper/codemod/__init__.py +0 -0
- zrb-0.0.40/src/zrb/helper/file/__init__.py +0 -0
- zrb-0.0.40/src/zrb/helper/keyval/__init__.py +0 -0
- zrb-0.0.40/src/zrb/helper/list/__init__.py +0 -0
- zrb-0.0.40/src/zrb/helper/list/ensure_uniqueness.py +22 -0
- zrb-0.0.40/src/zrb/helper/loader/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/render_data.py +3 -2
- zrb-0.0.40/src/zrb/helper/string/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/string/conversion.py +8 -8
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/util.py +5 -0
- zrb-0.0.40/src/zrb/task/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/base_model.py +35 -14
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/base_task.py +30 -20
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/docker_compose_task.py +3 -3
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/http_checker.py +29 -5
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/port_checker.py +35 -10
- zrb-0.0.40/src/zrb/task_group/__init__.py +0 -0
- zrb-0.0.40/src/zrb/task_input/__init__.py +0 -0
- zrb-0.0.40/test/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/zrb_init.py +14 -30
- zrb-0.0.38/src/zrb/helper/list/append_unique.py +0 -9
- {zrb-0.0.38 → zrb-0.0.40}/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/LICENSE +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/README.md +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/playground-template/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/playground-template/programmatic.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/playground-template/zrb_init.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/project.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/__main__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/action/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/action/base_action.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/action/runner.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/advertisement.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/_group.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/base64.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/aws/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/aws/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/devtool_install.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/docker/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/gcloud/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/gvm/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/gvm/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/gvm/finalize.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/helm/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/helm/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/kubectl/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/kubectl/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/nvm/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/nvm/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/nvm/finalize.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/pulumi/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/pulumi/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/pyenv/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/pyenv/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/pyenv/finalize.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/sdkman/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/sdkman/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/sdkman/finalize.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/terraform/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/terraform/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/terraform/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/tmux/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/tmux/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/zsh/config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/devtool/zsh/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/env.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/eval.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/_common.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/cmd_task/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/cmd_task/add.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/cmd_task/template/_automate/snake_task_name.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/docker_compose_task/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/docker_compose_task/add.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/docker-compose.yml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/Dockerfile +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/main.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/requirements.txt +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/project → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/project/template/_automate → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/project_task → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/app}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/_automate/snake_app_name/cmd/pulumi-destroy.sh +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/_automate/snake_app_name/cmd/pulumi-up.sh +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/_automate/snake_app_name/common.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/python_task → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/_automate/snake_app_name/compose}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/_automate/snake_app_name/deployment.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/_automate/snake_app_name/image.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/src/kebab-app-name/deployment/.gitignore +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/src/kebab-app-name/deployment/Pulumi.yaml +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/src/kebab-app-name/deployment/__main__.py +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/src/kebab-app-name/deployment/requirements.txt +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/project/template/src → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/deployment/state}/.gitkeep +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/src/kebab-app-name/src/.dockerignore +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/src/kebab-app-name/src/.gitignore +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app → zrb-0.0.40/src/zrb/builtin/generator/fastapp}/template/src/kebab-app-name/src/Dockerfile +0 -0
- {zrb-0.0.38/src/zrb/helper/accessories → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/kafka}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/helper/codemod → zrb-0.0.40/src/zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/core/messagebus/rabbitmq}/__init__.py +0 -0
- {zrb-0.0.38/src/zrb/helper/keyval → zrb-0.0.40/src/zrb/builtin/generator/project}/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project/create.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project/template/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project/template/README.md +0 -0
- {zrb-0.0.38/src/zrb/helper/list → zrb-0.0.40/src/zrb/builtin/generator/project/template/_automate}/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project/template/project.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project/template/requirements.txt +0 -0
- {zrb-0.0.38/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/state → zrb-0.0.40/src/zrb/builtin/generator/project/template/src}/.gitkeep +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project/template/template.env +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project/template/zrb_init.py +0 -0
- {zrb-0.0.38/src/zrb/helper/loader → zrb-0.0.40/src/zrb/builtin/generator/project_task}/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/add.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/task_factory.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/task_factory_helper.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +0 -0
- {zrb-0.0.38/src/zrb/helper/string → zrb-0.0.40/src/zrb/builtin/generator/python_task}/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/python_task/add.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/python_task/template/_automate/snake_task_name.py +0 -0
- {zrb-0.0.38/src/zrb/task → zrb-0.0.40/src/zrb/builtin/generator/simple_python_app}/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/add.py +0 -0
- {zrb-0.0.38/src/zrb/task_group → zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name}/__init__.py +0 -0
- /zrb-0.0.38/src/zrb/config.toml → /zrb-0.0.40/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/state/.gitkeep +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/docker-compose.yml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/main.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/requirements.txt +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/md5.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/principle.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/ubuntu.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/update.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/builtin/version.py +0 -0
- /zrb-0.0.38/test/.gitignore → /zrb-0.0.40/src/zrb/config/__init__.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/config/config.py +0 -0
- /zrb-0.0.38/src/zrb/task_input/__init__.py → /zrb-0.0.40/src/zrb/config.toml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/accessories/color.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/accessories/icon.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/accessories/name.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/advertisement.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/cli.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/codemod/add_assert_resource.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/codemod/add_import_module.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/codemod/add_upstream_to_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/codemod/format_code.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/default_env.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/dockercompose/fetch_external_env.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/dockercompose/read.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/file/copy_tree.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/loader/load_module.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/log.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/middlewares/replacement.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/string/double_quote.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/helper/string/parse_replacement.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/runner.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/cmd_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/decorator.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/installer/_default/backup-config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/installer/_default/check.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/installer/_default/download.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/installer/_default/finalize.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/installer/_default/remove-config.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/installer/_default/setup.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/installer/factory.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/resource_maker.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task/task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_env/env.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_env/env_file.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_group/group.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/_constant.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/base_input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/bool_input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/choice_input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/float_input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/int_input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/password_input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/src/zrb/task_input/str_input.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/template.env +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/cmd_task/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/cmd_task/test_add_cmd_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/docker_compose_task/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/docker_compose_task/test_add_docker_compose_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/project/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/project/test_create_project.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/python_task/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/python_task/test_add_python_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/simple-python-app/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/generator/simple-python-app/test_add_simple_python_app.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/md5_test_sum.txt +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/test_base64.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/test_env.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/test_eval.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/test_md5.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/builtin/test_principle.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/helper/codemod/test_add_assert_resource.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/helper/codemod/test_add_import_module.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/helper/codemod/test_add_upstream_to_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/helper/test_fetch_external_env.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/helper/test_util.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/cmd_task/templates/hello.sh +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/cmd_task/templates/macros.jinja +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/cmd_task/test_cmd_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/resource/docker-compose-simple-list-env.yml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/resource/docker-compose-simple-map-env.yml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/resource/docker-compose-simple-no-default-env.yml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/resource/docker-compose-simple.yml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/resource/docker-compose.yml +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/resource/image/Dockerfile +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/resource/image/my_program.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/docker_compose_task/test_docker_compose_task.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/resource_maker/.gitignore +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/resource_maker/template/excluded +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/resource_maker/template/src/app_name.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/resource_maker/template/src/config_app_name.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/resource_maker/test_resource_maker.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/test_decorator.py +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/test_task.env +0 -0
- {zrb-0.0.38 → zrb-0.0.40}/test/task/test_task.py +0 -0
@@ -32,6 +32,12 @@ zrb project add simple-python-app \
|
|
32
32
|
--app-name "simple" \
|
33
33
|
--http-port 3001
|
34
34
|
|
35
|
+
echo '🤖 Add fastapp'
|
36
|
+
zrb project add fastapp \
|
37
|
+
--project-dir . \
|
38
|
+
--app-name "fastapp" \
|
39
|
+
--http-port 3002
|
40
|
+
|
35
41
|
|
36
42
|
echo '🤖 Add test-project task'
|
37
43
|
echo '' >> zrb_init.py
|
@@ -43,11 +49,8 @@ echo ' run_cmd.run_cmd,' >> zrb_init.py
|
|
43
49
|
echo ' run_container.run_container,' >> zrb_init.py
|
44
50
|
echo ' run_python.run_python,' >> zrb_init.py
|
45
51
|
echo ' simple_local.start_simple,' >> zrb_init.py
|
52
|
+
echo ' fastapp_local.start_fastapp,' >> zrb_init.py
|
46
53
|
echo ' ]' >> zrb_init.py
|
47
54
|
echo ')' >> zrb_init.py
|
48
55
|
echo 'runner.register(test_project)' >> zrb_init.py
|
49
|
-
echo '' >> zrb_init.py
|
50
|
-
|
51
|
-
|
52
|
-
echo '🤖 Test project'
|
53
|
-
zrb test-project
|
56
|
+
echo '' >> zrb_init.py
|
@@ -12,6 +12,7 @@ from .generator.cmd_task import add as generate_cmd_task
|
|
12
12
|
from .generator.docker_compose_task import add as generate_docker_compose_task
|
13
13
|
from .generator.python_task import add as generate_python_task
|
14
14
|
from .generator.simple_python_app import add as generate_simple_python_app
|
15
|
+
from .generator.fastapp import add as generate_fastapp
|
15
16
|
|
16
17
|
assert base64
|
17
18
|
assert env
|
@@ -27,3 +28,4 @@ assert generate_cmd_task
|
|
27
28
|
assert generate_docker_compose_task
|
28
29
|
assert generate_python_task
|
29
30
|
assert generate_simple_python_app
|
31
|
+
assert generate_fastapp
|
@@ -0,0 +1,131 @@
|
|
1
|
+
from typing import Any
|
2
|
+
from ..._group import project_add_group
|
3
|
+
from ....task.task import Task
|
4
|
+
from ....task.decorator import python_task
|
5
|
+
from ....task.resource_maker import ResourceMaker
|
6
|
+
from ....runner import runner
|
7
|
+
from .._common import (
|
8
|
+
default_app_inputs, project_dir_input, app_name_input,
|
9
|
+
validate_project_dir, create_register_local_app_module,
|
10
|
+
create_register_container_app_module, create_register_image_app_module,
|
11
|
+
create_register_deployment_app_module, get_default_app_replacements,
|
12
|
+
get_default_app_replacement_middlewares, new_app_scaffold_lock
|
13
|
+
)
|
14
|
+
from ..project_task.task_factory import (
|
15
|
+
create_add_project_automation, create_register_app_start,
|
16
|
+
create_register_app_start_container, create_register_app_stop_container,
|
17
|
+
create_register_app_remove_container, create_register_app_build_image,
|
18
|
+
create_register_app_push_image, create_register_app_deploy,
|
19
|
+
create_register_app_destroy
|
20
|
+
)
|
21
|
+
from ....helper import util
|
22
|
+
|
23
|
+
import os
|
24
|
+
|
25
|
+
# Common definitions
|
26
|
+
|
27
|
+
current_dir = os.path.dirname(__file__)
|
28
|
+
|
29
|
+
|
30
|
+
@python_task(
|
31
|
+
name='task-validate-create',
|
32
|
+
inputs=[project_dir_input, app_name_input],
|
33
|
+
)
|
34
|
+
async def validate(*args: Any, **kwargs: Any):
|
35
|
+
project_dir = kwargs.get('project_dir')
|
36
|
+
validate_project_dir(project_dir)
|
37
|
+
app_name = kwargs.get('app_name')
|
38
|
+
automation_dir = os.path.join(
|
39
|
+
project_dir, '_automate', util.to_snake_case(app_name)
|
40
|
+
)
|
41
|
+
if os.path.isdir(automation_dir):
|
42
|
+
raise Exception(f'Directory already exists: {automation_dir}')
|
43
|
+
|
44
|
+
|
45
|
+
copy_resource = ResourceMaker(
|
46
|
+
name='copy-resource',
|
47
|
+
inputs=default_app_inputs,
|
48
|
+
upstreams=[validate],
|
49
|
+
replacements=get_default_app_replacements(),
|
50
|
+
replacement_middlewares=get_default_app_replacement_middlewares(),
|
51
|
+
template_path=os.path.join(current_dir, 'template'),
|
52
|
+
destination_path='{{ input.project_dir }}',
|
53
|
+
scaffold_locks=[new_app_scaffold_lock],
|
54
|
+
excludes=['*/deployment/venv']
|
55
|
+
)
|
56
|
+
|
57
|
+
register_local_app_module = create_register_local_app_module(
|
58
|
+
upstreams=[copy_resource]
|
59
|
+
)
|
60
|
+
|
61
|
+
register_container_app_module = create_register_container_app_module(
|
62
|
+
upstreams=[copy_resource]
|
63
|
+
)
|
64
|
+
|
65
|
+
register_image_app_module = create_register_image_app_module(
|
66
|
+
upstreams=[copy_resource]
|
67
|
+
)
|
68
|
+
|
69
|
+
register_deployment_app_module = create_register_deployment_app_module(
|
70
|
+
upstreams=[copy_resource]
|
71
|
+
)
|
72
|
+
|
73
|
+
add_project_task = create_add_project_automation(
|
74
|
+
upstreams=[copy_resource]
|
75
|
+
)
|
76
|
+
|
77
|
+
register_start = create_register_app_start(
|
78
|
+
upstreams=[add_project_task]
|
79
|
+
)
|
80
|
+
|
81
|
+
register_start_container = create_register_app_start_container(
|
82
|
+
upstreams=[add_project_task]
|
83
|
+
)
|
84
|
+
|
85
|
+
register_stop_container = create_register_app_stop_container(
|
86
|
+
upstreams=[add_project_task]
|
87
|
+
)
|
88
|
+
|
89
|
+
register_remove_container = create_register_app_remove_container(
|
90
|
+
upstreams=[add_project_task]
|
91
|
+
)
|
92
|
+
|
93
|
+
register_push_image = create_register_app_push_image(
|
94
|
+
upstreams=[add_project_task]
|
95
|
+
)
|
96
|
+
|
97
|
+
register_build_image = create_register_app_build_image(
|
98
|
+
upstreams=[add_project_task]
|
99
|
+
)
|
100
|
+
|
101
|
+
register_deploy = create_register_app_deploy(
|
102
|
+
upstreams=[add_project_task]
|
103
|
+
)
|
104
|
+
|
105
|
+
register_destroy = create_register_app_destroy(
|
106
|
+
upstreams=[add_project_task]
|
107
|
+
)
|
108
|
+
|
109
|
+
|
110
|
+
@python_task(
|
111
|
+
name='fastapp',
|
112
|
+
group=project_add_group,
|
113
|
+
upstreams=[
|
114
|
+
register_local_app_module,
|
115
|
+
register_container_app_module,
|
116
|
+
register_image_app_module,
|
117
|
+
register_deployment_app_module,
|
118
|
+
register_start,
|
119
|
+
register_start_container,
|
120
|
+
register_stop_container,
|
121
|
+
register_remove_container,
|
122
|
+
register_build_image,
|
123
|
+
register_push_image,
|
124
|
+
register_deploy,
|
125
|
+
register_destroy
|
126
|
+
],
|
127
|
+
runner=runner
|
128
|
+
)
|
129
|
+
async def add_simple_python_app(*args: Any, **kwargs: Any):
|
130
|
+
task: Task = kwargs.get('_task')
|
131
|
+
task.print_out('Success')
|
@@ -0,0 +1,16 @@
|
|
1
|
+
from zrb import Env, EnvFile
|
2
|
+
from ..common import TEMPLATE_ENV_FILE_NAME
|
3
|
+
|
4
|
+
app_env_file = EnvFile(env_file=TEMPLATE_ENV_FILE_NAME, prefix='ENV_PREFIX')
|
5
|
+
app_envs = [
|
6
|
+
Env(
|
7
|
+
name='APP_PORT',
|
8
|
+
os_name='ENV_PREFIX_APP_PORT',
|
9
|
+
default='httpPort'
|
10
|
+
),
|
11
|
+
Env(
|
12
|
+
name='APP_BROKER_TYPE',
|
13
|
+
os_name='ENV_PREFIX_APP_BROKER_TYPE',
|
14
|
+
default='rabbitmq'
|
15
|
+
)
|
16
|
+
]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
PYTHONUNBUFFERED=1
|
2
|
+
|
3
|
+
if [ ! -d venv ]
|
4
|
+
then
|
5
|
+
echo "Init venv"
|
6
|
+
python -m venv venv
|
7
|
+
fi
|
8
|
+
echo "Activate venv"
|
9
|
+
source venv/bin/activate
|
10
|
+
|
11
|
+
echo "Install packages"
|
12
|
+
pip install -r requirements.txt
|
13
|
+
|
14
|
+
echo "Start app"
|
15
|
+
uvicorn main:app --host {{env.get("APP_HOST", "0.0.0.0")}} --port {{env.get("APP_PORT", "8080")}} {{ "--reload" if util.to_boolean(env.get("APP_RELOAD", "true")) else "" }}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
from zrb import HTTPChecker, PortChecker
|
2
|
+
|
3
|
+
rabbitmq_management_checker = HTTPChecker(
|
4
|
+
name='check-rabbitmq-management',
|
5
|
+
port='{{env.get("RABBITMQ_MANAGEMENT_HOST_PORT", "15672")}}',
|
6
|
+
is_https='{{input.snake_app_name_https}}',
|
7
|
+
skip_execution='{{env.get("APP_BROKER_TYPE", "rabbitmq") != "rabbitmq"}}'
|
8
|
+
)
|
9
|
+
|
10
|
+
rabbitmq_checker = PortChecker(
|
11
|
+
name='check-rabbitmq',
|
12
|
+
port='{{env.get("RABBITMQ_HOST_PORT", "5672")}}',
|
13
|
+
skip_execution='{{env.get("APP_BROKER_TYPE", "rabbitmq") != "rabbitmq"}}'
|
14
|
+
)
|
15
|
+
|
16
|
+
redpanda_console_checker = HTTPChecker(
|
17
|
+
name='check-redpanda-console',
|
18
|
+
port='{{env.get("REDPANDA_CONSOLE_HOST_PORT", "9000")}}',
|
19
|
+
is_https='{{input.snake_app_name_https}}',
|
20
|
+
skip_execution='{{env.get("APP_BROKER_TYPE", "rabbitmq") != "kafka"}}'
|
21
|
+
)
|
22
|
+
|
23
|
+
kafka_plaintext_checker = HTTPChecker(
|
24
|
+
name='check-kafka-plaintext',
|
25
|
+
port='{{env.get("KAFKA_PLAINTEXT_HOST_PORT", "29092")}}',
|
26
|
+
is_https='{{input.snake_app_name_https}}',
|
27
|
+
skip_execution='{{env.get("APP_BROKER_TYPE", "rabbitmq") != "kafka"}}'
|
28
|
+
)
|
29
|
+
|
30
|
+
kafka_outside_checker = HTTPChecker(
|
31
|
+
name='check-kafka-outside',
|
32
|
+
port='{{env.get("KAFKA_OUTSIDE_HOST_PORT", "9092")}}',
|
33
|
+
is_https='{{input.snake_app_name_https}}',
|
34
|
+
skip_execution='{{env.get("APP_BROKER_TYPE", "rabbitmq") != "kafka"}}'
|
35
|
+
)
|
36
|
+
|
37
|
+
pandaproxy_plaintext_checker = HTTPChecker(
|
38
|
+
name='check-pandaproxy-plaintext',
|
39
|
+
port='{{env.get("PANDAPROXY_PLAINTEXT_HOST_PORT", "29092")}}',
|
40
|
+
is_https='{{input.snake_app_name_https}}',
|
41
|
+
skip_execution='{{env.get("APP_BROKER_TYPE", "rabbitmq") != "kafka"}}'
|
42
|
+
)
|
43
|
+
|
44
|
+
pandaproxy_outside_checker = HTTPChecker(
|
45
|
+
name='check-pandaproxy-outside',
|
46
|
+
port='{{env.get("PANDAPROXY_OUTSIDE_HOST_PORT", "9092")}}',
|
47
|
+
is_https='{{input.snake_app_name_https}}',
|
48
|
+
skip_execution='{{env.get("APP_BROKER_TYPE", "rabbitmq") != "kafka"}}'
|
49
|
+
)
|
@@ -0,0 +1,52 @@
|
|
1
|
+
from zrb import Env
|
2
|
+
from ..common import image_env
|
3
|
+
|
4
|
+
compose_env_prefix = 'CONTAINER_ENV_PREFIX'
|
5
|
+
compose_envs = [
|
6
|
+
image_env,
|
7
|
+
Env(
|
8
|
+
name='APP_BROKER_TYPE',
|
9
|
+
os_name='CONTAINER_ENV_PREFIX_APP_BROKER_TYPE',
|
10
|
+
default='rabbitmq'
|
11
|
+
),
|
12
|
+
Env(
|
13
|
+
name='APP_HOST_PORT',
|
14
|
+
os_name='CONTAINER_ENV_PREFIX_APP_HOST_PORT',
|
15
|
+
default='httpPort'
|
16
|
+
),
|
17
|
+
Env(
|
18
|
+
name='RABBITMQ_HOST_PORT',
|
19
|
+
os_name='CONTAINER_ENV_PREFIX_RABBITMQ_HOST_PORT',
|
20
|
+
default='5672'
|
21
|
+
),
|
22
|
+
Env(
|
23
|
+
name='RABBITMQ_MANAGEMENT_HOST_PORT',
|
24
|
+
os_name='CONTAINER_ENV_PREFIX_RABBITMQ_MANAGEMENT_HOST_PORT',
|
25
|
+
default='15672'
|
26
|
+
),
|
27
|
+
Env(
|
28
|
+
name='REDPANDA_CONSOLE_HOST_PORT',
|
29
|
+
os_name='CONTAINER_ENV_PREFIX_REDPANDA_CONSOLE_HOST_PORT',
|
30
|
+
default='9000'
|
31
|
+
),
|
32
|
+
Env(
|
33
|
+
name='KAFKA_PLAINTEXT_HOST_PORT',
|
34
|
+
os_name='CONTAINER_ENV_PREFIX_KAFKA_PLAINTEXT_HOST_PORT',
|
35
|
+
default='29092'
|
36
|
+
),
|
37
|
+
Env(
|
38
|
+
name='KAFKA_OUTSIDE_HOST_PORT',
|
39
|
+
os_name='CONTAINER_ENV_PREFIX_KAFKA_OUTSIDE_HOST_PORT',
|
40
|
+
default='9092'
|
41
|
+
),
|
42
|
+
Env(
|
43
|
+
name='PANDAPROXY_PLAINTEXT_HOST_PORT',
|
44
|
+
os_name='CONTAINER_ENV_PREFIX_PANDAPROXY_PLAINTEXT_HOST_PORT',
|
45
|
+
default='29092'
|
46
|
+
),
|
47
|
+
Env(
|
48
|
+
name='PANDAPROXY_OUTSIDE_HOST_PORT',
|
49
|
+
os_name='CONTAINER_ENV_PREFIX_PANDAPROXY_OUTSIDE_HOST_PORT',
|
50
|
+
default='9092'
|
51
|
+
),
|
52
|
+
]
|
@@ -0,0 +1,91 @@
|
|
1
|
+
from zrb import DockerComposeTask, Env, HTTPChecker, runner
|
2
|
+
from zrb.builtin._group import project_group
|
3
|
+
from .common import (
|
4
|
+
RESOURCE_DIR,
|
5
|
+
local_input, host_input, https_input, image_input
|
6
|
+
)
|
7
|
+
from .image import build_snake_app_name_image
|
8
|
+
from .compose.compose_env import compose_env_prefix, compose_envs
|
9
|
+
from .compose.compose_checker import (
|
10
|
+
rabbitmq_checker, rabbitmq_management_checker,
|
11
|
+
redpanda_console_checker, kafka_outside_checker,
|
12
|
+
kafka_plaintext_checker, pandaproxy_outside_checker,
|
13
|
+
pandaproxy_plaintext_checker
|
14
|
+
)
|
15
|
+
|
16
|
+
|
17
|
+
remove_snake_app_name_container = DockerComposeTask(
|
18
|
+
icon='💨',
|
19
|
+
name='remove-kebab-app-name-container',
|
20
|
+
description='Rumove human readable app name container',
|
21
|
+
group=project_group,
|
22
|
+
cwd=RESOURCE_DIR,
|
23
|
+
compose_cmd='down',
|
24
|
+
compose_env_prefix=compose_env_prefix,
|
25
|
+
envs=compose_envs,
|
26
|
+
)
|
27
|
+
runner.register(remove_snake_app_name_container)
|
28
|
+
|
29
|
+
start_snake_app_name_container = DockerComposeTask(
|
30
|
+
icon='🐳',
|
31
|
+
name='start-kebab-app-name-container',
|
32
|
+
description='Start human readable app name container',
|
33
|
+
group=project_group,
|
34
|
+
inputs=[
|
35
|
+
local_input,
|
36
|
+
host_input,
|
37
|
+
https_input,
|
38
|
+
image_input,
|
39
|
+
],
|
40
|
+
skip_execution='{{not input.local_snake_app_name}}',
|
41
|
+
upstreams=[
|
42
|
+
build_snake_app_name_image,
|
43
|
+
remove_snake_app_name_container
|
44
|
+
],
|
45
|
+
cwd=RESOURCE_DIR,
|
46
|
+
compose_cmd='up',
|
47
|
+
compose_env_prefix=compose_env_prefix,
|
48
|
+
envs=compose_envs + [
|
49
|
+
Env(
|
50
|
+
name='COMPOSE_PROFILES',
|
51
|
+
os_name='',
|
52
|
+
default=' '.join([
|
53
|
+
'{{',
|
54
|
+
'",".join([',
|
55
|
+
' env.get("APP_BROKER_TYPE", "rabbitmq"),',
|
56
|
+
' "monolith"',
|
57
|
+
'])',
|
58
|
+
'}}'
|
59
|
+
])
|
60
|
+
)
|
61
|
+
],
|
62
|
+
checkers=[
|
63
|
+
HTTPChecker(
|
64
|
+
name='check-kebab-app-name-monolith',
|
65
|
+
host='{{input.snake_app_name_host}}',
|
66
|
+
url='/readiness',
|
67
|
+
port='{{env.get("HOST_PORT", "httpPort")}}',
|
68
|
+
is_https='{{input.snake_app_name_https}}'
|
69
|
+
),
|
70
|
+
rabbitmq_checker,
|
71
|
+
rabbitmq_management_checker,
|
72
|
+
kafka_outside_checker,
|
73
|
+
kafka_plaintext_checker,
|
74
|
+
redpanda_console_checker,
|
75
|
+
pandaproxy_outside_checker,
|
76
|
+
pandaproxy_plaintext_checker,
|
77
|
+
]
|
78
|
+
)
|
79
|
+
runner.register(start_snake_app_name_container)
|
80
|
+
|
81
|
+
stop_snake_app_name_container = DockerComposeTask(
|
82
|
+
icon='⛔',
|
83
|
+
name='stop-kebab-app-name-container',
|
84
|
+
description='Stop human readable app name container',
|
85
|
+
group=project_group,
|
86
|
+
cwd=RESOURCE_DIR,
|
87
|
+
compose_cmd='stop',
|
88
|
+
compose_env_prefix=compose_env_prefix,
|
89
|
+
envs=compose_envs,
|
90
|
+
)
|
91
|
+
runner.register(stop_snake_app_name_container)
|
@@ -0,0 +1,92 @@
|
|
1
|
+
from zrb import CmdTask, DockerComposeTask, Env, HTTPChecker, runner
|
2
|
+
from zrb.builtin._group import project_group
|
3
|
+
from .common import (
|
4
|
+
CURRENT_DIR, APP_DIR, RESOURCE_DIR,
|
5
|
+
local_input, host_input, https_input, image_input
|
6
|
+
)
|
7
|
+
from .image import build_snake_app_name_image
|
8
|
+
from .app.app_env import app_env_file, app_envs
|
9
|
+
from .container import remove_snake_app_name_container
|
10
|
+
from .compose.compose_env import compose_env_prefix, compose_envs
|
11
|
+
from .compose.compose_checker import (
|
12
|
+
rabbitmq_checker, rabbitmq_management_checker,
|
13
|
+
redpanda_console_checker, kafka_outside_checker,
|
14
|
+
kafka_plaintext_checker, pandaproxy_outside_checker,
|
15
|
+
pandaproxy_plaintext_checker
|
16
|
+
)
|
17
|
+
import os
|
18
|
+
|
19
|
+
start_snake_app_name_support_container = DockerComposeTask(
|
20
|
+
icon='🐳',
|
21
|
+
name='start-kebab-app-name-support-container',
|
22
|
+
description='Start human readable app name container',
|
23
|
+
inputs=[
|
24
|
+
local_input,
|
25
|
+
host_input,
|
26
|
+
https_input,
|
27
|
+
image_input,
|
28
|
+
],
|
29
|
+
skip_execution=' '.join([
|
30
|
+
'{{',
|
31
|
+
'not input.local_snake_app_name',
|
32
|
+
'or env.get("APP_BROKER_TYPE") == "mock"',
|
33
|
+
'}}',
|
34
|
+
]),
|
35
|
+
upstreams=[
|
36
|
+
build_snake_app_name_image,
|
37
|
+
remove_snake_app_name_container
|
38
|
+
],
|
39
|
+
cwd=RESOURCE_DIR,
|
40
|
+
compose_cmd='up',
|
41
|
+
compose_env_prefix=compose_env_prefix,
|
42
|
+
envs=compose_envs + app_envs + [
|
43
|
+
Env(
|
44
|
+
name='COMPOSE_PROFILES',
|
45
|
+
os_name='',
|
46
|
+
default=' '.join([
|
47
|
+
'{{',
|
48
|
+
'",".join([',
|
49
|
+
' env.get("APP_BROKER_TYPE", "rabbitmq"),',
|
50
|
+
'])',
|
51
|
+
'}}'
|
52
|
+
])
|
53
|
+
)
|
54
|
+
],
|
55
|
+
checkers=[
|
56
|
+
rabbitmq_checker,
|
57
|
+
rabbitmq_management_checker,
|
58
|
+
kafka_outside_checker,
|
59
|
+
kafka_plaintext_checker,
|
60
|
+
redpanda_console_checker,
|
61
|
+
pandaproxy_outside_checker,
|
62
|
+
pandaproxy_plaintext_checker,
|
63
|
+
]
|
64
|
+
)
|
65
|
+
|
66
|
+
start_snake_app_name = CmdTask(
|
67
|
+
icon='🚤',
|
68
|
+
name='start-kebab-app-name',
|
69
|
+
description='Start human readable app name',
|
70
|
+
group=project_group,
|
71
|
+
inputs=[
|
72
|
+
local_input,
|
73
|
+
host_input,
|
74
|
+
https_input
|
75
|
+
],
|
76
|
+
skip_execution='{{not input.local_snake_app_name}}',
|
77
|
+
upstreams=[start_snake_app_name_support_container],
|
78
|
+
cwd=APP_DIR,
|
79
|
+
env_files=[app_env_file],
|
80
|
+
envs=app_envs,
|
81
|
+
cmd_path=os.path.join(CURRENT_DIR, 'cmd', 'start.sh'),
|
82
|
+
checkers=[
|
83
|
+
HTTPChecker(
|
84
|
+
name='check-kebab-app-name',
|
85
|
+
host='{{input.snake_app_name_host}}',
|
86
|
+
url='/readiness',
|
87
|
+
port='{{env.APP_PORT}}',
|
88
|
+
is_https='{{input.snake_app_name_https}}'
|
89
|
+
)
|
90
|
+
]
|
91
|
+
)
|
92
|
+
runner.register(start_snake_app_name)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
version: '3'
|
2
|
+
services:
|
3
|
+
|
4
|
+
|
5
|
+
redpanda:
|
6
|
+
image: docker.redpanda.com/redpandadata/redpanda:v22.3.11
|
7
|
+
hostname: redpanda
|
8
|
+
command:
|
9
|
+
- redpanda start
|
10
|
+
- --smp 1
|
11
|
+
- --reserve-memory 0M
|
12
|
+
- --overprovisioned
|
13
|
+
- --node-id 1
|
14
|
+
- --kafka-addr PLAINTEXT://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092
|
15
|
+
- --advertise-kafka-addr PLAINTEXT://redpanda:29092,OUTSIDE://localhost:9092
|
16
|
+
- --pandaproxy-addr PLAINTEXT://0.0.0.0:28082,OUTSIDE://0.0.0.0:8082
|
17
|
+
- --advertise-pandaproxy-addr PLAINTEXT://redpanda:28082,OUTSIDE://localhost:8082
|
18
|
+
- --rpc-addr 0.0.0.0:33145
|
19
|
+
- --advertise-rpc-addr redpanda:33145
|
20
|
+
ports:
|
21
|
+
- 8082:8082
|
22
|
+
- ${KAFKA_OUTSIDE_HOST_PORT:-9092}:9092
|
23
|
+
- 28082:28082
|
24
|
+
- ${KAFKA_PLAINTEXT_HOST_PORT:-29092}:29092
|
25
|
+
restart: on-failure
|
26
|
+
profiles:
|
27
|
+
- kafka
|
28
|
+
healthcheck:
|
29
|
+
test: ["CMD", "redpanda", "admin", "check"]
|
30
|
+
interval: 5s
|
31
|
+
timeout: 1s
|
32
|
+
retries: 30
|
33
|
+
|
34
|
+
|
35
|
+
redpanda-console:
|
36
|
+
image: docker.redpanda.com/redpandadata/console:v2.2.2
|
37
|
+
hostname: redpanda-console
|
38
|
+
ports:
|
39
|
+
- ${REDPANDA_CONSOLE_HOST_PORT:-9000}:8080
|
40
|
+
environment:
|
41
|
+
- KAFKA_BROKERS=redpanda:29092
|
42
|
+
profiles:
|
43
|
+
- kafka
|
44
|
+
depends_on:
|
45
|
+
- redpanda
|
46
|
+
restart: on-failure
|
47
|
+
|
48
|
+
|
49
|
+
rabbitmq:
|
50
|
+
image: rabbitmq:3-management
|
51
|
+
hostname: rabbitmq
|
52
|
+
ports:
|
53
|
+
- "${RABBITMQ_HOST_PORT:-5672}:5672"
|
54
|
+
- "${RABBITMQ_MANAGEMENT_HOST_PORT:-15672}:15672"
|
55
|
+
# volumes:
|
56
|
+
# - rabbitmq:/var/lib/rabbitmq/mnesia
|
57
|
+
environment:
|
58
|
+
- RABBITMQ_DEFAULT_USER=guest
|
59
|
+
- RABBITMQ_DEFAULT_PASS=guest
|
60
|
+
restart: on-failure
|
61
|
+
profiles:
|
62
|
+
- rabbitmq
|
63
|
+
healthcheck:
|
64
|
+
test: ["CMD", "rabbitmqctl", "status"]
|
65
|
+
interval: 5s
|
66
|
+
timeout: 1s
|
67
|
+
retries: 30
|
68
|
+
|
69
|
+
|
70
|
+
snake_app_name:
|
71
|
+
build: src
|
72
|
+
image: ${IMAGE:-kebab-app-name}
|
73
|
+
container_name: snake_app_name
|
74
|
+
hostname: snake_app_name
|
75
|
+
env_file: 'src/template.env'
|
76
|
+
environment:
|
77
|
+
APP_PORT: ${APP_PORT:-8080}
|
78
|
+
ports:
|
79
|
+
- "${APP_HOST_PORT:-8080}:${APP_PORT:-8080}"
|
80
|
+
restart: on-failure
|
81
|
+
profiles:
|
82
|
+
- monolith
|
File without changes
|
File without changes
|
@@ -0,0 +1,51 @@
|
|
1
|
+
from fastapi import status
|
2
|
+
from fastapi.responses import JSONResponse
|
3
|
+
from fastapi.middleware.cors import CORSMiddleware
|
4
|
+
from fastapi import FastAPI
|
5
|
+
from config import (
|
6
|
+
cors_allow_credentials, cors_allow_headers, cors_allow_methods,
|
7
|
+
cors_allow_origin_regex, cors_allow_origins, cors_expose_headers,
|
8
|
+
cors_max_age
|
9
|
+
)
|
10
|
+
from component.app_state import app_state
|
11
|
+
|
12
|
+
app = FastAPI()
|
13
|
+
|
14
|
+
app.add_middleware(
|
15
|
+
CORSMiddleware,
|
16
|
+
allow_origins=cors_allow_origins,
|
17
|
+
allow_origin_regex=cors_allow_origin_regex,
|
18
|
+
allow_methods=cors_allow_methods,
|
19
|
+
allow_headers=cors_allow_headers,
|
20
|
+
allow_credentials=cors_allow_credentials,
|
21
|
+
expose_headers=cors_expose_headers,
|
22
|
+
max_age=cors_max_age,
|
23
|
+
)
|
24
|
+
|
25
|
+
|
26
|
+
@app.head('/liveness')
|
27
|
+
@app.get('/liveness')
|
28
|
+
def handle_liveness():
|
29
|
+
if app_state.get_liveness():
|
30
|
+
return JSONResponse(
|
31
|
+
content={'message': 'Service is alive'},
|
32
|
+
status_code=status.HTTP_200_OK
|
33
|
+
)
|
34
|
+
return JSONResponse(
|
35
|
+
content={'message': 'Service is not alive'},
|
36
|
+
status_code=status.HTTP_503_SERVICE_UNAVAILABLE
|
37
|
+
)
|
38
|
+
|
39
|
+
|
40
|
+
@app.head('/readiness')
|
41
|
+
@app.get('/readiness')
|
42
|
+
def handle_readiness():
|
43
|
+
if app_state.get_readiness():
|
44
|
+
return JSONResponse(
|
45
|
+
content={'message': 'Service is ready'},
|
46
|
+
status_code=status.HTTP_200_OK
|
47
|
+
)
|
48
|
+
return JSONResponse(
|
49
|
+
content={'message': 'Service is not ready'},
|
50
|
+
status_code=status.HTTP_503_SERVICE_UNAVAILABLE
|
51
|
+
)
|