Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ansibleguy/webui
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.0.8
Choose a base ref
...
head repository: ansibleguy/webui
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: latest
Choose a head ref
Loading
Showing with 13,853 additions and 3,112 deletions.
  1. +0 −2 .github/FUNDING.yml
  2. +2 −1 .github/ISSUE_TEMPLATE/features.yml
  3. +6 −5 .github/ISSUE_TEMPLATE/problem.yml
  4. +4 −2 .github/workflows/lint.yml
  5. +8 −3 .github/workflows/release.yml
  6. +38 −12 .github/workflows/test.yml
  7. +5 −2 .gitignore
  8. +8 −5 .pylintrc
  9. +167 −0 CHANGELOG.md
  10. +97 −9 CONTRIBUTE.md
  11. +1 −1 MANIFEST.in
  12. +47 −17 README.md
  13. +18 −0 SECURITY.md
  14. +3 −0 docker/.gitignore
  15. +3 −3 docker/Dockerfile_dev
  16. +3 −3 docker/Dockerfile_production
  17. +41 −0 docker/Dockerfile_production_aws
  18. +33 −0 docker/Dockerfile_production_unprivileged
  19. +4 −4 docker/Dockerfile_unstable
  20. +32 −0 docker/Dockerfile_unstable_unprivileged
  21. +117 −0 docker/GNUmakefile
  22. +2 −2 docker/entrypoint_dev.sh
  23. +1 −1 docker/entrypoint_production.sh
  24. +2 −2 docker/entrypoint_unstable.sh
  25. +27 −7 docker/requirements.sh
  26. +76 −0 docs/html_infra.sh
  27. +27 −0 docs/meta/robots.txt
  28. +23 −0 docs/meta/sitemap.xml
  29. +1 −1 docs/requirements.txt
  30. +7 −1 docs/source/_include/head.rst
  31. +2 −2 docs/source/_static/css/main.css
  32. BIN docs/source/_static/img/alert_email.png
  33. BIN docs/source/_static/img/config_admin.png
  34. BIN docs/source/_static/img/config_jobs.png
  35. BIN docs/source/_static/img/job_execution.png
  36. BIN docs/source/_static/img/job_prompts_1.png
  37. BIN docs/source/_static/img/job_prompts_2.png
  38. +13 −0 docs/source/_static/img/logo.svg
  39. BIN docs/source/_static/img/repo_ui.png
  40. +1 −0 docs/source/_static/img/troubleshoot_system_overview.svg
  41. +13 −8 docs/source/conf.py
  42. +4 −6 docs/source/usage/1_intro.rst
  43. +19 −110 docs/source/usage/2_install.rst
  44. +0 −144 docs/source/usage/3_config.rst
  45. +63 −0 docs/source/usage/3_run.rst
  46. +295 −0 docs/source/usage/4_config.rst
  47. +153 −0 docs/source/usage/alerts.rst
  48. +2 −4 docs/source/usage/api.rst
  49. +94 −0 docs/source/usage/authentication.rst
  50. +0 −2 docs/source/usage/backup.rst
  51. +6 −4 docs/source/usage/credentials.rst
  52. +36 −5 docs/source/usage/development.rst
  53. +71 −0 docs/source/usage/docker.rst
  54. +31 −0 docs/source/usage/integrations.rst
  55. +55 −0 docs/source/usage/jobs.rst
  56. +25 −6 docs/source/usage/privileges.rst
  57. +97 −0 docs/source/usage/repositories.rst
  58. +54 −18 docs/source/usage/security.rst
  59. +332 −8 docs/source/usage/troubleshooting.rst
  60. +12 −0 docs/venv.sh
  61. +13 −0 {config → examples}/nginx.conf
  62. +46 −0 examples/saml_google_workspace.yml
  63. +57 −0 examples/systemd_service.conf
  64. +8 −8 pyproject.toml
  65. +13 −3 requirements.txt
  66. +1 −0 requirements_test.txt
  67. +1 −0 scripts/build.sh
  68. +91 −0 scripts/docker_build.sh
  69. +54 −0 scripts/docker_release.sh
  70. +1 −1 scripts/kill_ps.sh
  71. +4 −1 scripts/lint.sh
  72. +1 −1 scripts/migrate_db.sh
  73. +2 −2 scripts/run_pip_build.sh
  74. +4 −3 scripts/run_shared.sh
  75. +82 −8 scripts/test.sh
  76. +1 −0 scripts/update_version.sh
  77. +0 −53 src/ansible-webui/aw/api_endpoints/base.py
  78. +0 −76 src/ansible-webui/aw/api_endpoints/filesystem.py
  79. +0 −6 src/ansible-webui/aw/apps.py
  80. +0 −98 src/ansible-webui/aw/config/environment.py
  81. +0 −74 src/ansible-webui/aw/config/form_metadata.py
  82. +0 −12 src/ansible-webui/aw/config/hardcoded.py
  83. +0 −56 src/ansible-webui/aw/config/main.py
  84. +0 −306 src/ansible-webui/aw/execute/play_util.py
  85. +0 −19 src/ansible-webui/aw/execute/queue.py
  86. +0 −22 src/ansible-webui/aw/model/base.py
  87. +0 −11 src/ansible-webui/aw/static/img/ansible.svg
  88. +0 −131 src/ansible-webui/aw/static/js/jobs/logs.js
  89. +0 −70 src/ansible-webui/aw/static/js/jobs/manage.js
  90. +0 −1 src/ansible-webui/aw/templates/button/icon/stop.html
  91. +0 −30 src/ansible-webui/aw/templates/head.html
  92. +0 −44 src/ansible-webui/aw/templates/jobs/logs.html
  93. +0 −77 src/ansible-webui/aw/templates/jobs/manage.html
  94. +0 −27 src/ansible-webui/aw/templates/jobs/manage_job_executions.html
  95. +0 −44 src/ansible-webui/aw/templates/registration/login.html
  96. +0 −98 src/ansible-webui/aw/templatetags/util.py
  97. +0 −28 src/ansible-webui/aw/urls.py
  98. +0 −13 src/ansible-webui/aw/utils/deployment.py
  99. +0 −90 src/ansible-webui/aw/utils/permission.py
  100. +0 −29 src/ansible-webui/aw/utils/subps.py
  101. +0 −124 src/ansible-webui/aw/utils/util.py
  102. +0 −8 src/ansible-webui/aw/utils/util_no_config.py
  103. +0 −86 src/ansible-webui/aw/views/settings.py
  104. +0 −138 src/ansible-webui/aw/views/system.py
  105. +0 −57 src/ansible-webui/cli.py
  106. +0 −127 src/ansible-webui/db.py
  107. +0 −49 src/ansible-webui/main.py
  108. +0 −17 src/ansible-webui/manage.py
  109. 0 src/{ansible-webui → ansibleguy-webui}/__init__.py
  110. +12 −5 src/{ansible-webui → ansibleguy-webui}/__main__.py
  111. 0 src/{ansible-webui → ansibleguy-webui}/aw/__init__.py
  112. +23 −1 src/{ansible-webui → ansibleguy-webui}/aw/admin.py
  113. +20 −2 src/{ansible-webui → ansibleguy-webui}/aw/api.py
  114. 0 src/{ansible-webui → ansibleguy-webui}/aw/api_endpoints/__init__.py
  115. +689 −0 src/ansibleguy-webui/aw/api_endpoints/alert.py
  116. +106 −0 src/ansibleguy-webui/aw/api_endpoints/base.py
  117. +81 −40 src/{ansible-webui → ansibleguy-webui}/aw/api_endpoints/credentials.py
  118. +155 −0 src/ansibleguy-webui/aw/api_endpoints/filesystem.py
  119. +82 −40 src/{ansible-webui → ansibleguy-webui}/aw/api_endpoints/job.py
  120. +47 −27 src/{ansible-webui → ansibleguy-webui}/aw/api_endpoints/job_util.py
  121. 0 src/{ansible-webui → ansibleguy-webui}/aw/api_endpoints/key.py
  122. +59 −32 src/{ansible-webui → ansibleguy-webui}/aw/api_endpoints/permission.py
  123. +349 −0 src/ansibleguy-webui/aw/api_endpoints/repository.py
  124. +121 −0 src/ansibleguy-webui/aw/api_endpoints/system.py
  125. +21 −0 src/ansibleguy-webui/aw/apps.py
  126. 0 src/{ansible-webui → ansibleguy-webui}/aw/base.py
  127. 0 src/{ansible-webui → ansibleguy-webui}/aw/config/__init__.py
  128. +59 −0 src/ansibleguy-webui/aw/config/defaults.py
  129. +76 −0 src/ansibleguy-webui/aw/config/environment.py
  130. +214 −0 src/ansibleguy-webui/aw/config/form_metadata.py
  131. +25 −0 src/ansibleguy-webui/aw/config/hardcoded.py
  132. +100 −0 src/ansibleguy-webui/aw/config/main.py
  133. +12 −9 src/{ansible-webui → ansibleguy-webui}/aw/config/navigation.py
  134. +3 −0 src/ansibleguy-webui/aw/db_sqlite_patched/NOTE
  135. 0 src/{ansible-webui/aw/execute → ansibleguy-webui/aw/db_sqlite_patched}/__init__.py
  136. +2 −0 src/ansibleguy-webui/aw/db_sqlite_patched/_functions.py
  137. +10 −0 src/ansibleguy-webui/aw/db_sqlite_patched/base.py
  138. +2 −0 src/ansibleguy-webui/aw/db_sqlite_patched/client.py
  139. +2 −0 src/ansibleguy-webui/aw/db_sqlite_patched/creation.py
  140. +2 −0 src/ansibleguy-webui/aw/db_sqlite_patched/features.py
  141. +2 −0 src/ansibleguy-webui/aw/db_sqlite_patched/introspection.py
  142. +2 −0 src/ansibleguy-webui/aw/db_sqlite_patched/operations.py
  143. +2 −0 src/ansibleguy-webui/aw/db_sqlite_patched/schema.py
  144. 0 src/{ansible-webui/aw/migrations → ansibleguy-webui/aw/execute}/__init__.py
  145. +98 −0 src/ansibleguy-webui/aw/execute/alert.py
  146. +90 −0 src/ansibleguy-webui/aw/execute/alert_plugin/plugin_email.py
  147. +120 −0 src/ansibleguy-webui/aw/execute/alert_plugin/plugin_wrapper.py
  148. +22 −16 src/{ansible-webui → ansibleguy-webui}/aw/execute/play.py
  149. +110 −0 src/ansibleguy-webui/aw/execute/play_credentials.py
  150. +293 −0 src/ansibleguy-webui/aw/execute/play_util.py
  151. +17 −0 src/ansibleguy-webui/aw/execute/queue.py
  152. +259 −0 src/ansibleguy-webui/aw/execute/repository.py
  153. +31 −61 src/{ansible-webui → ansibleguy-webui}/aw/execute/scheduler.py
  154. +37 −6 src/{ansible-webui → ansibleguy-webui}/aw/execute/threader.py
  155. +32 −27 src/{ansible-webui → ansibleguy-webui}/aw/execute/util.py
  156. 0 src/{ansible-webui → ansibleguy-webui}/aw/main.py
  157. +1,127 −0 src/ansibleguy-webui/aw/migrations/0001_v0_0_12.py
  158. +50 −0 src/ansibleguy-webui/aw/migrations/0002_v0_0_13.py
  159. +38 −0 src/ansibleguy-webui/aw/migrations/0003_v0_0_14.py
  160. +17 −0 src/ansibleguy-webui/aw/migrations/0004_v0_0_15.py
  161. +19 −0 src/ansibleguy-webui/aw/migrations/0005_v0_0_18.py
  162. +434 −0 src/ansibleguy-webui/aw/migrations/0006_v0_0_19.py
  163. +47 −0 src/ansibleguy-webui/aw/migrations/0007_v0_0_21.py
  164. +28 −0 src/ansibleguy-webui/aw/migrations/0008_v0_0_22.py
  165. +20 −0 src/ansibleguy-webui/aw/migrations/0009_v0_0_24.py
  166. +73 −0 src/ansibleguy-webui/aw/migrations/0010_v0_0_25.py
  167. 0 src/{ansible-webui/aw/model → ansibleguy-webui/aw/migrations}/__init__.py
  168. 0 src/{ansible-webui/aw/templatetags → ansibleguy-webui/aw/model}/__init__.py
  169. +187 −0 src/ansibleguy-webui/aw/model/alert.py
  170. 0 src/{ansible-webui → ansibleguy-webui}/aw/model/api.py
  171. +45 −0 src/ansibleguy-webui/aw/model/base.py
  172. +117 −37 src/{ansible-webui → ansibleguy-webui}/aw/model/job.py
  173. +12 −18 src/{ansible-webui → ansibleguy-webui}/aw/model/job_credential.py
  174. +41 −8 src/{ansible-webui/aw/model/job_permission.py → ansibleguy-webui/aw/model/permission.py}
  175. +109 −0 src/ansibleguy-webui/aw/model/repository.py
  176. +134 −0 src/ansibleguy-webui/aw/model/system.py
  177. +159 −51 src/{ansible-webui → ansibleguy-webui}/aw/settings.py
  178. +154 −23 src/{ansible-webui → ansibleguy-webui}/aw/static/css/aw.css
  179. +10 −15 src/{ansible-webui → ansibleguy-webui}/aw/static/css/aw_mobile.css
  180. +13 −0 src/ansibleguy-webui/aw/static/img/logo.svg
  181. +211 −68 src/{ansible-webui → ansibleguy-webui}/aw/static/js/aw.js
  182. 0 src/{ansible-webui → ansibleguy-webui}/aw/static/js/aw_nav.js
  183. +3 −3 src/{ansible-webui → ansibleguy-webui}/aw/static/js/jobs/credentials.js
  184. +465 −0 src/ansibleguy-webui/aw/static/js/jobs/edit.js
  185. +162 −0 src/ansibleguy-webui/aw/static/js/jobs/logs.js
  186. +225 −0 src/ansibleguy-webui/aw/static/js/jobs/manage.js
  187. +46 −0 src/ansibleguy-webui/aw/static/js/jobs/repository.js
  188. +55 −0 src/ansibleguy-webui/aw/static/js/login.js
  189. +88 −0 src/ansibleguy-webui/aw/static/js/settings/alert.js
  190. +1 −1 src/{ansible-webui → ansibleguy-webui}/aw/static/js/settings/api_key.js
  191. 0 src/{ansible-webui → ansibleguy-webui}/aw/static/js/settings/environment.js
  192. +20 −9 src/{ansible-webui → ansibleguy-webui}/aw/static/js/settings/permission.js
  193. +6 −0 src/ansibleguy-webui/aw/static/vendor/css/bootstrap.min.css
  194. +7 −0 src/ansibleguy-webui/aw/static/vendor/js/bootstrap.min.js
  195. +2 −0 src/ansibleguy-webui/aw/static/vendor/js/jquery.min.js
  196. +6 −0 src/ansibleguy-webui/aw/static/vendor/js/popper.min.js
  197. +4 −0 src/ansibleguy-webui/aw/static/vendor/versions.txt
  198. +1 −1 src/{ansible-webui → ansibleguy-webui}/aw/templates/body.html
  199. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/autoRefresh.html
  200. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/icon/add.html
  201. +1 −0 src/ansibleguy-webui/aw/templates/button/icon/add_dir.html
  202. +1 −0 src/ansibleguy-webui/aw/templates/button/icon/add_git.html
  203. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/icon/collapse.html
  204. +1 −0 src/ansibleguy-webui/aw/templates/button/icon/copy.html
  205. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/icon/delete.html
  206. +1 −0 src/ansibleguy-webui/aw/templates/button/icon/download.html
  207. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/icon/edit.html
  208. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/icon/expand.html
  209. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/icon/return.html
  210. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/icon/run.html
  211. +3 −0 src/ansibleguy-webui/aw/templates/button/icon/sort.html
  212. +1 −0 src/ansibleguy-webui/aw/templates/button/icon/stop.html
  213. +1 −0 src/ansibleguy-webui/aw/templates/button/icon/toggle_off.html
  214. +1 −0 src/ansibleguy-webui/aw/templates/button/icon/toggle_on.html
  215. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/button/refresh.html
  216. +8 −0 src/ansibleguy-webui/aw/templates/django_saml2_auth/denied.html
  217. +11 −0 src/ansibleguy-webui/aw/templates/django_saml2_auth/error.html
  218. +8 −0 src/ansibleguy-webui/aw/templates/django_saml2_auth/signout.html
  219. +106 −0 src/ansibleguy-webui/aw/templates/email/alert.html
  220. +25 −0 src/ansibleguy-webui/aw/templates/email/alert.txt
  221. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/error/403.html
  222. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/error/500.html
  223. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/error/js_disabled.html
  224. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/fallback.html
  225. +1 −1 src/{ansible-webui → ansibleguy-webui}/aw/templates/forms/base.html
  226. +186 −0 src/ansibleguy-webui/aw/templates/forms/job.html
  227. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/forms/snippet.html
  228. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/forms/snippet_test.html
  229. +37 −0 src/ansibleguy-webui/aw/templates/head.html
  230. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/jobs/credentials.html
  231. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/jobs/credentials_edit.html
  232. +79 −0 src/ansibleguy-webui/aw/templates/jobs/edit.html
  233. +80 −0 src/ansibleguy-webui/aw/templates/jobs/logs.html
  234. +132 −0 src/ansibleguy-webui/aw/templates/jobs/manage.html
  235. +62 −0 src/ansibleguy-webui/aw/templates/jobs/repository.html
  236. +25 −0 src/ansibleguy-webui/aw/templates/jobs/repository_edit.html
  237. +13 −4 src/{ansible-webui → ansibleguy-webui}/aw/templates/nav.html
  238. +58 −0 src/ansibleguy-webui/aw/templates/registration/login.html
  239. +22 −0 src/ansibleguy-webui/aw/templates/registration/password_change_done.html
  240. +61 −0 src/ansibleguy-webui/aw/templates/registration/password_change_form.html
  241. +6 −0 src/ansibleguy-webui/aw/templates/registration/remember_user.html
  242. +51 −0 src/ansibleguy-webui/aw/templates/registration/saml.html
  243. +1 −1 src/{ansible-webui → ansibleguy-webui}/aw/templates/rest_framework/api.html
  244. +143 −0 src/ansibleguy-webui/aw/templates/settings/alert.html
  245. +2 −2 ...sible-webui/aw/templates/jobs/edit.html → ansibleguy-webui/aw/templates/settings/alert_edit.html}
  246. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/settings/api_key.html
  247. +2 −0 src/{ansible-webui → ansibleguy-webui}/aw/templates/settings/permission.html
  248. 0 src/{ansible-webui → ansibleguy-webui}/aw/templates/settings/permission_edit.html
  249. +27 −0 src/ansibleguy-webui/aw/templates/system/config.html
  250. +42 −4 src/{ansible-webui → ansibleguy-webui}/aw/templates/system/environment.html
  251. 0 src/{ansible-webui/aw/utils → ansibleguy-webui/aw/templatetags}/__init__.py
  252. +73 −35 src/{ansible-webui → ansibleguy-webui}/aw/templatetags/form_util.py
  253. +186 −0 src/ansibleguy-webui/aw/templatetags/util.py
  254. +47 −0 src/ansibleguy-webui/aw/urls.py
  255. 0 src/{ansible-webui/aw/views → ansibleguy-webui/aw/utils}/__init__.py
  256. 0 src/{ansible-webui → ansibleguy-webui}/aw/utils/crypto.py
  257. +4 −3 src/{ansible-webui → ansibleguy-webui}/aw/utils/debug.py
  258. +25 −0 src/ansibleguy-webui/aw/utils/deployment.py
  259. +4 −0 src/{ansible-webui → ansibleguy-webui}/aw/utils/handlers.py
  260. +14 −0 src/{ansible-webui → ansibleguy-webui}/aw/utils/http.py
  261. +145 −0 src/ansibleguy-webui/aw/utils/permission.py
  262. +61 −0 src/ansibleguy-webui/aw/utils/subps.py
  263. +260 −0 src/ansibleguy-webui/aw/utils/util.py
  264. +19 −0 src/ansibleguy-webui/aw/utils/util_no_config.py
  265. 0 src/{ansible-webui → ansibleguy-webui}/aw/utils/util_test.py
  266. +105 −0 src/ansibleguy-webui/aw/utils/version.py
  267. 0 src/ansibleguy-webui/aw/views/__init__.py
  268. +6 −0 src/{ansible-webui → ansibleguy-webui}/aw/views/base.py
  269. +30 −0 src/ansibleguy-webui/aw/views/forms/auth.py
  270. +118 −76 src/{ansible-webui/aw/views → ansibleguy-webui/aw/views/forms}/job.py
  271. +271 −0 src/ansibleguy-webui/aw/views/forms/settings.py
  272. +80 −0 src/ansibleguy-webui/aw/views/forms/system.py
  273. +90 −0 src/ansibleguy-webui/aw/views/job.py
  274. +5 −5 src/{ansible-webui → ansibleguy-webui}/aw/views/main.py
  275. +37 −0 src/ansibleguy-webui/aw/views/settings.py
  276. +133 −0 src/ansibleguy-webui/aw/views/system.py
  277. +7 −0 src/ansibleguy-webui/aw/views/validation.py
  278. +87 −0 src/ansibleguy-webui/cli.py
  279. +10 −4 src/{ansible-webui → ansibleguy-webui}/cli_init.py
  280. +229 −0 src/ansibleguy-webui/db.py
  281. +46 −0 src/ansibleguy-webui/handle_signals.py
  282. +108 −0 src/ansibleguy-webui/main.py
  283. +25 −0 src/ansibleguy-webui/manage.py
  284. 0 src/{ansible-webui → ansibleguy-webui}/web_serve_static.py
  285. +30 −6 src/{ansible-webui → ansibleguy-webui}/webserver.py
  286. +22 −14 test/demo/reset.sh
  287. +41 −0 test/demo/web-service.yml
  288. +110 −4 test/integration/api/main.py
  289. +79 −0 test/integration/auth/saml.py
  290. +46 −0 test/integration/auth/saml.yml
  291. +9 −0 test/integration/config.yml
  292. +9 −4 test/integration/webui/main.py
  293. +1 −1 test/roles/test1/tasks/main.yml
2 changes: 0 additions & 2 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
---

github: ansibleguy
3 changes: 2 additions & 1 deletion .github/ISSUE_TEMPLATE/features.yml
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ body:
Please make sure to go through these steps **before opening an issue**:
- [ ] Read the documentation to make sure the feature does not yet exist:
[Docs](https://ansible-webui.readthedocs.io/)
[Docs](https://webui.ansibleguy.net/)
- [ ] Make sure the feature is in-scope. We cannot extend the basic functionality of Ansible itself:
[Ansible Docs](https://docs.ansible.com/ansible/2.8/user_guide/playbooks_best_practices.html#directory-layout)
@@ -31,6 +31,7 @@ body:
- Ansible (Job Execution)
- Backend (API)
- Service (Job Scheduling, Job Preparation)
- Database
default: 0
validations:
required: true
11 changes: 6 additions & 5 deletions .github/ISSUE_TEMPLATE/problem.yml
Original file line number Diff line number Diff line change
@@ -11,12 +11,12 @@ body:
value: |
Please make sure to go through these steps **before opening an issue**:
- [ ] Read the documentation: [Docs](https://ansible-webui.readthedocs.io/)
- [ ] Read the documentation: [Docs](https://webui.ansibleguy.net/)
- [ ] Read the troubleshooting info: [Troubleshooting](https://ansible-webui.readthedocs.io/en/latest/usage/troubleshooting.html)
- [ ] Read the troubleshooting info: [Troubleshooting](https://webui.ansibleguy.net/usage/troubleshooting.html)
- [ ] Check if there are existing [issues](https://github.com/ansibleguy/ansible-webui/issues)
or [discussions](https://github.com/ansibleguy/ansible-webui/discussions) regarding your topic
- [ ] Check if there are existing [issues](https://github.com/ansibleguy/webui/issues)
or [discussions](https://github.com/ansibleguy/webui/discussions) regarding your topic
- type: textarea
id: versions
@@ -25,7 +25,7 @@ body:
description: |
Provide your system versions.
You can find it at `System - Environment`
Copy & paste all versions in the `System version` table.
Click the copy-button below the `System version` table and paste them here.
validations:
required: true

@@ -40,6 +40,7 @@ body:
- Ansible (Job Execution)
- Backend (API)
- Service (Job Scheduling, Job Preparation)
- Database
default: 0
validations:
required: true
6 changes: 4 additions & 2 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ jobs:
- name: Install python
uses: actions/setup-python@v4
with:
python-version: '3.10'
python-version: '3.11'

- name: Install dependencies
run: |
@@ -43,8 +43,10 @@ jobs:
- name: Running PyLint
run: |
export DJANGO_SETTINGS_MODULE='aw.settings'
export AW_INIT=1
pylint --version
pylint --recursive=y --load-plugins pylint_django --django-settings-module=aw.settings .
pylint --rcfile .pylintrc --recursive=y --load-plugins pylint_django --django-settings-module=aw.settings .
- name: Running YamlLint
run: |
11 changes: 8 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
---

name: Release on PyPI

on:
push:
tags:
@@ -23,7 +25,7 @@ jobs:
- name: Install python
uses: actions/setup-python@v4
with:
python-version: '3.10'
python-version: '3.11'

- name: Install dependencies
run: |
@@ -35,7 +37,7 @@ jobs:
run: |
cd /tmp
echo 'CREATING TMP VENV'
tmp_venv="/tmp/ansible-webui-venv/$(date +%s)"
tmp_venv="/tmp/aw-venv/$(date +%s)"
python3 -m virtualenv "$tmp_venv" >/dev/null
source "${tmp_venv}/bin/activate"
@@ -45,7 +47,7 @@ jobs:
set +e
echo 'RUNNING APP'
export AW_DB="/tmp/$(date +%s).aw.db"
timeout 20 python3 -m ansible-webui
timeout 20 python3 -m ansibleguy-webui
ec="$?"
echo 'CLEANUP'
@@ -63,6 +65,9 @@ jobs:

- name: Building
run: |
git reset --hard
git ls-files . --exclude-standard --others | grep 'migrations' | xargs --no-run-if-empty rm
echo "${{ steps.version.outputs.TAG_NAME }}" > VERSION
python3 -m build
50 changes: 38 additions & 12 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ on:
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 2
timeout-minutes: 3
defaults:
run:
shell: bash
@@ -33,7 +33,7 @@ jobs:
- name: Install python
uses: actions/setup-python@v4
with:
python-version: '3.10'
python-version: '3.11'

- name: Install dependencies
run: |
@@ -44,47 +44,54 @@ jobs:
- name: Testing DB migrations for errors (1/3)
run: |
export AW_DB="/tmp/$(date +%s).e1.aw.db"
rm -rf src/ansibleguy-webui/aw/migrations/*
python3 manage.py makemigrations
working-directory: src/ansible-webui/
working-directory: src/ansibleguy-webui/

- name: Testing DB migrations for warnings (1/3)
run: |
export AW_DB="/tmp/$(date +%s).w1.aw.db"
rm -rf src/ansibleguy-webui/aw/migrations/*
m1=$(python3 manage.py makemigrations 2>&1)
if echo "$m1" | grep -q 'WARNING'; then exit 1;fi
working-directory: src/ansible-webui/
working-directory: src/ansibleguy-webui/

- name: Testing DB migrations for errors (2/3)
run: |
export AW_DB="/tmp/$(date +%s).e2.aw.db"
rm -rf src/ansibleguy-webui/aw/migrations/*
python3 manage.py makemigrations aw
working-directory: src/ansible-webui/
working-directory: src/ansibleguy-webui/

- name: Testing DB migrations for warnings (2/3)
run: |
export AW_DB="/tmp/$(date +%s).w2.aw.db"
rm -rf src/ansibleguy-webui/aw/migrations/*
m2=$(python3 manage.py migrate aw 2>&1)
if echo "$m2" | grep -q 'WARNING'; then exit 1;fi
working-directory: src/ansible-webui/
working-directory: src/ansibleguy-webui/

- name: Testing DB migrations for errors (3/3)
run: |
export AW_DB="/tmp/$(date +%s).e3.aw.db"
rm -rf src/ansibleguy-webui/aw/migrations/*
python3 manage.py migrate
working-directory: src/ansible-webui/
working-directory: src/ansibleguy-webui/

- name: Testing DB migrations for warnings (3/3)
run: |
export AW_DB="/tmp/$(date +%s).w3.aw.db"
rm -rf src/ansibleguy-webui/aw/migrations/*
m3=$(python3 manage.py migrate 2>&1)
if echo "$m3" | grep -q 'WARNING'; then exit 1;fi
working-directory: src/ansible-webui/
working-directory: src/ansibleguy-webui/

- name: Testing to start Ansible-WebUI
run: |
set +e
export AW_DB="/tmp/$(date +%s).aw.db"
timeout 10 python3 src/ansible-webui
rm -rf src/ansibleguy-webui/aw/migrations/*
timeout 10 python3 src/ansibleguy-webui
ec="$?"
if [[ "$ec" != "124" ]]
then
@@ -102,7 +109,8 @@ jobs:
export AW_DB="/tmp/$(date +%s).aw.db"
export AW_ADMIN='tester'
export AW_ADMIN_PWD='someSecret!Pwd'
python3 src/ansible-webui/ >/dev/null 2>/dev/null &
rm -rf src/ansibleguy-webui/aw/migrations/*
python3 src/ansibleguy-webui/ >/dev/null 2>/dev/null &
sleep 5
echo 'WEB-UI INTEGRATION TESTS'
@@ -111,10 +119,28 @@ jobs:
echo 'API INTEGRATION TESTS'
echo 'Create API key'
api_key="$(python3 src/ansible-webui/cli.py -f api-key -a create -p "$AW_ADMIN" | grep 'Key=' | cut -d '=' -f2)"
api_key="$(python3 src/ansibleguy-webui/cli.py -a api-key.create -p "$AW_ADMIN" | grep 'Key=' | cut -d '=' -f2)"
export AW_API_KEY="$api_key"
sleep 1
python3 test/integration/api/main.py
sleep 1
pkill -f 'ansible-webui'
pkill -f 'ansibleguy-webui'
- name: Running Integration Tests - AUTH SAML
run: |
sleep 5
export AW_ENV='dev'
export AW_DB="/tmp/$(date +%s).aw.db"
export AW_ADMIN='tester'
export AW_ADMIN_PWD='someSecret!Pwd'
export AW_CONFIG="$(pwd)/test/integration/auth/saml.yml"
rm -rf src/ansibleguy-webui/aw/migrations/*
python3 src/ansibleguy-webui/ >/dev/null 2>/dev/null &
sleep 5
echo 'WEB-UI AUTH-SAML INTEGRATION TESTS'
python3 test/integration/auth/saml.py
sleep 1
pkill -f 'ansibleguy-webui'
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -4,5 +4,8 @@ venv/
ansible_webui.egg-info/
__pychache__.py
**/aw*.db
**/aw*.db.*bak
VERSION
**/aw*.db.*bak*
**/aw*.db-shm
**/aw*.db-wal
VERSION
docs/build/
13 changes: 8 additions & 5 deletions .pylintrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[MASTER]
init-hook='import sys; sys.path.append("src/ansible-webui/")'
init-hook='import sys; sys.path.append("src/ansibleguy-webui/")'

[MAIN]

@@ -56,7 +56,7 @@ ignore=CVS
# format. Because '\\' represents the directory delimiter on Windows systems,
# it can't be used as an escape character.
ignore-paths=venv/*,
src/ansible-webui/aw/migrations/*
src/ansibleguy-webui/aw/migrations/*

# Files or directories matching the regular expression patterns are skipped.
# The regex matches against base names, not paths. The default value ignores
@@ -92,7 +92,7 @@ persistent=yes

# Minimum Python version to use for version dependent checks. Will default to
# the version used to run pylint.
py-version=3.10
py-version=3.11

# Discover python modules and packages in the file system subtree.
recursive=no
@@ -292,14 +292,17 @@ ignored-parents=
# Maximum number of arguments for function / method.
max-args=7

# Maximum number of positional arguments for function / method.
max-positional-arguments=7

# Maximum number of attributes for a class (see R0902).
max-attributes=12

# Maximum number of boolean expressions in an if statement (see R0916).
max-bool-expr=5

# Maximum number of branch for function / method body.
max-branches=12
max-branches=14

# Maximum number of locals for function / method body.
max-locals=15
@@ -311,7 +314,7 @@ max-parents=7
max-public-methods=20

# Maximum number of return / yield for function / method body.
max-returns=6
max-returns=7

# Maximum number of statements in function / method body.
max-statements=50
Loading