From f217b9d27361542f4fb485f566dbbe2f108d2dc1 Mon Sep 17 00:00:00 2001 From: kirby Date: Fri, 31 Mar 2023 17:18:16 +0200 Subject: [PATCH 1/5] Reporting work on dockerization --- Dockerfile | 34 ++++++++++++++++++ {dashboard => app/dashboard}/__init__.py | 0 {dashboard => app/dashboard}/admin.py | 0 {dashboard => app/dashboard}/apps.py | 0 {dashboard => app/dashboard}/fixtures/os.yaml | 0 .../dashboard}/fixtures/teams.yaml | 0 {dashboard => app/dashboard}/forms.py | 0 {dashboard => app/dashboard}/models.py | 0 {dashboard => app/dashboard}/module.py | 0 .../dashboard}/static/css/bootstrap-rtl.css | 0 .../static/css/bootstrap-rtl.min.css | 0 .../dashboard}/static/css/bootstrap.css | 0 .../dashboard}/static/css/bootstrap.min.css | 0 .../dashboard}/static/css/custom.css | 0 .../dashboard}/static/css/datatables.min.css | 0 .../dashboard}/static/css/plugins/morris.css | 0 .../dashboard}/static/css/sb-admin-rtl.css | 0 .../dashboard}/static/css/sb-admin.css | 0 .../static/font-awesome/css/font-awesome.css | 0 .../font-awesome/css/font-awesome.min.css | 0 .../static/font-awesome/fonts/FontAwesome.otf | Bin .../fonts/fontawesome-webfont.eot | Bin .../fonts/fontawesome-webfont.svg | 0 .../fonts/fontawesome-webfont.ttf | Bin .../fonts/fontawesome-webfont.woff | Bin .../font-awesome/less/bordered-pulled.less | 0 .../static/font-awesome/less/core.less | 0 .../static/font-awesome/less/fixed-width.less | 0 .../font-awesome/less/font-awesome.less | 0 .../static/font-awesome/less/icons.less | 0 .../static/font-awesome/less/larger.less | 0 .../static/font-awesome/less/list.less | 0 .../static/font-awesome/less/mixins.less | 0 .../static/font-awesome/less/path.less | 0 .../font-awesome/less/rotated-flipped.less | 0 .../static/font-awesome/less/spinning.less | 0 .../static/font-awesome/less/stacked.less | 0 .../static/font-awesome/less/variables.less | 0 .../font-awesome/scss/_bordered-pulled.scss | 0 .../static/font-awesome/scss/_core.scss | 0 .../font-awesome/scss/_fixed-width.scss | 0 .../static/font-awesome/scss/_icons.scss | 0 .../static/font-awesome/scss/_larger.scss | 0 .../static/font-awesome/scss/_list.scss | 0 .../static/font-awesome/scss/_mixins.scss | 0 .../static/font-awesome/scss/_path.scss | 0 .../font-awesome/scss/_rotated-flipped.scss | 0 .../static/font-awesome/scss/_spinning.scss | 0 .../static/font-awesome/scss/_stacked.scss | 0 .../static/font-awesome/scss/_variables.scss | 0 .../font-awesome/scss/font-awesome.scss | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../dashboard}/static/images/favicon.ico | Bin .../dashboard}/static/js/bootstrap.js | 0 .../dashboard}/static/js/bootstrap.min.js | 0 .../dashboard}/static/js/datatables.min.js | 0 .../dashboard}/static/js/html-to-csv.js | 0 .../dashboard}/static/js/jquery.js | 0 .../static/js/plugins/flot/excanvas.min.js | 0 .../static/js/plugins/flot/flot-data.js | 0 .../static/js/plugins/flot/jquery.flot.js | 0 .../static/js/plugins/flot/jquery.flot.pie.js | 0 .../js/plugins/flot/jquery.flot.resize.js | 0 .../plugins/flot/jquery.flot.tooltip.min.js | 0 .../static/js/plugins/morris/morris-data.js | 0 .../static/js/plugins/morris/morris.js | 0 .../static/js/plugins/morris/morris.min.js | 0 .../static/js/plugins/morris/raphael.min.js | 0 .../dashboard}/templates/404.html | 0 .../dashboard}/templates/generic.html | 0 .../dashboard}/templates/history.html | 0 .../dashboard}/templates/index.html | 0 .../dashboard}/templates/manage-packages.html | 0 .../dashboard}/templates/manage.html | 0 .../dashboard}/templates/os-statistics.html | 0 .../dashboard}/templates/packages-list.html | 0 .../dashboard}/templates/packages.html | 0 .../templates/registration/login.html | 0 .../dashboard}/templates/server-list.html | 0 .../dashboard}/templates/squeleton.html | 0 {dashboard => app/dashboard}/tests.py | 0 {dashboard => app/dashboard}/urls.py | 0 {dashboard => app/dashboard}/views.py | 0 {defaults => app/defaults}/gunicorn.service | 0 {defaults => app/defaults}/settings_local.py | 0 .../defaults}/updates-dashboard.conf | 0 manage.py => app/manage.py | 0 requirements.txt => app/requirements.txt | 0 .../results-packages}/.gitkeep | 0 {results => app/results}/.gitkeep | 0 .../updatesdashboard}/__init__.py | 0 .../updatesdashboard}/settings.py | 0 .../updatesdashboard}/urls.py | 0 .../updatesdashboard}/wsgi.py | 0 docker-compose.yml | 34 ++++++++++++++++++ docker/scripts/entrypoint.sh | 2 ++ 100 files changed, 70 insertions(+) create mode 100644 Dockerfile rename {dashboard => app/dashboard}/__init__.py (100%) rename {dashboard => app/dashboard}/admin.py (100%) rename {dashboard => app/dashboard}/apps.py (100%) rename {dashboard => app/dashboard}/fixtures/os.yaml (100%) rename {dashboard => app/dashboard}/fixtures/teams.yaml (100%) rename {dashboard => app/dashboard}/forms.py (100%) rename {dashboard => app/dashboard}/models.py (100%) rename {dashboard => app/dashboard}/module.py (100%) rename {dashboard => app/dashboard}/static/css/bootstrap-rtl.css (100%) rename {dashboard => app/dashboard}/static/css/bootstrap-rtl.min.css (100%) rename {dashboard => app/dashboard}/static/css/bootstrap.css (100%) rename {dashboard => app/dashboard}/static/css/bootstrap.min.css (100%) rename {dashboard => app/dashboard}/static/css/custom.css (100%) rename {dashboard => app/dashboard}/static/css/datatables.min.css (100%) rename {dashboard => app/dashboard}/static/css/plugins/morris.css (100%) rename {dashboard => app/dashboard}/static/css/sb-admin-rtl.css (100%) rename {dashboard => app/dashboard}/static/css/sb-admin.css (100%) rename {dashboard => app/dashboard}/static/font-awesome/css/font-awesome.css (100%) rename {dashboard => app/dashboard}/static/font-awesome/css/font-awesome.min.css (100%) rename {dashboard => app/dashboard}/static/font-awesome/fonts/FontAwesome.otf (100%) rename {dashboard => app/dashboard}/static/font-awesome/fonts/fontawesome-webfont.eot (100%) rename {dashboard => app/dashboard}/static/font-awesome/fonts/fontawesome-webfont.svg (100%) rename {dashboard => app/dashboard}/static/font-awesome/fonts/fontawesome-webfont.ttf (100%) rename {dashboard => app/dashboard}/static/font-awesome/fonts/fontawesome-webfont.woff (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/bordered-pulled.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/core.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/fixed-width.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/font-awesome.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/icons.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/larger.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/list.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/mixins.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/path.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/rotated-flipped.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/spinning.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/stacked.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/less/variables.less (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_bordered-pulled.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_core.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_fixed-width.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_icons.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_larger.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_list.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_mixins.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_path.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_rotated-flipped.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_spinning.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_stacked.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/_variables.scss (100%) rename {dashboard => app/dashboard}/static/font-awesome/scss/font-awesome.scss (100%) rename {dashboard => app/dashboard}/static/fonts/glyphicons-halflings-regular.eot (100%) rename {dashboard => app/dashboard}/static/fonts/glyphicons-halflings-regular.svg (100%) rename {dashboard => app/dashboard}/static/fonts/glyphicons-halflings-regular.ttf (100%) rename {dashboard => app/dashboard}/static/fonts/glyphicons-halflings-regular.woff (100%) rename {dashboard => app/dashboard}/static/fonts/glyphicons-halflings-regular.woff2 (100%) rename {dashboard => app/dashboard}/static/images/favicon.ico (100%) rename {dashboard => app/dashboard}/static/js/bootstrap.js (100%) rename {dashboard => app/dashboard}/static/js/bootstrap.min.js (100%) rename {dashboard => app/dashboard}/static/js/datatables.min.js (100%) rename {dashboard => app/dashboard}/static/js/html-to-csv.js (100%) rename {dashboard => app/dashboard}/static/js/jquery.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/flot/excanvas.min.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/flot/flot-data.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/flot/jquery.flot.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/flot/jquery.flot.pie.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/flot/jquery.flot.resize.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/flot/jquery.flot.tooltip.min.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/morris/morris-data.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/morris/morris.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/morris/morris.min.js (100%) rename {dashboard => app/dashboard}/static/js/plugins/morris/raphael.min.js (100%) rename {dashboard => app/dashboard}/templates/404.html (100%) rename {dashboard => app/dashboard}/templates/generic.html (100%) rename {dashboard => app/dashboard}/templates/history.html (100%) rename {dashboard => app/dashboard}/templates/index.html (100%) rename {dashboard => app/dashboard}/templates/manage-packages.html (100%) rename {dashboard => app/dashboard}/templates/manage.html (100%) rename {dashboard => app/dashboard}/templates/os-statistics.html (100%) rename {dashboard => app/dashboard}/templates/packages-list.html (100%) rename {dashboard => app/dashboard}/templates/packages.html (100%) rename {dashboard => app/dashboard}/templates/registration/login.html (100%) rename {dashboard => app/dashboard}/templates/server-list.html (100%) rename {dashboard => app/dashboard}/templates/squeleton.html (100%) rename {dashboard => app/dashboard}/tests.py (100%) rename {dashboard => app/dashboard}/urls.py (100%) rename {dashboard => app/dashboard}/views.py (100%) rename {defaults => app/defaults}/gunicorn.service (100%) rename {defaults => app/defaults}/settings_local.py (100%) rename {defaults => app/defaults}/updates-dashboard.conf (100%) rename manage.py => app/manage.py (100%) rename requirements.txt => app/requirements.txt (100%) rename {results-packages => app/results-packages}/.gitkeep (100%) rename {results => app/results}/.gitkeep (100%) rename {updatesdashboard => app/updatesdashboard}/__init__.py (100%) rename {updatesdashboard => app/updatesdashboard}/settings.py (100%) rename {updatesdashboard => app/updatesdashboard}/urls.py (100%) rename {updatesdashboard => app/updatesdashboard}/wsgi.py (100%) create mode 100644 docker-compose.yml create mode 100644 docker/scripts/entrypoint.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..62fa892 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +### DEV ENV ### +FROM python:3.9.16-slim-bullseye AS app_dev + +ARG APP_UID=1000 +ARG APP_GID=1000 + +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +COPY ./docker/scripts/entrypoint.sh /usr/local/bin/entrypoint +RUN chmod +x /usr/local/bin/entrypoint + +WORKDIR /app/ + +RUN addgroup --system gunicorn --gid ${APP_GID} && adduser --uid ${APP_UID} --system --disabled-login --group gunicorn + +RUN apt update && apt install -y netcat libmariadb-dev-compat libmariadb-dev mariadb-client gcc + +RUN pip install --upgrade pip +COPY ./app/requirements.txt . +RUN pip install -r requirements.txt + +COPY ./app/ . +COPY ./app/updatesdashboard/.env.dev ./updatesdashboard/.env + +#ENTRYPOINT tail -f /dev/null + +RUN python /app/manage.py makemigrations +RUN python /app/manage.py makemigrations dashboard +RUN python /app/manage.py collectstatic + +RUN rm -f ./updatesdashboard/.env +ENTRYPOINT tail -f /dev/null +#ENTRYPOINT ["/usr/local/bin/gunicorn","/app/manage.py","updatesdashboard.wsgi:application"] diff --git a/dashboard/__init__.py b/app/dashboard/__init__.py similarity index 100% rename from dashboard/__init__.py rename to app/dashboard/__init__.py diff --git a/dashboard/admin.py b/app/dashboard/admin.py similarity index 100% rename from dashboard/admin.py rename to app/dashboard/admin.py diff --git a/dashboard/apps.py b/app/dashboard/apps.py similarity index 100% rename from dashboard/apps.py rename to app/dashboard/apps.py diff --git a/dashboard/fixtures/os.yaml b/app/dashboard/fixtures/os.yaml similarity index 100% rename from dashboard/fixtures/os.yaml rename to app/dashboard/fixtures/os.yaml diff --git a/dashboard/fixtures/teams.yaml b/app/dashboard/fixtures/teams.yaml similarity index 100% rename from dashboard/fixtures/teams.yaml rename to app/dashboard/fixtures/teams.yaml diff --git a/dashboard/forms.py b/app/dashboard/forms.py similarity index 100% rename from dashboard/forms.py rename to app/dashboard/forms.py diff --git a/dashboard/models.py b/app/dashboard/models.py similarity index 100% rename from dashboard/models.py rename to app/dashboard/models.py diff --git a/dashboard/module.py b/app/dashboard/module.py similarity index 100% rename from dashboard/module.py rename to app/dashboard/module.py diff --git a/dashboard/static/css/bootstrap-rtl.css b/app/dashboard/static/css/bootstrap-rtl.css similarity index 100% rename from dashboard/static/css/bootstrap-rtl.css rename to app/dashboard/static/css/bootstrap-rtl.css diff --git a/dashboard/static/css/bootstrap-rtl.min.css b/app/dashboard/static/css/bootstrap-rtl.min.css similarity index 100% rename from dashboard/static/css/bootstrap-rtl.min.css rename to app/dashboard/static/css/bootstrap-rtl.min.css diff --git a/dashboard/static/css/bootstrap.css b/app/dashboard/static/css/bootstrap.css similarity index 100% rename from dashboard/static/css/bootstrap.css rename to app/dashboard/static/css/bootstrap.css diff --git a/dashboard/static/css/bootstrap.min.css b/app/dashboard/static/css/bootstrap.min.css similarity index 100% rename from dashboard/static/css/bootstrap.min.css rename to app/dashboard/static/css/bootstrap.min.css diff --git a/dashboard/static/css/custom.css b/app/dashboard/static/css/custom.css similarity index 100% rename from dashboard/static/css/custom.css rename to app/dashboard/static/css/custom.css diff --git a/dashboard/static/css/datatables.min.css b/app/dashboard/static/css/datatables.min.css similarity index 100% rename from dashboard/static/css/datatables.min.css rename to app/dashboard/static/css/datatables.min.css diff --git a/dashboard/static/css/plugins/morris.css b/app/dashboard/static/css/plugins/morris.css similarity index 100% rename from dashboard/static/css/plugins/morris.css rename to app/dashboard/static/css/plugins/morris.css diff --git a/dashboard/static/css/sb-admin-rtl.css b/app/dashboard/static/css/sb-admin-rtl.css similarity index 100% rename from dashboard/static/css/sb-admin-rtl.css rename to app/dashboard/static/css/sb-admin-rtl.css diff --git a/dashboard/static/css/sb-admin.css b/app/dashboard/static/css/sb-admin.css similarity index 100% rename from dashboard/static/css/sb-admin.css rename to app/dashboard/static/css/sb-admin.css diff --git a/dashboard/static/font-awesome/css/font-awesome.css b/app/dashboard/static/font-awesome/css/font-awesome.css similarity index 100% rename from dashboard/static/font-awesome/css/font-awesome.css rename to app/dashboard/static/font-awesome/css/font-awesome.css diff --git a/dashboard/static/font-awesome/css/font-awesome.min.css b/app/dashboard/static/font-awesome/css/font-awesome.min.css similarity index 100% rename from dashboard/static/font-awesome/css/font-awesome.min.css rename to app/dashboard/static/font-awesome/css/font-awesome.min.css diff --git a/dashboard/static/font-awesome/fonts/FontAwesome.otf b/app/dashboard/static/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from dashboard/static/font-awesome/fonts/FontAwesome.otf rename to app/dashboard/static/font-awesome/fonts/FontAwesome.otf diff --git a/dashboard/static/font-awesome/fonts/fontawesome-webfont.eot b/app/dashboard/static/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from dashboard/static/font-awesome/fonts/fontawesome-webfont.eot rename to app/dashboard/static/font-awesome/fonts/fontawesome-webfont.eot diff --git a/dashboard/static/font-awesome/fonts/fontawesome-webfont.svg b/app/dashboard/static/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from dashboard/static/font-awesome/fonts/fontawesome-webfont.svg rename to app/dashboard/static/font-awesome/fonts/fontawesome-webfont.svg diff --git a/dashboard/static/font-awesome/fonts/fontawesome-webfont.ttf b/app/dashboard/static/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from dashboard/static/font-awesome/fonts/fontawesome-webfont.ttf rename to app/dashboard/static/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/dashboard/static/font-awesome/fonts/fontawesome-webfont.woff b/app/dashboard/static/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from dashboard/static/font-awesome/fonts/fontawesome-webfont.woff rename to app/dashboard/static/font-awesome/fonts/fontawesome-webfont.woff diff --git a/dashboard/static/font-awesome/less/bordered-pulled.less b/app/dashboard/static/font-awesome/less/bordered-pulled.less similarity index 100% rename from dashboard/static/font-awesome/less/bordered-pulled.less rename to app/dashboard/static/font-awesome/less/bordered-pulled.less diff --git a/dashboard/static/font-awesome/less/core.less b/app/dashboard/static/font-awesome/less/core.less similarity index 100% rename from dashboard/static/font-awesome/less/core.less rename to app/dashboard/static/font-awesome/less/core.less diff --git a/dashboard/static/font-awesome/less/fixed-width.less b/app/dashboard/static/font-awesome/less/fixed-width.less similarity index 100% rename from dashboard/static/font-awesome/less/fixed-width.less rename to app/dashboard/static/font-awesome/less/fixed-width.less diff --git a/dashboard/static/font-awesome/less/font-awesome.less b/app/dashboard/static/font-awesome/less/font-awesome.less similarity index 100% rename from dashboard/static/font-awesome/less/font-awesome.less rename to app/dashboard/static/font-awesome/less/font-awesome.less diff --git a/dashboard/static/font-awesome/less/icons.less b/app/dashboard/static/font-awesome/less/icons.less similarity index 100% rename from dashboard/static/font-awesome/less/icons.less rename to app/dashboard/static/font-awesome/less/icons.less diff --git a/dashboard/static/font-awesome/less/larger.less b/app/dashboard/static/font-awesome/less/larger.less similarity index 100% rename from dashboard/static/font-awesome/less/larger.less rename to app/dashboard/static/font-awesome/less/larger.less diff --git a/dashboard/static/font-awesome/less/list.less b/app/dashboard/static/font-awesome/less/list.less similarity index 100% rename from dashboard/static/font-awesome/less/list.less rename to app/dashboard/static/font-awesome/less/list.less diff --git a/dashboard/static/font-awesome/less/mixins.less b/app/dashboard/static/font-awesome/less/mixins.less similarity index 100% rename from dashboard/static/font-awesome/less/mixins.less rename to app/dashboard/static/font-awesome/less/mixins.less diff --git a/dashboard/static/font-awesome/less/path.less b/app/dashboard/static/font-awesome/less/path.less similarity index 100% rename from dashboard/static/font-awesome/less/path.less rename to app/dashboard/static/font-awesome/less/path.less diff --git a/dashboard/static/font-awesome/less/rotated-flipped.less b/app/dashboard/static/font-awesome/less/rotated-flipped.less similarity index 100% rename from dashboard/static/font-awesome/less/rotated-flipped.less rename to app/dashboard/static/font-awesome/less/rotated-flipped.less diff --git a/dashboard/static/font-awesome/less/spinning.less b/app/dashboard/static/font-awesome/less/spinning.less similarity index 100% rename from dashboard/static/font-awesome/less/spinning.less rename to app/dashboard/static/font-awesome/less/spinning.less diff --git a/dashboard/static/font-awesome/less/stacked.less b/app/dashboard/static/font-awesome/less/stacked.less similarity index 100% rename from dashboard/static/font-awesome/less/stacked.less rename to app/dashboard/static/font-awesome/less/stacked.less diff --git a/dashboard/static/font-awesome/less/variables.less b/app/dashboard/static/font-awesome/less/variables.less similarity index 100% rename from dashboard/static/font-awesome/less/variables.less rename to app/dashboard/static/font-awesome/less/variables.less diff --git a/dashboard/static/font-awesome/scss/_bordered-pulled.scss b/app/dashboard/static/font-awesome/scss/_bordered-pulled.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_bordered-pulled.scss rename to app/dashboard/static/font-awesome/scss/_bordered-pulled.scss diff --git a/dashboard/static/font-awesome/scss/_core.scss b/app/dashboard/static/font-awesome/scss/_core.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_core.scss rename to app/dashboard/static/font-awesome/scss/_core.scss diff --git a/dashboard/static/font-awesome/scss/_fixed-width.scss b/app/dashboard/static/font-awesome/scss/_fixed-width.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_fixed-width.scss rename to app/dashboard/static/font-awesome/scss/_fixed-width.scss diff --git a/dashboard/static/font-awesome/scss/_icons.scss b/app/dashboard/static/font-awesome/scss/_icons.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_icons.scss rename to app/dashboard/static/font-awesome/scss/_icons.scss diff --git a/dashboard/static/font-awesome/scss/_larger.scss b/app/dashboard/static/font-awesome/scss/_larger.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_larger.scss rename to app/dashboard/static/font-awesome/scss/_larger.scss diff --git a/dashboard/static/font-awesome/scss/_list.scss b/app/dashboard/static/font-awesome/scss/_list.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_list.scss rename to app/dashboard/static/font-awesome/scss/_list.scss diff --git a/dashboard/static/font-awesome/scss/_mixins.scss b/app/dashboard/static/font-awesome/scss/_mixins.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_mixins.scss rename to app/dashboard/static/font-awesome/scss/_mixins.scss diff --git a/dashboard/static/font-awesome/scss/_path.scss b/app/dashboard/static/font-awesome/scss/_path.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_path.scss rename to app/dashboard/static/font-awesome/scss/_path.scss diff --git a/dashboard/static/font-awesome/scss/_rotated-flipped.scss b/app/dashboard/static/font-awesome/scss/_rotated-flipped.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_rotated-flipped.scss rename to app/dashboard/static/font-awesome/scss/_rotated-flipped.scss diff --git a/dashboard/static/font-awesome/scss/_spinning.scss b/app/dashboard/static/font-awesome/scss/_spinning.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_spinning.scss rename to app/dashboard/static/font-awesome/scss/_spinning.scss diff --git a/dashboard/static/font-awesome/scss/_stacked.scss b/app/dashboard/static/font-awesome/scss/_stacked.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_stacked.scss rename to app/dashboard/static/font-awesome/scss/_stacked.scss diff --git a/dashboard/static/font-awesome/scss/_variables.scss b/app/dashboard/static/font-awesome/scss/_variables.scss similarity index 100% rename from dashboard/static/font-awesome/scss/_variables.scss rename to app/dashboard/static/font-awesome/scss/_variables.scss diff --git a/dashboard/static/font-awesome/scss/font-awesome.scss b/app/dashboard/static/font-awesome/scss/font-awesome.scss similarity index 100% rename from dashboard/static/font-awesome/scss/font-awesome.scss rename to app/dashboard/static/font-awesome/scss/font-awesome.scss diff --git a/dashboard/static/fonts/glyphicons-halflings-regular.eot b/app/dashboard/static/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from dashboard/static/fonts/glyphicons-halflings-regular.eot rename to app/dashboard/static/fonts/glyphicons-halflings-regular.eot diff --git a/dashboard/static/fonts/glyphicons-halflings-regular.svg b/app/dashboard/static/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from dashboard/static/fonts/glyphicons-halflings-regular.svg rename to app/dashboard/static/fonts/glyphicons-halflings-regular.svg diff --git a/dashboard/static/fonts/glyphicons-halflings-regular.ttf b/app/dashboard/static/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from dashboard/static/fonts/glyphicons-halflings-regular.ttf rename to app/dashboard/static/fonts/glyphicons-halflings-regular.ttf diff --git a/dashboard/static/fonts/glyphicons-halflings-regular.woff b/app/dashboard/static/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from dashboard/static/fonts/glyphicons-halflings-regular.woff rename to app/dashboard/static/fonts/glyphicons-halflings-regular.woff diff --git a/dashboard/static/fonts/glyphicons-halflings-regular.woff2 b/app/dashboard/static/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from dashboard/static/fonts/glyphicons-halflings-regular.woff2 rename to app/dashboard/static/fonts/glyphicons-halflings-regular.woff2 diff --git a/dashboard/static/images/favicon.ico b/app/dashboard/static/images/favicon.ico similarity index 100% rename from dashboard/static/images/favicon.ico rename to app/dashboard/static/images/favicon.ico diff --git a/dashboard/static/js/bootstrap.js b/app/dashboard/static/js/bootstrap.js similarity index 100% rename from dashboard/static/js/bootstrap.js rename to app/dashboard/static/js/bootstrap.js diff --git a/dashboard/static/js/bootstrap.min.js b/app/dashboard/static/js/bootstrap.min.js similarity index 100% rename from dashboard/static/js/bootstrap.min.js rename to app/dashboard/static/js/bootstrap.min.js diff --git a/dashboard/static/js/datatables.min.js b/app/dashboard/static/js/datatables.min.js similarity index 100% rename from dashboard/static/js/datatables.min.js rename to app/dashboard/static/js/datatables.min.js diff --git a/dashboard/static/js/html-to-csv.js b/app/dashboard/static/js/html-to-csv.js similarity index 100% rename from dashboard/static/js/html-to-csv.js rename to app/dashboard/static/js/html-to-csv.js diff --git a/dashboard/static/js/jquery.js b/app/dashboard/static/js/jquery.js similarity index 100% rename from dashboard/static/js/jquery.js rename to app/dashboard/static/js/jquery.js diff --git a/dashboard/static/js/plugins/flot/excanvas.min.js b/app/dashboard/static/js/plugins/flot/excanvas.min.js similarity index 100% rename from dashboard/static/js/plugins/flot/excanvas.min.js rename to app/dashboard/static/js/plugins/flot/excanvas.min.js diff --git a/dashboard/static/js/plugins/flot/flot-data.js b/app/dashboard/static/js/plugins/flot/flot-data.js similarity index 100% rename from dashboard/static/js/plugins/flot/flot-data.js rename to app/dashboard/static/js/plugins/flot/flot-data.js diff --git a/dashboard/static/js/plugins/flot/jquery.flot.js b/app/dashboard/static/js/plugins/flot/jquery.flot.js similarity index 100% rename from dashboard/static/js/plugins/flot/jquery.flot.js rename to app/dashboard/static/js/plugins/flot/jquery.flot.js diff --git a/dashboard/static/js/plugins/flot/jquery.flot.pie.js b/app/dashboard/static/js/plugins/flot/jquery.flot.pie.js similarity index 100% rename from dashboard/static/js/plugins/flot/jquery.flot.pie.js rename to app/dashboard/static/js/plugins/flot/jquery.flot.pie.js diff --git a/dashboard/static/js/plugins/flot/jquery.flot.resize.js b/app/dashboard/static/js/plugins/flot/jquery.flot.resize.js similarity index 100% rename from dashboard/static/js/plugins/flot/jquery.flot.resize.js rename to app/dashboard/static/js/plugins/flot/jquery.flot.resize.js diff --git a/dashboard/static/js/plugins/flot/jquery.flot.tooltip.min.js b/app/dashboard/static/js/plugins/flot/jquery.flot.tooltip.min.js similarity index 100% rename from dashboard/static/js/plugins/flot/jquery.flot.tooltip.min.js rename to app/dashboard/static/js/plugins/flot/jquery.flot.tooltip.min.js diff --git a/dashboard/static/js/plugins/morris/morris-data.js b/app/dashboard/static/js/plugins/morris/morris-data.js similarity index 100% rename from dashboard/static/js/plugins/morris/morris-data.js rename to app/dashboard/static/js/plugins/morris/morris-data.js diff --git a/dashboard/static/js/plugins/morris/morris.js b/app/dashboard/static/js/plugins/morris/morris.js similarity index 100% rename from dashboard/static/js/plugins/morris/morris.js rename to app/dashboard/static/js/plugins/morris/morris.js diff --git a/dashboard/static/js/plugins/morris/morris.min.js b/app/dashboard/static/js/plugins/morris/morris.min.js similarity index 100% rename from dashboard/static/js/plugins/morris/morris.min.js rename to app/dashboard/static/js/plugins/morris/morris.min.js diff --git a/dashboard/static/js/plugins/morris/raphael.min.js b/app/dashboard/static/js/plugins/morris/raphael.min.js similarity index 100% rename from dashboard/static/js/plugins/morris/raphael.min.js rename to app/dashboard/static/js/plugins/morris/raphael.min.js diff --git a/dashboard/templates/404.html b/app/dashboard/templates/404.html similarity index 100% rename from dashboard/templates/404.html rename to app/dashboard/templates/404.html diff --git a/dashboard/templates/generic.html b/app/dashboard/templates/generic.html similarity index 100% rename from dashboard/templates/generic.html rename to app/dashboard/templates/generic.html diff --git a/dashboard/templates/history.html b/app/dashboard/templates/history.html similarity index 100% rename from dashboard/templates/history.html rename to app/dashboard/templates/history.html diff --git a/dashboard/templates/index.html b/app/dashboard/templates/index.html similarity index 100% rename from dashboard/templates/index.html rename to app/dashboard/templates/index.html diff --git a/dashboard/templates/manage-packages.html b/app/dashboard/templates/manage-packages.html similarity index 100% rename from dashboard/templates/manage-packages.html rename to app/dashboard/templates/manage-packages.html diff --git a/dashboard/templates/manage.html b/app/dashboard/templates/manage.html similarity index 100% rename from dashboard/templates/manage.html rename to app/dashboard/templates/manage.html diff --git a/dashboard/templates/os-statistics.html b/app/dashboard/templates/os-statistics.html similarity index 100% rename from dashboard/templates/os-statistics.html rename to app/dashboard/templates/os-statistics.html diff --git a/dashboard/templates/packages-list.html b/app/dashboard/templates/packages-list.html similarity index 100% rename from dashboard/templates/packages-list.html rename to app/dashboard/templates/packages-list.html diff --git a/dashboard/templates/packages.html b/app/dashboard/templates/packages.html similarity index 100% rename from dashboard/templates/packages.html rename to app/dashboard/templates/packages.html diff --git a/dashboard/templates/registration/login.html b/app/dashboard/templates/registration/login.html similarity index 100% rename from dashboard/templates/registration/login.html rename to app/dashboard/templates/registration/login.html diff --git a/dashboard/templates/server-list.html b/app/dashboard/templates/server-list.html similarity index 100% rename from dashboard/templates/server-list.html rename to app/dashboard/templates/server-list.html diff --git a/dashboard/templates/squeleton.html b/app/dashboard/templates/squeleton.html similarity index 100% rename from dashboard/templates/squeleton.html rename to app/dashboard/templates/squeleton.html diff --git a/dashboard/tests.py b/app/dashboard/tests.py similarity index 100% rename from dashboard/tests.py rename to app/dashboard/tests.py diff --git a/dashboard/urls.py b/app/dashboard/urls.py similarity index 100% rename from dashboard/urls.py rename to app/dashboard/urls.py diff --git a/dashboard/views.py b/app/dashboard/views.py similarity index 100% rename from dashboard/views.py rename to app/dashboard/views.py diff --git a/defaults/gunicorn.service b/app/defaults/gunicorn.service similarity index 100% rename from defaults/gunicorn.service rename to app/defaults/gunicorn.service diff --git a/defaults/settings_local.py b/app/defaults/settings_local.py similarity index 100% rename from defaults/settings_local.py rename to app/defaults/settings_local.py diff --git a/defaults/updates-dashboard.conf b/app/defaults/updates-dashboard.conf similarity index 100% rename from defaults/updates-dashboard.conf rename to app/defaults/updates-dashboard.conf diff --git a/manage.py b/app/manage.py similarity index 100% rename from manage.py rename to app/manage.py diff --git a/requirements.txt b/app/requirements.txt similarity index 100% rename from requirements.txt rename to app/requirements.txt diff --git a/results-packages/.gitkeep b/app/results-packages/.gitkeep similarity index 100% rename from results-packages/.gitkeep rename to app/results-packages/.gitkeep diff --git a/results/.gitkeep b/app/results/.gitkeep similarity index 100% rename from results/.gitkeep rename to app/results/.gitkeep diff --git a/updatesdashboard/__init__.py b/app/updatesdashboard/__init__.py similarity index 100% rename from updatesdashboard/__init__.py rename to app/updatesdashboard/__init__.py diff --git a/updatesdashboard/settings.py b/app/updatesdashboard/settings.py similarity index 100% rename from updatesdashboard/settings.py rename to app/updatesdashboard/settings.py diff --git a/updatesdashboard/urls.py b/app/updatesdashboard/urls.py similarity index 100% rename from updatesdashboard/urls.py rename to app/updatesdashboard/urls.py diff --git a/updatesdashboard/wsgi.py b/app/updatesdashboard/wsgi.py similarity index 100% rename from updatesdashboard/wsgi.py rename to app/updatesdashboard/wsgi.py diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..217da31 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: '0.1' +services: + web: + container_name: updatesdashboard.front + build: + context: ./ + target: app_dev + command: /usr/local/bin/gunicorn /app/manage.py + ports: + - "3000:80" + volumes: + - ./app/:/app/ + env_file: + - ./app/updatesdashboard/.env.dev + networks: + - updates-dashboard-network + depends_on: + - mysql + mysql: + image: mysql:8.0 + container_name: updatesdashboard.mysql + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: updates_dashboard + MYSQL_USER: updates_dashboard + MYSQL_PASSWORD: miengetBatheajOf + ports: + - "3306:3306" + networks: + - updates-dashboard-network + +networks: + updates-dashboard-network: + driver: bridge diff --git a/docker/scripts/entrypoint.sh b/docker/scripts/entrypoint.sh new file mode 100644 index 0000000..e06069f --- /dev/null +++ b/docker/scripts/entrypoint.sh @@ -0,0 +1,2 @@ +#!/bin/sh +until nc -vz $1 $2; do echo "Waiting for MySQL $1:$2..."; sleep 3; done; From e521bd01706fd8092ae4733989d5375a01d2fcf9 Mon Sep 17 00:00:00 2001 From: kirby Date: Fri, 31 Mar 2023 17:19:33 +0200 Subject: [PATCH 2/5] gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e5d51f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.swp +app/static +app/dashboard/migrations/ From cbd779fd93c12deac8d7e855580fb239416d2c66 Mon Sep 17 00:00:00 2001 From: kirby Date: Mon, 3 Apr 2023 17:19:36 +0200 Subject: [PATCH 3/5] Working build with database migrations --- Dockerfile | 14 ++++++-------- docker-compose.yml | 2 +- docker/scripts/entrypoint.sh | 3 +++ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 62fa892..b85f1c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,15 +7,15 @@ ARG APP_GID=1000 ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 +WORKDIR /app/ + +RUN apt update && apt install -y netcat libmariadb-dev-compat libmariadb-dev mariadb-client gcc + COPY ./docker/scripts/entrypoint.sh /usr/local/bin/entrypoint RUN chmod +x /usr/local/bin/entrypoint -WORKDIR /app/ - RUN addgroup --system gunicorn --gid ${APP_GID} && adduser --uid ${APP_UID} --system --disabled-login --group gunicorn -RUN apt update && apt install -y netcat libmariadb-dev-compat libmariadb-dev mariadb-client gcc - RUN pip install --upgrade pip COPY ./app/requirements.txt . RUN pip install -r requirements.txt @@ -23,12 +23,10 @@ RUN pip install -r requirements.txt COPY ./app/ . COPY ./app/updatesdashboard/.env.dev ./updatesdashboard/.env -#ENTRYPOINT tail -f /dev/null - RUN python /app/manage.py makemigrations RUN python /app/manage.py makemigrations dashboard RUN python /app/manage.py collectstatic RUN rm -f ./updatesdashboard/.env -ENTRYPOINT tail -f /dev/null -#ENTRYPOINT ["/usr/local/bin/gunicorn","/app/manage.py","updatesdashboard.wsgi:application"] + +ENTRYPOINT ["/usr/local/bin/entrypoint","mysql","3306"] diff --git a/docker-compose.yml b/docker-compose.yml index 217da31..327d1d2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: - "3306:3306" networks: - updates-dashboard-network - networks: updates-dashboard-network: driver: bridge + diff --git a/docker/scripts/entrypoint.sh b/docker/scripts/entrypoint.sh index e06069f..ceda1db 100644 --- a/docker/scripts/entrypoint.sh +++ b/docker/scripts/entrypoint.sh @@ -1,2 +1,5 @@ #!/bin/sh until nc -vz $1 $2; do echo "Waiting for MySQL $1:$2..."; sleep 3; done; + +python /app/manage.py migrate +python /app/manage.py loaddata dashboard/fixtures/os.yaml From b68f11b8cd3c8f102425c6388e4d2b6b93eaa34b Mon Sep 17 00:00:00 2001 From: kirby Date: Mon, 3 Apr 2023 17:21:11 +0200 Subject: [PATCH 4/5] update README --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 66f8e8b..7523f7a 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,14 @@ It runs with Django. The information are daily generated by an ansible playbook, ## Install +### Run with docker + +``` +docker-compose up +``` + +### On-premise + Dependencies in case of Debian 10. ``` apt install python3-venv libmariadb-dev-compat libmariadb-dev mariadb-client python3-dev gcc From 9de772b27d96e2fbe4517897c79a98bd54cb7fb4 Mon Sep 17 00:00:00 2001 From: kirby Date: Wed, 5 Apr 2023 11:40:58 +0200 Subject: [PATCH 5/5] Working dev env in docker --- Dockerfile | 8 +++-- app/dashboard/admin.py | 3 +- app/dashboard/fixtures/teams.yaml | 8 ----- app/dashboard/models.py | 23 -------------- app/dashboard/templates/os-statistics.html | 2 +- app/dashboard/urls.py | 9 ------ app/dashboard/views.py | 29 +++++------------- app/defaults/settings_local.py | 28 ----------------- app/requirements.txt | 1 + app/results/2022-08-17.csv | 19 ++++++++++++ app/updatesdashboard/.env.dev | 10 +++++++ app/updatesdashboard/settings.py | 35 +++++++++++++++++++++- app/updatesdashboard/settings_local.py | 19 ++++++++++++ docker-compose.yml | 3 +- docker/nginx/updatesdashboard.conf | 25 ++++++++++++++++ docker/scripts/entrypoint.dev.sh | 11 +++++++ docker/scripts/entrypoint.prod.sh | 8 +++++ docker/scripts/entrypoint.sh | 5 ---- 18 files changed, 142 insertions(+), 104 deletions(-) delete mode 100644 app/dashboard/fixtures/teams.yaml create mode 100644 app/results/2022-08-17.csv create mode 100644 app/updatesdashboard/.env.dev create mode 100644 app/updatesdashboard/settings_local.py create mode 100644 docker/nginx/updatesdashboard.conf create mode 100644 docker/scripts/entrypoint.dev.sh create mode 100644 docker/scripts/entrypoint.prod.sh delete mode 100644 docker/scripts/entrypoint.sh diff --git a/Dockerfile b/Dockerfile index b85f1c4..88e1c39 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,12 @@ ENV PYTHONUNBUFFERED 1 WORKDIR /app/ -RUN apt update && apt install -y netcat libmariadb-dev-compat libmariadb-dev mariadb-client gcc +RUN apt update && apt install -y procps less netcat libmariadb-dev-compat libmariadb-dev mariadb-client gcc nginx-light -COPY ./docker/scripts/entrypoint.sh /usr/local/bin/entrypoint +COPY ./docker/nginx/updatesdashboard.conf /etc/nginx/sites-enabled/updatesdashboard.conf +RUN rm -f /etc/nginx/sites-enabled/default + +COPY ./docker/scripts/entrypoint.dev.sh /usr/local/bin/entrypoint RUN chmod +x /usr/local/bin/entrypoint RUN addgroup --system gunicorn --gid ${APP_GID} && adduser --uid ${APP_UID} --system --disabled-login --group gunicorn @@ -25,7 +28,6 @@ COPY ./app/updatesdashboard/.env.dev ./updatesdashboard/.env RUN python /app/manage.py makemigrations RUN python /app/manage.py makemigrations dashboard -RUN python /app/manage.py collectstatic RUN rm -f ./updatesdashboard/.env diff --git a/app/dashboard/admin.py b/app/dashboard/admin.py index 4898622..edda903 100644 --- a/app/dashboard/admin.py +++ b/app/dashboard/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Os, ServerStatus, Server, PackageStatus, Team +from .models import Os, ServerStatus, Server, PackageStatus class OsAdmin(admin.ModelAdmin): @@ -10,4 +10,3 @@ admin.site.register(Os, OsAdmin) admin.site.register(ServerStatus) admin.site.register(PackageStatus) admin.site.register(Server) -admin.site.register(Team) diff --git a/app/dashboard/fixtures/teams.yaml b/app/dashboard/fixtures/teams.yaml deleted file mode 100644 index 2dfe9c0..0000000 --- a/app/dashboard/fixtures/teams.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# This is initial data for prod teams - -- model: dashboard.team - pk: null - fields: { - name: System, - color: pink - } diff --git a/app/dashboard/models.py b/app/dashboard/models.py index 3c4c4f3..5cfc66e 100644 --- a/app/dashboard/models.py +++ b/app/dashboard/models.py @@ -32,32 +32,9 @@ class Os(models.Model): -class Group(models.Model): - name = models.CharField(max_length=50, unique=True) - full_name = models.CharField(max_length=50, null=True) - - def __str__(self): - if self.full_name: - return self.full_name - else: - return self.name - - - -class Team(models.Model): - name = models.CharField(max_length=20) - color = models.CharField(max_length=20, unique=True) - - def __str__(self): - return self.name - - - class Server(models.Model): hostname = models.CharField(max_length=200, unique=True) os = models.ForeignKey(Os, null=True, related_name="servers", on_delete=models.SET_NULL) - group = models.ForeignKey(Group, null=True, blank=True, related_name="groups", on_delete=models.SET_NULL) - team = models.ForeignKey(Team, null=True, related_name="teams", on_delete=models.SET_NULL) def __str__(self): return self.hostname diff --git a/app/dashboard/templates/os-statistics.html b/app/dashboard/templates/os-statistics.html index 6aadc01..bd6d607 100644 --- a/app/dashboard/templates/os-statistics.html +++ b/app/dashboard/templates/os-statistics.html @@ -20,7 +20,7 @@ - + diff --git a/app/dashboard/urls.py b/app/dashboard/urls.py index 3632f93..748e2ae 100644 --- a/app/dashboard/urls.py +++ b/app/dashboard/urls.py @@ -19,12 +19,6 @@ urlpatterns = [ re_path(r'^server-list/(?P[0-9]{4})/(?P[0-9]{1,2})/(?P[0-9]{1,2})/?$', views.server_list, name='server-list-by-date'), - re_path(r'^server-list/(?P[a-z0-9\-_]*)/(?P[0-9]{4})/(?P[0-9]{1,2})/(?P[0-9]{1,2})/?$', - views.server_list, - name='server-list-by-group'), - re_path(r'^server-list/team/(?P[a-z]*)/(?P[0-9]{4})/(?P[0-9]{1,2})/(?P[0-9]{1,2})/?$', - views.server_list, - name='server-list-by-team'), # package list re_path(r'^packages/?$', @@ -69,9 +63,6 @@ urlpatterns = [ re_path(r'^manage-packages/upload_csv_results_packages', views.upload_csv_results_packages, name='upload_csv_results_packages'), -# re_path(r'^manage/update-groups/?$', -# views.update_groups, -# name='update_groups'), # manage packages re_path(r'^manage-packages/?$', diff --git a/app/dashboard/views.py b/app/dashboard/views.py index b037c31..3e706be 100644 --- a/app/dashboard/views.py +++ b/app/dashboard/views.py @@ -16,7 +16,7 @@ from django.core.cache import cache from django.db import IntegrityError from django.contrib.auth.decorators import login_required # project -from .models import Os, Group, Server, ServerStatus, PackageStatus, Team, Document_Servers, Document_Packages +from .models import Os, Server, ServerStatus, PackageStatus, Document_Servers, Document_Packages from .forms import DocumentForm @@ -36,7 +36,7 @@ def index(request): ## ----------------------------------------------------------------------------- @login_required -def server_list(request, year=None, month=None, day=None, group=None, team=None): +def server_list(request, year=None, month=None, day=None): # TODO: use date.today? now = datetime.now() if not year or not month or not day: @@ -64,24 +64,11 @@ def server_list(request, year=None, month=None, day=None, group=None, team=None) next_result_date = next_result.date results_date = current_date - if group: - group = get_object_or_404(Group, name=group) - status_list = ServerStatus.objects.filter(date=current_date, server__group=group).order_by('server__hostname') - if previous_result and not status_list: - status_list = ServerStatus.objects.filter(date=previous_result_date, server__group=group).order_by('server__hostname') - results_date = previous_result_date - elif team: - team = get_object_or_404(Team, color=team) - status_list = ServerStatus.objects.filter(date=current_date, server__team=team).order_by('server__hostname') - if previous_result and not status_list: - status_list = ServerStatus.objects.filter(date=previous_result_date, server__team=team).order_by('server__hostname') - results_date = previous_result_date - else: - # status_list = ServerStatus.objects.filter(date=current_date).order_by('server__hostname') - status_list = ServerStatus.objects.filter(date=current_date).order_by('server__hostname').select_related('server', 'server__group', 'server__os') - if previous_result and not status_list: - status_list = ServerStatus.objects.filter(date=previous_result_date).order_by('server__hostname').select_related('server', 'server__group', 'server__os') - results_date = previous_result_date + # status_list = ServerStatus.objects.filter(date=current_date).order_by('server__hostname') + status_list = ServerStatus.objects.filter(date=current_date).order_by('server__hostname').select_related('server', 'server__os') + if previous_result and not status_list: + status_list = ServerStatus.objects.filter(date=previous_result_date).order_by('server__hostname').select_related('server', 'server__os') + results_date = previous_result_date if not status_list: return render(request, 'generic.html', { @@ -90,7 +77,6 @@ def server_list(request, year=None, month=None, day=None, group=None, team=None) return render(request, 'server-list.html', { - 'group': group, 'status_list': status_list, 'results_date': results_date, 'previous_result_date': previous_result_date, @@ -332,7 +318,6 @@ def purge_all(request): ServerStatus.objects.all().delete() Os.objects.all().delete() PackageStatus.objects.all().delete() - Group.objects.all().delete() content = "" diff --git a/app/defaults/settings_local.py b/app/defaults/settings_local.py index 9064ad4..a5173f4 100644 --- a/app/defaults/settings_local.py +++ b/app/defaults/settings_local.py @@ -37,37 +37,9 @@ INSTALLED_APPS_LOCAL = [ # LDAP AUTH AUTHENTICATION_BACKENDS = ( - 'django_python3_ldap.auth.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', ) -LDAP_AUTH_URL = "ldaps://SERVER:PORT" -LDAP_AUTH_USE_TLS = True -LDAP_AUTH_SEARCH_BASE = "ou=USERS,dc=MY,dc=ORG" -LDAP_AUTH_OBJECT_CLASS = "inetOrgPerson" -LDAP_AUTH_USER_FIELDS = { - "username": "uid", - "first_name": "givenName", - "last_name": "sn", - "email": "mail", -} -LDAP_AUTH_FORMAT_SEARCH_FILTERS = "dashboard.module.custom_format_search_filters" -LDAP_AUTH_CUSTOM_OBJECT_CLASS = "ACLASS" -LDAP_AUTH_CUSTOM_FILTERS = "(SOMEFIELD=SOMEVALUE)" MIDDLEWARE_LOCAL = [ 'debug_toolbar.middleware.DebugToolbarMiddleware', ] - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.10/howto/static-files/ - -STATIC_URL = '/static/' -STATIC_ROOT = os.path.join(BASE_DIR, './static') - -# custom -RESULT_DIR = os.path.join(BASE_DIR, 'results') -RESULT_PACKAGES_DIR = os.path.join(BASE_DIR, 'results-packages') -INVENTORY_DIR = os.path.join(BASE_DIR, 'inventory') - -LOGIN_URL = '/login' -LOGIN_REDIRECT_URL = 'index' diff --git a/app/requirements.txt b/app/requirements.txt index 63c3449..885b423 100644 --- a/app/requirements.txt +++ b/app/requirements.txt @@ -3,6 +3,7 @@ Django django-extensions gunicorn django-debug-toolbar +django-environ django-python3-ldap requests mysqlclient diff --git a/app/results/2022-08-17.csv b/app/results/2022-08-17.csv new file mode 100644 index 0000000..5a680a5 --- /dev/null +++ b/app/results/2022-08-17.csv @@ -0,0 +1,19 @@ +vlearning-db001-tst.infolegale.net;Debian;10;0;5 +app-db001-tst.infolegale.net;Debian;10;0;9 +consults-db001-tst.infolegale.net;Debian;10;0;147 +vador-db001-tst.infolegale.net;Debian;10;0;147 +tlearning-db003-tst.infolegale.net;Ubuntu;18.04;0;308 +transdb-db001-tst.infolegale.net;Debian;10;0;147 +mysql8-db001-tst.infolegale.net;Debian;11;3;119 +mongo-db001-tst.infolegale.net;Ubuntu;20.04;0;28 +orchestrator-mgr001-tst.infolegale.net;Ubuntu;20.04;0;28 +redis5-db001-tst.infolegale.net;Debian;10;0;326 +redis-db001-tst.infolegale.net;Ubuntu;18.04;0;326 +docker-hpv001-tst.infolegale.net;Ubuntu;20.04;0;106 +docker-hpv002-tst.infolegale.net;Ubuntu;20.04;0;398 +docker-hpv003-tst.infolegale.net;Ubuntu;20.04;0;125 +rundeck-sch001-tst.infolegale.net;Debian;10;0;91 +proxysql-db001-tst.infolegale.net;Ubuntu;20.04;0;475 +docker-hpv005-tst.infolegale.net;Ubuntu;20.04;0;119 +docker-hpv004-tst.infolegale.net;Ubuntu;20.04;0;28 +docker-hpv006-tst.infolegale.net;Ubuntu;20.04;0;309 diff --git a/app/updatesdashboard/.env.dev b/app/updatesdashboard/.env.dev new file mode 100644 index 0000000..b9119a7 --- /dev/null +++ b/app/updatesdashboard/.env.dev @@ -0,0 +1,10 @@ +GUNICORN_CMD_ARGS=--bind=127.0.0.1:3000 --workers=3 --timeout=300 --error-logfile=/var/log/gunicorn-error.log +DJANGO_SUPERUSER_PASSWORD=admin +SECRET_KEY=uv88xpv8kb2r6j7rubtnhkps +DATABASE_NAME=updates_dashboard +DATABASE_USER=updates_dashboard +DATABASE_PASSWORD=miengetBatheajOf +DATABASE_HOST=mysql +DATABASE_PORT=3306 +DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 +DJANGO_CSRF_TRUSTED_ORIGINS=http://localhost diff --git a/app/updatesdashboard/settings.py b/app/updatesdashboard/settings.py index 6149a85..007f329 100644 --- a/app/updatesdashboard/settings.py +++ b/app/updatesdashboard/settings.py @@ -10,11 +10,23 @@ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.10/ref/settings/ """ +import os from .settings_local import * +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +# for debug_toolbar +INTERNAL_IPS = ['127.0.0.1', ] +DEBUG_TOOLBAR = True # Application definition - +INSTALLED_APPS_LOCAL = [ + 'debug_toolbar', +# 'django_python3_ldap', +] INSTALLED_APPS = [ 'dashboard.apps.DashboardConfig', 'django.contrib.admin', @@ -26,6 +38,10 @@ INSTALLED_APPS = [ 'django_extensions', ] + INSTALLED_APPS_LOCAL +MIDDLEWARE_LOCAL = [ + 'debug_toolbar.middleware.DebugToolbarMiddleware', +] + MIDDLEWARE = MIDDLEWARE_LOCAL + [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', @@ -74,6 +90,23 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.10/howto/static-files/ + +STATIC_URL = '/static/' +STATIC_ROOT = os.path.join(BASE_DIR, './static') + +# custom +RESULT_DIR = os.path.join(BASE_DIR, 'results') +RESULT_PACKAGES_DIR = os.path.join(BASE_DIR, 'results-packages') +INVENTORY_DIR = os.path.join(BASE_DIR, 'inventory') + +LOGIN_URL = '/login' +LOGIN_REDIRECT_URL = 'index' + +# for debug_toolbar +INTERNAL_IPS = ['127.0.0.1', ] +DEBUG_TOOLBAR = True # Internationalization # https://docs.djangoproject.com/en/1.10/topics/i18n/ diff --git a/app/updatesdashboard/settings_local.py b/app/updatesdashboard/settings_local.py new file mode 100644 index 0000000..a31defc --- /dev/null +++ b/app/updatesdashboard/settings_local.py @@ -0,0 +1,19 @@ +import environ + +env = environ.Env() +# reading .env file +environ.Env.read_env() + +ALLOWED_HOSTS = env("DJANGO_ALLOWED_HOSTS").split(" ") +CSRF_TRUSTED_ORIGINS = env("DJANGO_CSRF_TRUSTED_ORIGINS").split(" ") +SECRET_KEY = env("SECRET_KEY") +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': env("DATABASE_NAME"), + 'USER': env("DATABASE_USER"), + 'PASSWORD': env("DATABASE_PASSWORD"), + 'HOST': env("DATABASE_HOST"), + 'PORT': int(env("DATABASE_PORT")), + } +} diff --git a/docker-compose.yml b/docker-compose.yml index 327d1d2..23c7e1e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,9 +5,8 @@ services: build: context: ./ target: app_dev - command: /usr/local/bin/gunicorn /app/manage.py ports: - - "3000:80" + - "3000:3001" volumes: - ./app/:/app/ env_file: diff --git a/docker/nginx/updatesdashboard.conf b/docker/nginx/updatesdashboard.conf new file mode 100644 index 0000000..60a1fad --- /dev/null +++ b/docker/nginx/updatesdashboard.conf @@ -0,0 +1,25 @@ +server { + listen 3001; + server_name updates-dashboard.infolegale.net; + + # css, js… + location /static { + alias /app/static; + } + + if ($request_uri !~ "^/admin.*") { + # don't rewrite admin + rewrite ^/(.*)/$ /$1 permanent; + } + + location / { + include proxy_params; + proxy_pass http://127.0.0.1:3000; + proxy_connect_timeout 120s; + proxy_read_timeout 300s; + + } + + error_log /var/log/updatesdashboard-error.log; + access_log /var/log/updatesdashboard-access.log; +} diff --git a/docker/scripts/entrypoint.dev.sh b/docker/scripts/entrypoint.dev.sh new file mode 100644 index 0000000..82beb9b --- /dev/null +++ b/docker/scripts/entrypoint.dev.sh @@ -0,0 +1,11 @@ +#!/bin/sh +until nc -vz $1 $2; do echo "Waiting for MySQL $1:$2..."; sleep 3; done; + +python /app/manage.py migrate +python /app/manage.py collectstatic +python /app/manage.py loaddata /app/dashboard/fixtures/os.yaml +python /app/manage.py createsuperuser --noinput --username admin --email test@example.com +service nginx start +gunicorn updatesdashboard.wsgi:application + +exec "$@" diff --git a/docker/scripts/entrypoint.prod.sh b/docker/scripts/entrypoint.prod.sh new file mode 100644 index 0000000..3d3b1be --- /dev/null +++ b/docker/scripts/entrypoint.prod.sh @@ -0,0 +1,8 @@ +#!/bin/sh +until nc -vz $1 $2; do echo "Waiting for MySQL $1:$2..."; sleep 3; done; + +#python /app/manage.py flush --no-input +#python /app/manage.py migrate +#python /app/manage.py loaddata dashboard/fixtures/os.yaml + +exec "$@" diff --git a/docker/scripts/entrypoint.sh b/docker/scripts/entrypoint.sh deleted file mode 100644 index ceda1db..0000000 --- a/docker/scripts/entrypoint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -until nc -vz $1 $2; do echo "Waiting for MySQL $1:$2..."; sleep 3; done; - -python /app/manage.py migrate -python /app/manage.py loaddata dashboard/fixtures/os.yaml
HostnameDistribution Number Percentage