zrb 0.6.0__py3-none-any.whl → 0.6.1__py3-none-any.whl
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/__init__.py +24 -20
- zrb/__main__.py +5 -5
- zrb/action/runner.py +22 -30
- zrb/advertisement.py +10 -9
- zrb/builtin/__init__.py +18 -16
- zrb/builtin/base64.py +13 -18
- zrb/builtin/devtool/__init__.py +14 -3
- zrb/builtin/devtool/devtool_install.py +207 -221
- zrb/builtin/env.py +9 -12
- zrb/builtin/eval.py +9 -9
- zrb/builtin/explain.py +73 -74
- zrb/builtin/generator/__init__.py +7 -11
- zrb/builtin/generator/app_generator/add.py +86 -87
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/add.py +78 -77
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +6 -6
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +32 -32
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +29 -30
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +1 -3
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +5 -4
- zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/add.py +89 -87
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +42 -54
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +34 -32
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +19 -22
- zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +18 -18
- zrb/builtin/generator/app_generator/template/http-port/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +10 -10
- zrb/builtin/generator/app_generator/template/http-port-build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +19 -19
- zrb/builtin/generator/app_generator/template/use-helm/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +12 -14
- zrb/builtin/generator/cmd_task/add.py +23 -25
- zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +3 -5
- zrb/builtin/generator/common/helper.py +15 -20
- zrb/builtin/generator/common/task_factory.py +29 -26
- zrb/builtin/generator/common/task_input.py +97 -91
- zrb/builtin/generator/docker_compose_task/add.py +38 -39
- zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +13 -19
- zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/main.py +18 -14
- zrb/builtin/generator/fastapp/add.py +94 -90
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_checker.py +28 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_config.py +68 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env.py +24 -22
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env_file.py +12 -12
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_get_start_microservices.py +43 -41
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_helper.py +23 -24
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_input.py +21 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-load-test.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +1 -1
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-test.sh +2 -2
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +46 -39
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +28 -20
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +21 -27
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +23 -18
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +35 -36
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +68 -58
- zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +24 -38
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/__main__.py +23 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/_common.py +72 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/app_helper.py +70 -75
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_postgresql_helper.py +18 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_rabbitmq_helper.py +11 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_redpanda_helper.py +18 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_signoz_helper.py +17 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/locustfile.py +10 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/Dockerfile +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app.py +35 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_lifespan.py +21 -17
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_state.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/db_connection.py +18 -20
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/frontend_index.py +5 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/log.py +7 -15
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/messagebus.py +38 -34
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/rpc.py +19 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/config.py +68 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/error.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/__init__.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/admin.py +38 -35
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/consumer.py +38 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/publisher.py +26 -29
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/messagebus.py +8 -14
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/mock.py +12 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/admin.py +37 -44
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/consumer.py +42 -67
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/publisher.py +32 -55
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/model/repo_model.py +11 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/__init__.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_entity_mixin.py +3 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_repo.py +76 -83
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/repo.py +5 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/search_filter.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/caller.py +17 -19
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/server.py +14 -18
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/rpc.py +15 -28
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/__init__.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/base_schema.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/__init__.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/serializer.py +3 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/async_task.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/conversion.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/migration.py +6 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/migrate.py +3 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/api.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/__init__.py +4 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_scheme.py +9 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_util.py +6 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/authorizer.py +4 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/bearer_token_scheme.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/model/user_model.py +8 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/password_hasher.py +1 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/refresh_token_util.py +7 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/group_repo.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/permission_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/user_repo.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/user.py +12 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/__init__.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/scheme.py +7 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/util.py +20 -30
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/authorizer.py +1 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/rpc_authorizer.py +5 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/bcrypt_password_hasher.py +3 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/password_hasher.py +0 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/refresh_token/util.py +15 -21
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/api.py +42 -49
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/model.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +18 -16
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +26 -41
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/api.py +46 -51
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/model.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/repo.py +11 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/table.py +10 -10
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +60 -72
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +32 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +33 -36
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +42 -61
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/event.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +11 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +19 -26
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/rpc.py +5 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +6 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -0
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/token.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +4 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/api.py +4 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/model/activity_model.py +3 -9
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/repo/activity_repo.py +3 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/core/historical_repo_model.py +13 -13
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/api.py +22 -23
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +5 -7
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/model.py +2 -6
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/repo.py +8 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +28 -45
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/table.py +3 -3
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/event.py +4 -8
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -4
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/register_module.py +10 -11
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/rpc.py +3 -5
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +3 -1
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +12 -12
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +76 -106
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +73 -103
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +92 -122
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +107 -134
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/conftest.py +2 -2
- zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +8 -15
- zrb/builtin/generator/fastapp_crud/add.py +74 -79
- zrb/builtin/generator/fastapp_crud/helper.py +51 -48
- zrb/builtin/generator/fastapp_crud/task_factory.py +17 -14
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/model/snake_zrb_entity_name_model.py +2 -2
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/repo/snake_zrb_entity_name_repo.py +3 -2
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/api.py +58 -40
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/model.py +7 -3
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +9 -4
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +32 -39
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +3 -1
- zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +68 -98
- zrb/builtin/generator/fastapp_field/add.py +143 -85
- zrb/builtin/generator/fastapp_field/helper.py +184 -125
- zrb/builtin/generator/fastapp_module/add.py +90 -67
- zrb/builtin/generator/fastapp_module/helper.py +141 -155
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/api.py +3 -2
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/table.py +3 -3
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/event.py +3 -5
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -4
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +10 -11
- zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/rpc.py +3 -5
- zrb/builtin/generator/pip_package/add.py +39 -40
- zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +30 -30
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -2
- zrb/builtin/generator/plugin/create.py +39 -36
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__init__.py +1 -1
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__main__.py +1 -0
- zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/task/example_task.py +6 -4
- zrb/builtin/generator/plugin/template/zrb_init.py +27 -27
- zrb/builtin/generator/project/create.py +38 -46
- zrb/builtin/generator/project/template/.flake8 +3 -0
- zrb/builtin/generator/project/template/project.sh +19 -10
- zrb/builtin/generator/project_task/task_factory.py +60 -61
- zrb/builtin/generator/project_task/template/_automate/_project/__init__.py +2 -2
- zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +4 -4
- zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +4 -4
- zrb/builtin/generator/python_task/add.py +25 -33
- zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +8 -7
- zrb/builtin/generator/simple_python_app/add.py +81 -75
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/_common.py +14 -15
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +46 -61
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +34 -32
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +19 -22
- zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +23 -25
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
- zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/src/main.py +18 -14
- zrb/builtin/git.py +46 -46
- zrb/builtin/group.py +13 -34
- zrb/builtin/helper/reccuring_action.py +26 -29
- zrb/builtin/md5.py +17 -30
- zrb/builtin/process.py +19 -19
- zrb/builtin/project.py +13 -15
- zrb/builtin/say.py +69 -88
- zrb/builtin/schedule.py +15 -19
- zrb/builtin/ubuntu.py +44 -35
- zrb/builtin/update.py +5 -5
- zrb/builtin/version.py +3 -7
- zrb/builtin/watch_changes.py +24 -25
- zrb/config/config.py +19 -18
- zrb/helper/accessories/color.py +18 -6
- zrb/helper/accessories/icon.py +24 -3
- zrb/helper/accessories/name.py +120 -28
- zrb/helper/advertisement.py +9 -13
- zrb/helper/callable.py +2 -4
- zrb/helper/cli.py +27 -31
- zrb/helper/codemod/add_argument_to_function.py +3 -4
- zrb/helper/codemod/add_argument_to_function_call.py +4 -7
- zrb/helper/codemod/add_assert_resource.py +7 -7
- zrb/helper/codemod/add_function_call.py +3 -5
- zrb/helper/codemod/add_import_module.py +15 -26
- zrb/helper/codemod/add_key_value_to_dict.py +7 -10
- zrb/helper/codemod/add_property_to_class.py +10 -8
- zrb/helper/codemod/add_upstream_to_task.py +21 -33
- zrb/helper/codemod/append_code_to_function.py +6 -13
- zrb/helper/codemod/format_code.py +2 -1
- zrb/helper/default_env.py +25 -25
- zrb/helper/docker_compose/fetch_external_env.py +18 -18
- zrb/helper/docker_compose/file.py +5 -4
- zrb/helper/docstring.py +44 -47
- zrb/helper/env_map/fetch.py +7 -12
- zrb/helper/file/copy_tree.py +12 -17
- zrb/helper/file/match.py +6 -7
- zrb/helper/file/text.py +8 -6
- zrb/helper/git/detect_changes.py +9 -8
- zrb/helper/loader/load_module.py +14 -13
- zrb/helper/log.py +4 -3
- zrb/helper/map/conversion.py +4 -5
- zrb/helper/python_task.py +2 -4
- zrb/helper/render_data.py +25 -18
- zrb/helper/string/constant.py +2 -2
- zrb/helper/string/conversion.py +17 -16
- zrb/helper/string/jinja.py +2 -2
- zrb/helper/typecheck.py +6 -4
- zrb/helper/typing.py +10 -2
- zrb/helper/util.py +44 -40
- zrb/task/any_task.py +251 -251
- zrb/task/base_remote_cmd_task.py +76 -59
- zrb/task/base_task/base_task.py +95 -108
- zrb/task/base_task/component/base_task_model.py +73 -71
- zrb/task/base_task/component/common_task_model.py +42 -29
- zrb/task/base_task/component/pid_model.py +3 -5
- zrb/task/base_task/component/renderer.py +26 -36
- zrb/task/base_task/component/trackers.py +6 -9
- zrb/task/checker.py +14 -9
- zrb/task/cmd_task.py +102 -100
- zrb/task/decorator.py +19 -13
- zrb/task/docker_compose_task.py +127 -98
- zrb/task/flow_task.py +16 -19
- zrb/task/http_checker.py +40 -36
- zrb/task/notifier.py +50 -38
- zrb/task/parallel.py +3 -3
- zrb/task/path_checker.py +34 -27
- zrb/task/path_watcher.py +49 -40
- zrb/task/port_checker.py +33 -26
- zrb/task/recurring_task.py +36 -42
- zrb/task/remote_cmd_task.py +31 -28
- zrb/task/resource_maker.py +66 -52
- zrb/task/rsync_task.py +24 -21
- zrb/task/task.py +4 -3
- zrb/task/time_watcher.py +36 -31
- zrb/task_env/constant.py +1 -1
- zrb/task_env/env.py +33 -31
- zrb/task_env/env_file.py +24 -23
- zrb/task_group/group.py +27 -30
- zrb/task_input/any_input.py +18 -16
- zrb/task_input/base_input.py +26 -26
- zrb/task_input/bool_input.py +6 -6
- zrb/task_input/choice_input.py +11 -9
- zrb/task_input/constant.py +1 -1
- zrb/task_input/float_input.py +6 -5
- zrb/task_input/int_input.py +8 -8
- zrb/task_input/password_input.py +9 -9
- zrb/task_input/str_input.py +8 -8
- zrb/task_input/task_input.py +4 -2
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/METADATA +3 -1
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/RECORD +316 -315
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/LICENSE +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/WHEEL +0 -0
- {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/entry_points.txt +0 -0
@@ -344,10 +344,11 @@ services:
|
|
344
344
|
profiles:
|
345
345
|
- monolith
|
346
346
|
healthcheck:
|
347
|
-
test:
|
348
|
-
interval:
|
347
|
+
test: curl --fail http://localhost:${APP_GATEWAY_PORT:-8080}/readiness || killall uvicorn
|
348
|
+
interval: 20s
|
349
349
|
timeout: 3s
|
350
350
|
retries: 10
|
351
|
+
start_period: 20s
|
351
352
|
networks:
|
352
353
|
- zrb
|
353
354
|
|
@@ -381,10 +382,11 @@ services:
|
|
381
382
|
profiles:
|
382
383
|
- microservices
|
383
384
|
healthcheck:
|
384
|
-
test:
|
385
|
-
interval:
|
385
|
+
test: curl --fail http://localhost:${APP_GATEWAY_PORT:-8080}/readiness || killall uvicorn
|
386
|
+
interval: 20s
|
386
387
|
timeout: 3s
|
387
388
|
retries: 10
|
389
|
+
start_period: 20s
|
388
390
|
networks:
|
389
391
|
- zrb
|
390
392
|
|
@@ -414,12 +416,11 @@ services:
|
|
414
416
|
profiles:
|
415
417
|
- microservices
|
416
418
|
healthcheck:
|
417
|
-
test:
|
418
|
-
|
419
|
-
- curl --fail http://localhost:${APP_AUTH_MODULE_PORT:-8081}/readiness || exit 1
|
420
|
-
interval: 5s
|
419
|
+
test: curl --fail http://localhost:${APP_AUTH_MODULE_PORT:-8081}/readiness || killall uvicorn
|
420
|
+
interval: 20s
|
421
421
|
timeout: 3s
|
422
422
|
retries: 10
|
423
|
+
start_period: 20s
|
423
424
|
networks:
|
424
425
|
- zrb
|
425
426
|
|
@@ -449,11 +450,10 @@ services:
|
|
449
450
|
profiles:
|
450
451
|
- microservices
|
451
452
|
healthcheck:
|
452
|
-
test:
|
453
|
-
|
454
|
-
- curl --fail http://localhost:${APP_LOG_MODULE_PORT:-8082}/readiness || exit 1
|
455
|
-
interval: 5s
|
453
|
+
test: curl --fail http://localhost:${APP_LOG_MODULE_PORT:-8082}/readiness || killall uvicorn
|
454
|
+
interval: 20s
|
456
455
|
timeout: 3s
|
457
456
|
retries: 10
|
457
|
+
start_period: 20s
|
458
458
|
networks:
|
459
459
|
- zrb
|
@@ -1,11 +1,12 @@
|
|
1
|
-
from locust import HttpUser, task, between
|
2
1
|
import os
|
3
2
|
|
3
|
+
from locust import HttpUser, between, task
|
4
|
+
|
4
5
|
access_token_cookie_key = os.getenv(
|
5
|
-
|
6
|
+
"PUBLIC_AUTH_ACCESS_TOKEN_COOKIE_KEY", "access_token"
|
6
7
|
)
|
7
|
-
admin_username = os.getenv(
|
8
|
-
admin_password = os.getenv(
|
8
|
+
admin_username = os.getenv("APP_AUTH_ADMIN_USERNAME", "root")
|
9
|
+
admin_password = os.getenv("APP_AUTH_ADMIN_PASSWORD", "toor")
|
9
10
|
|
10
11
|
|
11
12
|
class QuickstartUser(HttpUser):
|
@@ -13,20 +14,17 @@ class QuickstartUser(HttpUser):
|
|
13
14
|
|
14
15
|
@task(2)
|
15
16
|
def homepage(self):
|
16
|
-
self.client.get(
|
17
|
+
self.client.get("/")
|
17
18
|
|
18
19
|
@task
|
19
20
|
def permissions(self):
|
20
|
-
self.client.get(
|
21
|
+
self.client.get("/api/v1/auth/permissions")
|
21
22
|
|
22
23
|
def on_start(self):
|
23
24
|
login_response = self.client.post(
|
24
|
-
|
25
|
-
json={
|
26
|
-
'identity': admin_username,
|
27
|
-
'password': admin_password
|
28
|
-
}
|
25
|
+
"/api/v1/auth/login",
|
26
|
+
json={"identity": admin_username, "password": admin_password},
|
29
27
|
)
|
30
28
|
login_response_json = login_response.json()
|
31
|
-
access_token = login_response_json.get(
|
29
|
+
access_token = login_response_json.get("access_token")
|
32
30
|
self.client.cookies.set(access_token_cookie_key, access_token)
|
@@ -1,28 +1,35 @@
|
|
1
|
+
from component.app_lifespan import app_lifespan, app_state
|
2
|
+
from component.frontend_index import frontend_index_response
|
3
|
+
from config import (
|
4
|
+
app_cors_allow_credentials,
|
5
|
+
app_cors_allow_headers,
|
6
|
+
app_cors_allow_methods,
|
7
|
+
app_cors_allow_origin_regex,
|
8
|
+
app_cors_allow_origins,
|
9
|
+
app_cors_expose_headers,
|
10
|
+
app_cors_max_age,
|
11
|
+
app_enable_frontend,
|
12
|
+
public_auth_access_token_cookie_key,
|
13
|
+
public_auth_refresh_token_cookie_key,
|
14
|
+
public_brand,
|
15
|
+
public_title,
|
16
|
+
zrb_app_name,
|
17
|
+
)
|
1
18
|
from fastapi import FastAPI, status
|
2
19
|
from fastapi.middleware.cors import CORSMiddleware
|
3
20
|
from fastapi.responses import JSONResponse
|
4
|
-
from config import (
|
5
|
-
zrb_app_name, app_enable_frontend, app_cors_allow_credentials,
|
6
|
-
app_cors_allow_headers, app_cors_allow_methods,
|
7
|
-
app_cors_allow_origin_regex, app_cors_allow_origins,
|
8
|
-
app_cors_expose_headers, app_cors_max_age, public_brand,
|
9
|
-
public_title, public_auth_access_token_cookie_key,
|
10
|
-
public_auth_refresh_token_cookie_key
|
11
|
-
)
|
12
21
|
from schema.frontend_config import FrontendConfig
|
13
|
-
from component.app_lifespan import app_state
|
14
|
-
from component.app_lifespan import app_lifespan
|
15
|
-
from component.frontend_index import frontend_index_response
|
16
22
|
|
17
23
|
app = FastAPI(title=zrb_app_name, lifespan=app_lifespan)
|
18
24
|
|
19
25
|
if app_enable_frontend:
|
26
|
+
|
20
27
|
@app.middleware("http")
|
21
28
|
async def catch_all(request, call_next):
|
22
29
|
response = await call_next(request)
|
23
30
|
if response.status_code != 404:
|
24
31
|
return response
|
25
|
-
api_error = str(response.headers.get(
|
32
|
+
api_error = str(response.headers.get("api-error", "")).lower() == "yes"
|
26
33
|
if api_error:
|
27
34
|
return response
|
28
35
|
return frontend_index_response
|
@@ -40,55 +47,53 @@ app.add_middleware(
|
|
40
47
|
)
|
41
48
|
|
42
49
|
|
43
|
-
@app.head(
|
44
|
-
@app.get(
|
50
|
+
@app.head("/liveness")
|
51
|
+
@app.get("/liveness")
|
45
52
|
def get_application_liveness_status():
|
46
|
-
|
53
|
+
"""
|
47
54
|
Get application liveness status.
|
48
55
|
Will return HTTP response status 200 if application is alive,
|
49
56
|
or return 503 otherwise.
|
50
57
|
Orchestrator like Kubernetes will restart
|
51
58
|
any application with non-healthy liveness status.
|
52
|
-
|
59
|
+
"""
|
53
60
|
if app_state.get_liveness():
|
54
61
|
return JSONResponse(
|
55
|
-
content={
|
56
|
-
status_code=status.HTTP_200_OK
|
62
|
+
content={"app": zrb_app_name, "alive": True}, status_code=status.HTTP_200_OK
|
57
63
|
)
|
58
64
|
return JSONResponse(
|
59
|
-
content={
|
65
|
+
content={"message": "Service is not alive"},
|
60
66
|
status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
|
61
|
-
headers={
|
67
|
+
headers={"api-error": "yes"},
|
62
68
|
)
|
63
69
|
|
64
70
|
|
65
|
-
@app.head(
|
66
|
-
@app.get(
|
71
|
+
@app.head("/readiness")
|
72
|
+
@app.get("/readiness")
|
67
73
|
def get_application_readiness_status():
|
68
|
-
|
74
|
+
"""
|
69
75
|
Get application readiness status.
|
70
76
|
Will return HTTP response status 200 if application is ready,
|
71
77
|
or return 503 otherwise.
|
72
78
|
Orchestrator like Kubernetes will only send user request
|
73
79
|
to any application with healthy readiness status.
|
74
|
-
|
80
|
+
"""
|
75
81
|
if app_state.get_readiness():
|
76
82
|
return JSONResponse(
|
77
|
-
content={
|
78
|
-
status_code=status.HTTP_200_OK
|
83
|
+
content={"app": zrb_app_name, "ready": True}, status_code=status.HTTP_200_OK
|
79
84
|
)
|
80
85
|
return JSONResponse(
|
81
|
-
content={
|
86
|
+
content={"message": "Service is not ready"},
|
82
87
|
status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
|
83
|
-
headers={
|
88
|
+
headers={"api-error": "yes"},
|
84
89
|
)
|
85
90
|
|
86
91
|
|
87
|
-
@app.get(
|
92
|
+
@app.get("/api/v1/frontend/configs", response_model=FrontendConfig)
|
88
93
|
def get_configs() -> FrontendConfig:
|
89
94
|
return FrontendConfig(
|
90
95
|
brand=public_brand,
|
91
96
|
title=public_title,
|
92
97
|
access_token_cookie_key=public_auth_access_token_cookie_key,
|
93
|
-
refresh_token_cookie_key=public_auth_refresh_token_cookie_key
|
98
|
+
refresh_token_cookie_key=public_auth_refresh_token_cookie_key,
|
94
99
|
)
|
@@ -1,23 +1,27 @@
|
|
1
|
-
|
2
|
-
from
|
3
|
-
|
4
|
-
zrb_app_name, app_enable_event_handler, app_enable_rpc_server,
|
5
|
-
app_enable_frontend, app_db_auto_migrate
|
6
|
-
)
|
7
|
-
from config import app_src_dir
|
8
|
-
from migrate import migrate
|
1
|
+
import os
|
2
|
+
from contextlib import asynccontextmanager
|
3
|
+
|
9
4
|
from component.app_state import app_state, set_not_ready_on_error
|
5
|
+
from component.log import logger
|
10
6
|
from component.messagebus import consumer
|
11
7
|
from component.rpc import rpc_server
|
12
|
-
from
|
8
|
+
from config import (
|
9
|
+
app_db_auto_migrate,
|
10
|
+
app_enable_event_handler,
|
11
|
+
app_enable_frontend,
|
12
|
+
app_enable_rpc_server,
|
13
|
+
app_src_dir,
|
14
|
+
zrb_app_name,
|
15
|
+
)
|
16
|
+
from fastapi import FastAPI
|
17
|
+
from fastapi.staticfiles import StaticFiles
|
13
18
|
from helper.async_task import create_task
|
14
|
-
from
|
15
|
-
import os
|
19
|
+
from migrate import migrate
|
16
20
|
|
17
21
|
|
18
22
|
@asynccontextmanager
|
19
23
|
async def app_lifespan(app: FastAPI):
|
20
|
-
logger.info(f
|
24
|
+
logger.info(f"{zrb_app_name} started")
|
21
25
|
if app_db_auto_migrate:
|
22
26
|
await migrate()
|
23
27
|
app_state.set_liveness(True)
|
@@ -26,15 +30,15 @@ async def app_lifespan(app: FastAPI):
|
|
26
30
|
if app_enable_rpc_server:
|
27
31
|
create_task(rpc_server.start(), on_error=set_not_ready_on_error)
|
28
32
|
if app_enable_frontend:
|
29
|
-
build_path = os.path.join(app_src_dir,
|
33
|
+
build_path = os.path.join(app_src_dir, "frontend", "build")
|
30
34
|
app.mount(
|
31
|
-
path=
|
35
|
+
path="",
|
32
36
|
app=StaticFiles(directory=build_path, html=True),
|
33
|
-
name=
|
37
|
+
name="frontend-static-resources",
|
34
38
|
)
|
35
39
|
app_state.set_readiness(True)
|
36
|
-
logger.info(f
|
40
|
+
logger.info(f"{zrb_app_name} started")
|
37
41
|
yield
|
38
42
|
if app_enable_event_handler:
|
39
43
|
await consumer.stop()
|
40
|
-
logger.info(f
|
44
|
+
logger.info(f"{zrb_app_name} closed")
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/db_connection.py
CHANGED
@@ -1,32 +1,30 @@
|
|
1
|
-
from sqlalchemy import create_engine, Engine
|
2
|
-
from sqlalchemy import event
|
3
|
-
from config import app_db_connection, app_db_engine_show_log
|
4
|
-
from component.log import logger
|
5
1
|
import time
|
6
2
|
|
3
|
+
from component.log import logger
|
4
|
+
from config import app_db_connection, app_db_engine_show_log
|
5
|
+
from sqlalchemy import Engine, create_engine, event
|
6
|
+
|
7
7
|
|
8
8
|
@event.listens_for(Engine, "before_cursor_execute")
|
9
|
-
def before_cursor_execute(
|
10
|
-
conn, cursor, statement, parameters, context, executemany
|
11
|
-
):
|
9
|
+
def before_cursor_execute(conn, cursor, statement, parameters, context, executemany):
|
12
10
|
context._query_start_time = time.time()
|
13
|
-
one_line_statement =
|
14
|
-
logger.info(
|
15
|
-
f'💽 [start query] SQL:`{one_line_statement}`, parameters {parameters}'
|
16
|
-
)
|
11
|
+
one_line_statement = " ".join(statement.split("\n"))
|
12
|
+
logger.info(f"💽 [start query] SQL:`{one_line_statement}`, parameters {parameters}")
|
17
13
|
|
18
14
|
|
19
15
|
@event.listens_for(Engine, "after_cursor_execute")
|
20
|
-
def after_cursor_execute(
|
21
|
-
conn, cursor, statement, parameters, context, executemany
|
22
|
-
):
|
16
|
+
def after_cursor_execute(conn, cursor, statement, parameters, context, executemany):
|
23
17
|
total = time.time() - context._query_start_time
|
24
|
-
one_line_statement =
|
25
|
-
logger.info(
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
18
|
+
one_line_statement = " ".join(statement.split("\n"))
|
19
|
+
logger.info(
|
20
|
+
" ".join(
|
21
|
+
[
|
22
|
+
f"💽 [query completed] Elapsed time: {total} ms,",
|
23
|
+
f"SQL: `{one_line_statement}`,",
|
24
|
+
f"parameters {parameters}",
|
25
|
+
]
|
26
|
+
)
|
27
|
+
)
|
30
28
|
|
31
29
|
|
32
30
|
engine: Engine = create_engine(app_db_connection, echo=app_db_engine_show_log)
|
zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/frontend_index.py
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
from fastapi.responses import HTMLResponse
|
2
|
-
from config import app_src_dir
|
3
1
|
import os
|
4
2
|
|
5
|
-
|
3
|
+
from config import app_src_dir
|
4
|
+
from fastapi.responses import HTMLResponse
|
5
|
+
|
6
|
+
index_html_path = os.path.join(app_src_dir, "frontend", "build", "index.html")
|
6
7
|
with open(index_html_path, "r") as f:
|
7
8
|
index_html_content = f.read()
|
8
9
|
|
9
|
-
frontend_index_response = HTMLResponse(
|
10
|
-
content=index_html_content, status_code=200
|
11
|
-
)
|
10
|
+
frontend_index_response = HTMLResponse(content=index_html_content, status_code=200)
|
@@ -1,19 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from config import app_enable_otel, app_logging_level, app_otel_exporter_otlp_endpoint
|
4
4
|
from opentelemetry._logs import set_logger_provider
|
5
|
-
from opentelemetry.exporter.otlp.proto.grpc._log_exporter import
|
6
|
-
OTLPLogExporter
|
7
|
-
)
|
5
|
+
from opentelemetry.exporter.otlp.proto.grpc._log_exporter import OTLPLogExporter
|
8
6
|
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
|
9
7
|
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
|
10
8
|
|
11
|
-
import logging
|
12
|
-
|
13
9
|
##############################################################################
|
14
10
|
# Create logger
|
15
11
|
##############################################################################
|
16
|
-
logger = logging.getLogger(
|
12
|
+
logger = logging.getLogger("src")
|
17
13
|
logger.setLevel(app_logging_level)
|
18
14
|
|
19
15
|
##############################################################################
|
@@ -23,9 +19,7 @@ logger.setLevel(app_logging_level)
|
|
23
19
|
stream_handler = logging.StreamHandler()
|
24
20
|
stream_handler.setLevel(app_logging_level)
|
25
21
|
# create formatter
|
26
|
-
formatter = logging.Formatter(
|
27
|
-
'%(levelname)s:\t%(message)s'
|
28
|
-
)
|
22
|
+
formatter = logging.Formatter("%(levelname)s:\t%(message)s")
|
29
23
|
# set stream handler's formatter
|
30
24
|
stream_handler.setFormatter(formatter)
|
31
25
|
# add ch to logger
|
@@ -40,9 +34,7 @@ if app_enable_otel:
|
|
40
34
|
otlp_logger_provider = LoggerProvider()
|
41
35
|
# set the providers
|
42
36
|
set_logger_provider(otlp_logger_provider)
|
43
|
-
otlp_log_exporter = OTLPLogExporter(
|
44
|
-
endpoint=app_otel_exporter_otlp_endpoint
|
45
|
-
)
|
37
|
+
otlp_log_exporter = OTLPLogExporter(endpoint=app_otel_exporter_otlp_endpoint)
|
46
38
|
# add the batch processors to the trace provider
|
47
39
|
otlp_logger_provider.add_log_record_processor(
|
48
40
|
BatchLogRecordProcessor(otlp_log_exporter)
|
@@ -1,27 +1,37 @@
|
|
1
|
+
from component.log import logger
|
1
2
|
from config import (
|
2
|
-
|
3
|
-
app_kafka_bootstrap_servers,
|
4
|
-
app_kafka_sasl_mechanism,
|
3
|
+
app_broker_type,
|
4
|
+
app_kafka_bootstrap_servers,
|
5
|
+
app_kafka_sasl_mechanism,
|
6
|
+
app_kafka_sasl_pass,
|
7
|
+
app_kafka_sasl_user,
|
8
|
+
app_kafka_security_protocol,
|
9
|
+
app_rmq_connection_string,
|
10
|
+
zrb_app_name,
|
5
11
|
)
|
6
12
|
from core.messagebus import (
|
7
|
-
Admin,
|
8
|
-
|
9
|
-
KafkaAdmin,
|
10
|
-
|
13
|
+
Admin,
|
14
|
+
Consumer,
|
15
|
+
KafkaAdmin,
|
16
|
+
KafkaConsumer,
|
17
|
+
KafkaPublisher,
|
18
|
+
MessageSerializer,
|
19
|
+
MockAdmin,
|
20
|
+
MockConsumer,
|
21
|
+
MockPublisher,
|
22
|
+
Publisher,
|
23
|
+
RMQAdmin,
|
24
|
+
RMQConsumer,
|
25
|
+
RMQPublisher,
|
11
26
|
)
|
12
|
-
from component.log import logger
|
13
27
|
|
14
28
|
|
15
|
-
def init_admin(
|
16
|
-
|
17
|
-
) -> Admin:
|
18
|
-
if app_broker_type == 'rabbitmq':
|
29
|
+
def init_admin(default_admin: Admin) -> Admin:
|
30
|
+
if app_broker_type == "rabbitmq":
|
19
31
|
return RMQAdmin(
|
20
|
-
logger=logger,
|
21
|
-
connection_string=app_rmq_connection_string,
|
22
|
-
configs={}
|
32
|
+
logger=logger, connection_string=app_rmq_connection_string, configs={}
|
23
33
|
)
|
24
|
-
if app_broker_type ==
|
34
|
+
if app_broker_type == "kafka":
|
25
35
|
return KafkaAdmin(
|
26
36
|
logger=logger,
|
27
37
|
bootstrap_servers=app_kafka_bootstrap_servers,
|
@@ -29,24 +39,22 @@ def init_admin(
|
|
29
39
|
sasl_mechanism=app_kafka_sasl_mechanism,
|
30
40
|
sasl_plain_username=app_kafka_sasl_user,
|
31
41
|
sasl_plain_password=app_kafka_sasl_pass,
|
32
|
-
configs={}
|
42
|
+
configs={},
|
33
43
|
)
|
34
44
|
return default_admin
|
35
45
|
|
36
46
|
|
37
47
|
def init_publisher(
|
38
|
-
serializer: MessageSerializer,
|
39
|
-
admin: Admin,
|
40
|
-
default_publisher: Publisher
|
48
|
+
serializer: MessageSerializer, admin: Admin, default_publisher: Publisher
|
41
49
|
) -> Publisher:
|
42
|
-
if app_broker_type ==
|
50
|
+
if app_broker_type == "rabbitmq":
|
43
51
|
return RMQPublisher(
|
44
52
|
logger=logger,
|
45
53
|
connection_string=app_rmq_connection_string,
|
46
54
|
serializer=serializer,
|
47
|
-
rmq_admin=admin
|
55
|
+
rmq_admin=admin,
|
48
56
|
)
|
49
|
-
if app_broker_type ==
|
57
|
+
if app_broker_type == "kafka":
|
50
58
|
return KafkaPublisher(
|
51
59
|
logger=logger,
|
52
60
|
bootstrap_servers=app_kafka_bootstrap_servers,
|
@@ -55,24 +63,22 @@ def init_publisher(
|
|
55
63
|
sasl_plain_username=app_kafka_sasl_user,
|
56
64
|
sasl_plain_password=app_kafka_sasl_pass,
|
57
65
|
serializer=serializer,
|
58
|
-
kafka_admin=admin
|
66
|
+
kafka_admin=admin,
|
59
67
|
)
|
60
68
|
return default_publisher
|
61
69
|
|
62
70
|
|
63
71
|
def init_consumer(
|
64
|
-
serializer: MessageSerializer,
|
65
|
-
admin: Admin,
|
66
|
-
default_consumer: Consumer
|
72
|
+
serializer: MessageSerializer, admin: Admin, default_consumer: Consumer
|
67
73
|
) -> Consumer:
|
68
|
-
if app_broker_type ==
|
74
|
+
if app_broker_type == "rabbitmq":
|
69
75
|
return RMQConsumer(
|
70
76
|
logger=logger,
|
71
77
|
connection_string=app_rmq_connection_string,
|
72
78
|
serializer=serializer,
|
73
|
-
rmq_admin=admin
|
79
|
+
rmq_admin=admin,
|
74
80
|
)
|
75
|
-
if app_broker_type ==
|
81
|
+
if app_broker_type == "kafka":
|
76
82
|
return KafkaConsumer(
|
77
83
|
logger=logger,
|
78
84
|
bootstrap_servers=app_kafka_bootstrap_servers,
|
@@ -82,7 +88,7 @@ def init_consumer(
|
|
82
88
|
sasl_plain_password=app_kafka_sasl_pass,
|
83
89
|
group_id=zrb_app_name,
|
84
90
|
serializer=serializer,
|
85
|
-
kafka_admin=admin
|
91
|
+
kafka_admin=admin,
|
86
92
|
)
|
87
93
|
return default_consumer
|
88
94
|
|
@@ -103,7 +109,5 @@ consumer = init_consumer(
|
|
103
109
|
serializer=message_serializer, admin=admin, default_consumer=mock_consumer
|
104
110
|
)
|
105
111
|
publisher = init_publisher(
|
106
|
-
serializer=message_serializer,
|
107
|
-
admin=admin,
|
108
|
-
default_publisher=mock_publisher
|
112
|
+
serializer=message_serializer, admin=admin, default_publisher=mock_publisher
|
109
113
|
)
|
@@ -1,48 +1,49 @@
|
|
1
|
-
from
|
2
|
-
from core.messagebus import RMQConsumer, KafkaConsumer
|
1
|
+
from component.log import logger
|
3
2
|
from component.messagebus import (
|
4
|
-
admin,
|
3
|
+
admin,
|
4
|
+
consumer,
|
5
|
+
message_serializer,
|
6
|
+
mock_consumer,
|
7
|
+
publisher,
|
5
8
|
)
|
6
|
-
from component.log import logger
|
7
9
|
from config import (
|
8
|
-
|
9
|
-
app_kafka_bootstrap_servers
|
10
|
+
app_broker_type,
|
11
|
+
app_kafka_bootstrap_servers,
|
12
|
+
app_rmq_connection_string,
|
13
|
+
zrb_app_name,
|
10
14
|
)
|
15
|
+
from core.messagebus import KafkaConsumer, RMQConsumer
|
16
|
+
from core.rpc import Caller, MessagebusCaller, MessagebusServer, Server
|
11
17
|
from ulid import ULID
|
12
18
|
|
13
19
|
|
14
20
|
def create_consumer():
|
15
|
-
if app_broker_type ==
|
21
|
+
if app_broker_type == "rabbitmq":
|
16
22
|
return RMQConsumer(
|
17
23
|
logger=logger,
|
18
24
|
connection_string=app_rmq_connection_string,
|
19
25
|
serializer=message_serializer,
|
20
26
|
rmq_admin=admin,
|
21
|
-
identifier=
|
27
|
+
identifier="rmq-rpc-reply-consumer",
|
22
28
|
)
|
23
|
-
if app_broker_type ==
|
29
|
+
if app_broker_type == "kafka":
|
24
30
|
random_uuid = str(ULID())
|
25
|
-
group_id = f
|
31
|
+
group_id = f"{zrb_app_name}-reply-{random_uuid}"
|
26
32
|
return KafkaConsumer(
|
27
33
|
logger=logger,
|
28
34
|
bootstrap_servers=app_kafka_bootstrap_servers,
|
29
35
|
group_id=group_id,
|
30
36
|
serializer=message_serializer,
|
31
37
|
kafka_admin=admin,
|
32
|
-
identifier=
|
38
|
+
identifier="kafka-rpc-reply-consumer",
|
33
39
|
)
|
34
40
|
return mock_consumer
|
35
41
|
|
36
42
|
|
37
43
|
rpc_caller: Caller = MessagebusCaller(
|
38
|
-
logger=logger,
|
39
|
-
admin=admin,
|
40
|
-
publisher=publisher,
|
41
|
-
consumer_factory=create_consumer
|
44
|
+
logger=logger, admin=admin, publisher=publisher, consumer_factory=create_consumer
|
42
45
|
)
|
43
46
|
|
44
47
|
rpc_server: Server = MessagebusServer(
|
45
|
-
logger=logger,
|
46
|
-
consumer=consumer,
|
47
|
-
publisher=publisher
|
48
|
+
logger=logger, consumer=consumer, publisher=publisher
|
48
49
|
)
|