octopize.deploy_tool 0.1.0__tar.gz → 0.3.0__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.
Files changed (301) hide show
  1. octopize_deploy_tool-0.3.0/PKG-INFO +168 -0
  2. octopize_deploy_tool-0.3.0/README.md +139 -0
  3. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/pyproject.toml +2 -2
  4. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/configure.py +35 -8
  5. octopize_deploy_tool-0.3.0/src/octopize_avatar_deploy/defaults.yaml +47 -0
  6. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/download_templates.py +126 -25
  7. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/state_manager.py +16 -9
  8. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/required.py +8 -3
  9. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/telemetry.py +6 -5
  10. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/version_compat.py +1 -1
  11. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/conftest.py +82 -1
  12. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/__init__.py +3 -1
  13. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/basic_deployment/expected/.deployment-state.yaml +8 -8
  14. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/branding/background.png +0 -0
  15. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/branding/favicon.ico +0 -0
  16. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/branding/logo.png +0 -0
  17. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  18. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_account_exists.html +126 -0
  19. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  20. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  21. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_password_changed.html +111 -0
  22. octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment/expected/authentik/custom-templates/email_password_reset.html +109 -0
  23. {octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first → octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment}/expected/authentik/octopize-avatar-blueprint.yaml +4 -4
  24. {octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second → octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment}/expected/docker-compose.yml +0 -2
  25. {octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first → octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment}/expected/nginx/nginx.conf +1 -1
  26. {octopize_deploy_tool-0.1.0/tests/fixtures/output_dir_nested → octopize_deploy_tool-0.3.0/tests/fixtures/basic_deployment}/output.txt +2 -0
  27. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/cloud_storage/expected/.deployment-state.yaml +8 -8
  28. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/branding/background.png +0 -0
  29. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/branding/favicon.ico +0 -0
  30. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/branding/logo.png +0 -0
  31. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  32. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_account_exists.html +126 -0
  33. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  34. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  35. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_password_changed.html +111 -0
  36. octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage/expected/authentik/custom-templates/email_password_reset.html +109 -0
  37. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/cloud_storage/expected/authentik/octopize-avatar-blueprint.yaml +4 -4
  38. {octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first → octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage}/expected/docker-compose.yml +0 -2
  39. {octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second → octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage}/expected/nginx/nginx.conf +1 -1
  40. {octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment → octopize_deploy_tool-0.3.0/tests/fixtures/cloud_storage}/output.txt +2 -0
  41. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/config_round_trip_first/expected/.deployment-state.yaml +8 -8
  42. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/branding/background.png +0 -0
  43. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/branding/favicon.ico +0 -0
  44. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/branding/logo.png +0 -0
  45. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  46. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_account_exists.html +126 -0
  47. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  48. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  49. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_password_changed.html +111 -0
  50. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first/expected/authentik/custom-templates/email_password_reset.html +109 -0
  51. {octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second → octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first}/expected/authentik/octopize-avatar-blueprint.yaml +4 -4
  52. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/config_round_trip_first/expected/deployment-config.yaml +8 -8
  53. {octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment → octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first}/expected/docker-compose.yml +0 -2
  54. {octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment → octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_first}/expected/nginx/nginx.conf +1 -1
  55. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/config_round_trip_second/expected/.deployment-state.yaml +8 -8
  56. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/branding/background.png +0 -0
  57. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/branding/favicon.ico +0 -0
  58. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/branding/logo.png +0 -0
  59. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  60. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_account_exists.html +126 -0
  61. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  62. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  63. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_password_changed.html +111 -0
  64. octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second/expected/authentik/custom-templates/email_password_reset.html +109 -0
  65. {octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment → octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second}/expected/authentik/octopize-avatar-blueprint.yaml +4 -4
  66. {octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage → octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second}/expected/docker-compose.yml +0 -2
  67. {octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry → octopize_deploy_tool-0.3.0/tests/fixtures/config_round_trip_second}/expected/nginx/nginx.conf +1 -1
  68. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/invalid_port_config/output.txt +2 -0
  69. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/invalid_url_config/output.txt +2 -0
  70. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/no_telemetry/expected/.deployment-state.yaml +8 -8
  71. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/branding/background.png +0 -0
  72. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/branding/favicon.ico +0 -0
  73. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/branding/logo.png +0 -0
  74. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  75. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_account_exists.html +126 -0
  76. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  77. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  78. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_password_changed.html +111 -0
  79. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/authentik/custom-templates/email_password_reset.html +109 -0
  80. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/no_telemetry/expected/authentik/octopize-avatar-blueprint.yaml +4 -4
  81. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/docker-compose.yml +554 -0
  82. octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry/expected/nginx/nginx.conf +93 -0
  83. {octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage → octopize_deploy_tool-0.3.0/tests/fixtures/no_telemetry}/output.txt +3 -1
  84. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_complete/expected/.deployment-state.yaml +8 -8
  85. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/branding/background.png +0 -0
  86. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/branding/favicon.ico +0 -0
  87. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/branding/logo.png +0 -0
  88. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_account_confirmation.html +93 -0
  89. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_account_exists.html +126 -0
  90. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_account_invitation.html +159 -0
  91. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_forgotten_password.html +124 -0
  92. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_password_changed.html +111 -0
  93. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/authentik/custom-templates/email_password_reset.html +109 -0
  94. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_complete/expected/authentik/octopize-avatar-blueprint.yaml +4 -4
  95. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/docker-compose.yml +554 -0
  96. octopize_deploy_tool-0.3.0/tests/fixtures/non_interactive_complete/expected/nginx/nginx.conf +93 -0
  97. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_complete/output.txt +2 -0
  98. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_incomplete_config/output.txt +2 -0
  99. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_partial_config/output.txt +2 -0
  100. octopize_deploy_tool-0.3.0/tests/fixtures/output_dir_nested/output.txt +52 -0
  101. octopize_deploy_tool-0.3.0/tests/fixtures/resume_interrupted/first_run/output.txt +19 -0
  102. octopize_deploy_tool-0.3.0/tests/fixtures/resume_interrupted/input_first_run.yaml +10 -0
  103. octopize_deploy_tool-0.3.0/tests/fixtures/resume_interrupted/input_resume.yaml +7 -0
  104. octopize_deploy_tool-0.3.0/tests/fixtures/resume_interrupted/resume/output.txt +75 -0
  105. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/save_config_interactive/output.txt +2 -0
  106. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/save_config_with_existing/output.txt +3 -1
  107. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/template_from_local_verbose/output.txt +4 -2
  108. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/type_mismatch_config/output.txt +2 -0
  109. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/integration/test_cli_integration.py +94 -0
  110. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/unit/test_deployment_configurator.py +6 -27
  111. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/unit/test_deployment_runner.py +26 -53
  112. octopize_deploy_tool-0.1.0/PKG-INFO +0 -346
  113. octopize_deploy_tool-0.1.0/README.md +0 -317
  114. octopize_deploy_tool-0.1.0/src/octopize_avatar_deploy/defaults.yaml +0 -63
  115. octopize_deploy_tool-0.1.0/tests/MISSING_CLI_TESTS.md +0 -323
  116. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.env +0 -97
  117. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/admin_emails +0 -1
  118. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_database_name +0 -1
  119. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_database_password +0 -1
  120. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_database_user +0 -1
  121. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authentik_secret_key +0 -1
  122. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/authjwt_secret_key +0 -1
  123. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/clevercloud_sso_salt +0 -1
  124. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_admin_password +0 -1
  125. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_admin_user +0 -1
  126. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_name +0 -1
  127. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_password +0 -1
  128. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/db_user +0 -1
  129. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/file_encryption_key +0 -1
  130. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/file_jwt_secret_key +0 -1
  131. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/organization_name +0 -1
  132. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/pepper +0 -1
  133. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/storage_admin_access_key_id +0 -1
  134. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/storage_admin_secret_access_key +0 -1
  135. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/telemetry_s3_access_key_id +0 -0
  136. octopize_deploy_tool-0.1.0/tests/fixtures/basic_deployment/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  137. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.env +0 -98
  138. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/admin_emails +0 -1
  139. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_database_name +0 -1
  140. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_database_password +0 -1
  141. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_database_user +0 -1
  142. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authentik_secret_key +0 -1
  143. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/authjwt_secret_key +0 -1
  144. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/clevercloud_sso_salt +0 -1
  145. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_admin_password +0 -1
  146. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_admin_user +0 -1
  147. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_name +0 -1
  148. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_password +0 -1
  149. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/db_user +0 -1
  150. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/file_encryption_key +0 -1
  151. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/file_jwt_secret_key +0 -1
  152. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/organization_name +0 -1
  153. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/pepper +0 -1
  154. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/storage_admin_access_key_id +0 -1
  155. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/.secrets/storage_admin_secret_access_key +0 -1
  156. octopize_deploy_tool-0.1.0/tests/fixtures/cloud_storage/expected/nginx/nginx.conf +0 -93
  157. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.env +0 -97
  158. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/admin_emails +0 -1
  159. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_database_name +0 -1
  160. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_database_password +0 -1
  161. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_database_user +0 -1
  162. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authentik_secret_key +0 -1
  163. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/authjwt_secret_key +0 -1
  164. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/clevercloud_sso_salt +0 -1
  165. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_admin_password +0 -1
  166. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_admin_user +0 -1
  167. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_name +0 -1
  168. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_password +0 -1
  169. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/db_user +0 -1
  170. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/file_encryption_key +0 -1
  171. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/file_jwt_secret_key +0 -1
  172. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/organization_name +0 -1
  173. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/pepper +0 -1
  174. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/storage_admin_access_key_id +0 -1
  175. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/storage_admin_secret_access_key +0 -1
  176. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/telemetry_s3_access_key_id +0 -0
  177. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_first/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  178. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.env +0 -97
  179. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/admin_emails +0 -1
  180. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_database_name +0 -1
  181. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_database_password +0 -1
  182. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_database_user +0 -1
  183. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authentik_secret_key +0 -1
  184. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/authjwt_secret_key +0 -1
  185. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/clevercloud_sso_salt +0 -1
  186. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_admin_password +0 -1
  187. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_admin_user +0 -1
  188. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_name +0 -1
  189. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_password +0 -1
  190. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/db_user +0 -1
  191. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/file_encryption_key +0 -1
  192. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/file_jwt_secret_key +0 -1
  193. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/organization_name +0 -1
  194. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/pepper +0 -1
  195. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/storage_admin_access_key_id +0 -1
  196. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/storage_admin_secret_access_key +0 -1
  197. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/telemetry_s3_access_key_id +0 -0
  198. octopize_deploy_tool-0.1.0/tests/fixtures/config_round_trip_second/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  199. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.env +0 -98
  200. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/admin_emails +0 -1
  201. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_database_name +0 -1
  202. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_database_password +0 -1
  203. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_database_user +0 -1
  204. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authentik_secret_key +0 -1
  205. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/authjwt_secret_key +0 -1
  206. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/clevercloud_sso_salt +0 -1
  207. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_admin_password +0 -1
  208. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_admin_user +0 -1
  209. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_name +0 -1
  210. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_password +0 -1
  211. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/db_user +0 -1
  212. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/file_encryption_key +0 -1
  213. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/file_jwt_secret_key +0 -1
  214. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/organization_name +0 -1
  215. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/pepper +0 -1
  216. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/storage_admin_access_key_id +0 -1
  217. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/.secrets/storage_admin_secret_access_key +0 -1
  218. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/expected/docker-compose.yml +0 -556
  219. octopize_deploy_tool-0.1.0/tests/fixtures/no_telemetry/output.txt +0 -50
  220. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.env +0 -97
  221. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/admin_emails +0 -0
  222. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_database_name +0 -1
  223. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_database_password +0 -1
  224. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_database_user +0 -1
  225. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authentik_secret_key +0 -1
  226. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/authjwt_secret_key +0 -1
  227. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/aws_mail_account_access_key_id +0 -0
  228. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/aws_mail_account_secret_access_key +0 -0
  229. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/clevercloud_sso_salt +0 -1
  230. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_admin_password +0 -1
  231. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_admin_user +0 -1
  232. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_name +0 -1
  233. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_password +0 -1
  234. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/db_user +0 -1
  235. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/file_encryption_key +0 -1
  236. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/file_jwt_secret_key +0 -1
  237. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/organization_name +0 -1
  238. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/pepper +0 -1
  239. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/storage_admin_access_key_id +0 -1
  240. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/storage_admin_secret_access_key +0 -1
  241. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/telemetry_s3_access_key_id +0 -0
  242. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/.secrets/telemetry_s3_secret_access_key +0 -0
  243. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/docker-compose.yml +0 -556
  244. octopize_deploy_tool-0.1.0/tests/fixtures/non_interactive_complete/expected/nginx/nginx.conf +0 -93
  245. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/.gitignore +0 -0
  246. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/__init__.py +0 -0
  247. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/cli_test_harness.py +0 -0
  248. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/input_gatherer.py +0 -0
  249. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/printer.py +0 -0
  250. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/__init__.py +0 -0
  251. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/authentik.py +0 -0
  252. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/authentik_blueprint.py +0 -0
  253. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/base.py +0 -0
  254. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/database.py +0 -0
  255. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/email.py +0 -0
  256. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/logging.py +0 -0
  257. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/storage.py +0 -0
  258. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/src/octopize_avatar_deploy/steps/user.py +0 -0
  259. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/QUICK_REFERENCE.md +0 -0
  260. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/TESTING_GUIDE.md +0 -0
  261. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/__init__.py +0 -0
  262. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/basic_deployment/input.yaml +0 -0
  263. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/cloud_storage/input.yaml +0 -0
  264. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/config_not_found/output.txt +0 -0
  265. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/help/output.txt +0 -0
  266. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/invalid_port_config/config.yaml +0 -0
  267. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/invalid_url_config/config.yaml +0 -0
  268. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/malformed_yaml/config.yaml +0 -0
  269. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/malformed_yaml/output.txt +0 -0
  270. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/missing_templates/output.txt +0 -0
  271. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/no_telemetry/input.yaml +0 -0
  272. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_complete/config.yaml +0 -0
  273. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_incomplete_config/config.yaml +0 -0
  274. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_no_config/output.txt +0 -0
  275. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/non_interactive_partial_config/config.yaml +0 -0
  276. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/output_dir_permission_denied/output.txt +0 -0
  277. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/save_config_with_existing/config.yaml +0 -0
  278. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/save_config_with_existing/input.yaml +0 -0
  279. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/template_source_empty/output.txt +0 -0
  280. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/template_source_not_found/output.txt +0 -0
  281. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/template_source_partial/output.txt +0 -0
  282. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/fixtures/type_mismatch_config/config.yaml +0 -0
  283. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/integration/README.md +0 -0
  284. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/integration/__init__.py +0 -0
  285. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_authentik.py +0 -0
  286. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_authentik_blueprint.py +0 -0
  287. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_base.py +0 -0
  288. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_database.py +0 -0
  289. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_email.py +0 -0
  290. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_logging.py +0 -0
  291. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_required.py +0 -0
  292. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_state_manager.py +0 -0
  293. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_storage.py +0 -0
  294. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_telemetry.py +0 -0
  295. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_user.py +0 -0
  296. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/steps/test_user_validation.py +0 -0
  297. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/test_cli_harness.py +0 -0
  298. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/unit/test_input_gatherer.py +0 -0
  299. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/unit/test_printer.py +0 -0
  300. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/unit/test_rich_implementations.py +0 -0
  301. {octopize_deploy_tool-0.1.0 → octopize_deploy_tool-0.3.0}/tests/unit/test_version_validation.py +0 -0
@@ -0,0 +1,168 @@
1
+ Metadata-Version: 2.4
2
+ Name: octopize.deploy_tool
3
+ Version: 0.3.0
4
+ Summary: Deployment configuration tool for Octopize Avatar platform
5
+ Project-URL: Homepage, https://octopize.io
6
+ Project-URL: Documentation, https://docs.octopize.io/docs/deploying/self-hosted
7
+ Project-URL: Repository, https://github.com/octopize/avatar-deployment
8
+ Project-URL: Issues, https://github.com/octopize/avatar-deployment/issues
9
+ Author-email: Octopize <contact@octopize.io>
10
+ License: MIT
11
+ Keywords: avatar,configuration,deployment,octopize
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: System Administrators
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: System :: Installation/Setup
19
+ Classifier: Topic :: System :: Systems Administration
20
+ Requires-Python: >=3.13
21
+ Requires-Dist: jinja2>=3.1.0
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: rich>=13.0.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: mypy; extra == 'dev'
26
+ Requires-Dist: pytest>=7.0; extra == 'dev'
27
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
28
+ Description-Content-Type: text/markdown
29
+
30
+ # Octopize Avatar Deployment Tool
31
+
32
+ Automated configuration tool for deploying Octopize Avatar platform using Docker Compose.
33
+
34
+ ## Quick Start
35
+
36
+ ```bash
37
+ # Install
38
+ pip install octopize-avatar-deploy
39
+
40
+ # Run interactive configuration
41
+ octopize-avatar-deploy --output-dir /app/avatar
42
+
43
+ # Deploy
44
+ cd /app/avatar
45
+ docker compose down --volumes --remove-orphans # Clean old containers if redeploying
46
+ docker compose up -d
47
+ ```
48
+
49
+ ## Usage Options
50
+
51
+ ### Interactive Mode (Default)
52
+
53
+ ```bash
54
+ octopize-avatar-deploy --output-dir /app/avatar
55
+ ```
56
+
57
+ ### Non-Interactive Mode
58
+
59
+ ```bash
60
+ # Create config file
61
+ cat > config.yaml << EOF
62
+ PUBLIC_URL: avatar.example.com
63
+ ENV_NAME: prod
64
+ ORGANIZATION_NAME: MyCompany
65
+ EOF
66
+
67
+ # Run with config
68
+ octopize-avatar-deploy --output-dir /app/avatar --config config.yaml --non-interactive
69
+ ```
70
+
71
+ ## Command Line Options
72
+
73
+ ```
74
+ --output-dir DIR Output directory (default: current directory)
75
+ --config FILE YAML configuration file
76
+ --non-interactive Non-interactive mode (requires config file)
77
+ --template-from PATH Use local templates instead of downloading from GitHub
78
+ --save-config Save configuration to deployment-config.yaml
79
+ --verbose Show detailed output
80
+ ```
81
+
82
+ ## What Gets Generated
83
+
84
+ ```
85
+ /app/avatar/
86
+ ├── .env # Environment configuration
87
+ ├── docker-compose.yml # Docker services
88
+ ├── nginx/nginx.conf # Nginx config
89
+ ├── authentik/
90
+ │ ├── octopize-avatar-blueprint.yaml
91
+ │ ├── custom-templates/ # Email templates
92
+ │ └── branding/ # Logo, favicon, background
93
+ └── .secrets/ # Generated secrets (22 files)
94
+ ```
95
+
96
+ ## Deployment Steps
97
+
98
+ 1. **Generate configuration:**
99
+
100
+ ```bash
101
+ octopize-avatar-deploy --output-dir /app/avatar
102
+ ```
103
+
104
+ 2. **Review generated files:**
105
+
106
+ ```bash
107
+ cd /app/avatar
108
+ cat .env
109
+ ls -la .secrets/
110
+ ```
111
+
112
+ 3. **Add TLS certificates (production):**
113
+
114
+ ```bash
115
+ mkdir -p tls
116
+ cp /path/to/fullchain.pem tls/
117
+ cp /path/to/privkey.pem tls/
118
+ ```
119
+
120
+ 4. **Start services:**
121
+
122
+ ```bash
123
+ docker compose down --volumes --remove-orphans
124
+ docker compose up -d
125
+ ```
126
+
127
+ 5. **Verify deployment:**
128
+
129
+ ```bash
130
+ docker compose ps
131
+ docker compose logs -f
132
+ curl https://avatar.example.com/api/health
133
+ ```
134
+
135
+ ## Troubleshooting
136
+
137
+ ### "bind source path does not exist" error
138
+
139
+ Old containers from previous deployment. Solution:
140
+
141
+ ```bash
142
+ docker compose down --volumes --remove-orphans
143
+ docker compose up -d
144
+ ```
145
+
146
+ ### Templates not downloading
147
+
148
+ ```bash
149
+ rm -rf .avatar-templates/
150
+ octopize-avatar-deploy --output-dir /app/avatar --verbose
151
+ ```
152
+
153
+ ## Development
154
+
155
+ ```bash
156
+ # Clone
157
+ git clone https://github.com/octopize/avatar-deployment
158
+ cd avatar-deployment/deployment-tool
159
+
160
+ # Install dependencies
161
+ just install
162
+
163
+ # Run tests
164
+ just test-all
165
+
166
+ # Run locally
167
+ just run-interactive-local
168
+ ```
@@ -0,0 +1,139 @@
1
+ # Octopize Avatar Deployment Tool
2
+
3
+ Automated configuration tool for deploying Octopize Avatar platform using Docker Compose.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ # Install
9
+ pip install octopize-avatar-deploy
10
+
11
+ # Run interactive configuration
12
+ octopize-avatar-deploy --output-dir /app/avatar
13
+
14
+ # Deploy
15
+ cd /app/avatar
16
+ docker compose down --volumes --remove-orphans # Clean old containers if redeploying
17
+ docker compose up -d
18
+ ```
19
+
20
+ ## Usage Options
21
+
22
+ ### Interactive Mode (Default)
23
+
24
+ ```bash
25
+ octopize-avatar-deploy --output-dir /app/avatar
26
+ ```
27
+
28
+ ### Non-Interactive Mode
29
+
30
+ ```bash
31
+ # Create config file
32
+ cat > config.yaml << EOF
33
+ PUBLIC_URL: avatar.example.com
34
+ ENV_NAME: prod
35
+ ORGANIZATION_NAME: MyCompany
36
+ EOF
37
+
38
+ # Run with config
39
+ octopize-avatar-deploy --output-dir /app/avatar --config config.yaml --non-interactive
40
+ ```
41
+
42
+ ## Command Line Options
43
+
44
+ ```
45
+ --output-dir DIR Output directory (default: current directory)
46
+ --config FILE YAML configuration file
47
+ --non-interactive Non-interactive mode (requires config file)
48
+ --template-from PATH Use local templates instead of downloading from GitHub
49
+ --save-config Save configuration to deployment-config.yaml
50
+ --verbose Show detailed output
51
+ ```
52
+
53
+ ## What Gets Generated
54
+
55
+ ```
56
+ /app/avatar/
57
+ ├── .env # Environment configuration
58
+ ├── docker-compose.yml # Docker services
59
+ ├── nginx/nginx.conf # Nginx config
60
+ ├── authentik/
61
+ │ ├── octopize-avatar-blueprint.yaml
62
+ │ ├── custom-templates/ # Email templates
63
+ │ └── branding/ # Logo, favicon, background
64
+ └── .secrets/ # Generated secrets (22 files)
65
+ ```
66
+
67
+ ## Deployment Steps
68
+
69
+ 1. **Generate configuration:**
70
+
71
+ ```bash
72
+ octopize-avatar-deploy --output-dir /app/avatar
73
+ ```
74
+
75
+ 2. **Review generated files:**
76
+
77
+ ```bash
78
+ cd /app/avatar
79
+ cat .env
80
+ ls -la .secrets/
81
+ ```
82
+
83
+ 3. **Add TLS certificates (production):**
84
+
85
+ ```bash
86
+ mkdir -p tls
87
+ cp /path/to/fullchain.pem tls/
88
+ cp /path/to/privkey.pem tls/
89
+ ```
90
+
91
+ 4. **Start services:**
92
+
93
+ ```bash
94
+ docker compose down --volumes --remove-orphans
95
+ docker compose up -d
96
+ ```
97
+
98
+ 5. **Verify deployment:**
99
+
100
+ ```bash
101
+ docker compose ps
102
+ docker compose logs -f
103
+ curl https://avatar.example.com/api/health
104
+ ```
105
+
106
+ ## Troubleshooting
107
+
108
+ ### "bind source path does not exist" error
109
+
110
+ Old containers from previous deployment. Solution:
111
+
112
+ ```bash
113
+ docker compose down --volumes --remove-orphans
114
+ docker compose up -d
115
+ ```
116
+
117
+ ### Templates not downloading
118
+
119
+ ```bash
120
+ rm -rf .avatar-templates/
121
+ octopize-avatar-deploy --output-dir /app/avatar --verbose
122
+ ```
123
+
124
+ ## Development
125
+
126
+ ```bash
127
+ # Clone
128
+ git clone https://github.com/octopize/avatar-deployment
129
+ cd avatar-deployment/deployment-tool
130
+
131
+ # Install dependencies
132
+ just install
133
+
134
+ # Run tests
135
+ just test-all
136
+
137
+ # Run locally
138
+ just run-interactive-local
139
+ ```
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "octopize.deploy_tool"
7
- version = "0.1.0"
7
+ version = "0.3.0"
8
8
  description = "Deployment configuration tool for Octopize Avatar platform"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -38,7 +38,7 @@ dev = [
38
38
  ]
39
39
 
40
40
  [project.scripts]
41
- octopize-avatar-deploy = "octopize_avatar_deploy.configure:main"
41
+ octopize-deploy-tool = "octopize_avatar_deploy.configure:main"
42
42
 
43
43
  [project.urls]
44
44
  Homepage = "https://octopize.io"
@@ -30,6 +30,8 @@ import yaml
30
30
  from jinja2 import Environment, FileSystemLoader
31
31
 
32
32
  from octopize_avatar_deploy.download_templates import (
33
+ REQUIRED_DOCKER_FILES,
34
+ REQUIRED_TEMPLATE_FILES,
33
35
  LocalTemplateProvider,
34
36
  download_templates,
35
37
  )
@@ -187,7 +189,9 @@ class DeploymentConfigurator:
187
189
 
188
190
  output_path = self.output_dir / output_name
189
191
  output_path.parent.mkdir(parents=True, exist_ok=True)
190
- output_path.write_text(rendered)
192
+ # Ensure trailing newline for pre-commit end-of-file-fixer
193
+ content = rendered if rendered.endswith("\n") else rendered + "\n"
194
+ output_path.write_text(content)
191
195
 
192
196
  self.printer.print_success(f"Generated: {output_path}")
193
197
  except Exception as e:
@@ -215,13 +219,32 @@ class DeploymentConfigurator:
215
219
  "authentik/octopize-avatar-blueprint.yaml",
216
220
  )
217
221
 
218
- # Copy docker-compose.yml from templates (it may be templated in the future)
222
+ # Copy docker-compose.yml from templates
219
223
  docker_compose_src = self.templates_dir / "docker-compose.yml"
220
224
  docker_compose_dst = self.output_dir / "docker-compose.yml"
221
225
  if docker_compose_src.exists():
222
226
  shutil.copy2(docker_compose_src, docker_compose_dst)
223
227
  self.printer.print_success(f"Generated: {docker_compose_dst}")
224
228
 
229
+ # Copy authentik custom templates (email templates)
230
+ custom_templates_src = self.templates_dir / "authentik" / "custom-templates"
231
+ custom_templates_dst = self.output_dir / "authentik" / "custom-templates"
232
+ if custom_templates_src.exists():
233
+ custom_templates_dst.mkdir(parents=True, exist_ok=True)
234
+ for template_file in custom_templates_src.glob("*.html"):
235
+ shutil.copy2(template_file, custom_templates_dst / template_file.name)
236
+ self.printer.print_success(f"Copied: email templates to {custom_templates_dst}")
237
+
238
+ # Copy authentik branding files
239
+ branding_src = self.templates_dir / "authentik" / "branding"
240
+ branding_dst = self.output_dir / "authentik" / "branding"
241
+ if branding_src.exists():
242
+ branding_dst.mkdir(parents=True, exist_ok=True)
243
+ for branding_file in branding_src.glob("*"):
244
+ if branding_file.is_file():
245
+ shutil.copy2(branding_file, branding_dst / branding_file.name)
246
+ self.printer.print_success(f"Copied: branding files to {branding_dst}")
247
+
225
248
  self.printer.print()
226
249
  self.printer.print_success("Configuration files generated successfully!")
227
250
 
@@ -263,7 +286,7 @@ class DeploymentConfigurator:
263
286
  # Check for existing state and prompt to resume or restart
264
287
  if self.state and self.state.has_started() and not self.state.is_complete():
265
288
  if interactive:
266
- self.state.print_status()
289
+ self.state.print_status(self.printer)
267
290
  self.printer.print_header("")
268
291
  response = self.input_gatherer.prompt_yes_no(
269
292
  "Resume from where you left off?", default=True
@@ -481,16 +504,19 @@ class DeploymentRunner:
481
504
  Returns:
482
505
  True if templates are available, False otherwise
483
506
  """
484
- from octopize_avatar_deploy.download_templates import REQUIRED_FILES
485
-
486
507
  if not self.templates_dir.exists():
487
508
  if self.verbose:
488
509
  self.printer.print_error(f"Templates directory not found: {self.templates_dir}")
489
510
  return False
490
511
 
491
- # Check for required files
512
+ # Check for required template files
492
513
  missing_files = []
493
- for filename in REQUIRED_FILES:
514
+ for filename in REQUIRED_TEMPLATE_FILES:
515
+ if not (self.templates_dir / filename).exists():
516
+ missing_files.append(filename)
517
+
518
+ # Check for required docker files
519
+ for filename in REQUIRED_DOCKER_FILES:
494
520
  if not (self.templates_dir / filename).exists():
495
521
  missing_files.append(filename)
496
522
 
@@ -501,8 +527,9 @@ class DeploymentRunner:
501
527
  )
502
528
  return False
503
529
 
530
+ total_files = len(REQUIRED_TEMPLATE_FILES) + len(REQUIRED_DOCKER_FILES)
504
531
  if self.verbose:
505
- self.printer.print_success(f"Found all {len(REQUIRED_FILES)} required template files")
532
+ self.printer.print_success(f"Found all {total_files} required template files")
506
533
 
507
534
  # Validate template version compatibility
508
535
  return self._validate_template_version()
@@ -0,0 +1,47 @@
1
+ version: 1.0.0
2
+ images:
3
+ api: 2.47.0
4
+ web: 0.52.0
5
+ pdfgenerator: 0.2.3
6
+ seaweedfs: 0.4.0
7
+ authentik: 2025.12.3
8
+ email:
9
+ provider: aws
10
+ smtp:
11
+ host: email-smtp.eu-west-3.amazonaws.com
12
+ port: '587'
13
+ use_tls: 'true'
14
+ start_tls: 'false'
15
+ verify: 'true'
16
+ sender_email: noreply@octopize.io
17
+ telemetry:
18
+ enabled: true
19
+ endpoint_url: https://s3.fr-par.scw.cloud
20
+ region: fr-par
21
+ application:
22
+ use_console_logging: 'false'
23
+ log_level: INFO
24
+ sentry_enabled: 'true'
25
+ email_authentication: 'true'
26
+ presets:
27
+ default:
28
+ description: Production-ready configuration with telemetry and monitoring
29
+ application:
30
+ use_console_logging: 'false'
31
+ sentry_enabled: 'true'
32
+ telemetry:
33
+ enabled: true
34
+ dev-mode:
35
+ description: Development mode with console logging, no external services
36
+ application:
37
+ use_console_logging: 'true'
38
+ sentry_enabled: 'false'
39
+ telemetry:
40
+ enabled: false
41
+ airgapped:
42
+ description: Air-gapped deployment without external monitoring or telemetry
43
+ application:
44
+ use_console_logging: 'false'
45
+ sentry_enabled: 'false'
46
+ telemetry:
47
+ enabled: false