From 0a37507d864c9e9cecef1d80b28d2ca95cdb0db7 Mon Sep 17 00:00:00 2001 From: JiriUhlir <149317995+JiriUhlir@users.noreply.github.com> Date: Wed, 3 Jun 2026 09:23:59 +0200 Subject: [PATCH] =?UTF-8?q?Zm=C4=9Bny:=20NEW=5FAPP=5FSCRIPT=20odstran?= =?UTF-8?q?=C4=9Bn=20z=20app/config.py.=20create=5Fapp=20u=C5=BE=20vol?= =?UTF-8?q?=C3=A1=20skeleton=20p=C5=99es=20app=5Ftemplates.create=5Fscript?= =?UTF-8?q?:na=C4=8Dte=20template=20podle=20ID,=20ov=C4=9B=C5=99=C3=AD=20i?= =?UTF-8?q?s=5Fenabled=20=3D=201=20a=20create=5Fenabled=20=3D=201=20p?= =?UTF-8?q?=C5=99es=20get=5Fapp=5Ftemplate(...,=20create=5Fenabled=3DTrue)?= =?UTF-8?q?,=20ov=C4=9B=C5=99=C3=AD=20nepr=C3=A1zdn=C3=BD=20create=5Fscrip?= =?UTF-8?q?t,=20vol=C3=A1=20[create=5Fscript,=20app=5Fid,=20app=5Fname].?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit runtime, language, container_port, health_url dál bere z vybraného template řádku. DB helper a migrace znají nové sloupce create_script a deploy_script. deploy_script se při create použije, pokud je v template vyplněný; jinak zůstává dosavadní deploy fallback. --- app/config.py | 1 - app/db/apps.py | 4 ++++ app/db/migrations.py | 4 ++++ app/routes/apps.py | 9 ++++++--- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/config.py b/app/config.py index bc38128..8c78165 100644 --- a/app/config.py +++ b/app/config.py @@ -1,4 +1,3 @@ -NEW_APP_SCRIPT = "/tools/new-python-app.sh" DEPLOY_SCRIPT = "/tools/deploy-app.sh" DELETE_APP_SCRIPT = "/tools/delete-app.sh" BACKUP_SCRIPT = "/tools/backup-appfactory.sh" diff --git a/app/db/apps.py b/app/db/apps.py index 320fef9..367c138 100644 --- a/app/db/apps.py +++ b/app/db/apps.py @@ -97,6 +97,8 @@ def get_app_templates(create_enabled: bool = False): description, default_port, default_health_path, + create_script, + deploy_script, COALESCE(is_enabled, 1) AS is_enabled, COALESCE(create_enabled, 0) AS create_enabled FROM app_templates @@ -125,6 +127,8 @@ def get_app_template(template_id: str, create_enabled: bool = False): description, default_port, default_health_path, + create_script, + deploy_script, COALESCE(is_enabled, 1) AS is_enabled, COALESCE(create_enabled, 0) AS create_enabled FROM app_templates diff --git a/app/db/migrations.py b/app/db/migrations.py index a7b46c2..92483ec 100644 --- a/app/db/migrations.py +++ b/app/db/migrations.py @@ -95,6 +95,8 @@ def run_migrations(): description TEXT, default_port INTEGER, default_health_path TEXT, + create_script TEXT, + deploy_script TEXT, is_enabled INTEGER NOT NULL DEFAULT 1, create_enabled INTEGER NOT NULL DEFAULT 0, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -138,6 +140,8 @@ def run_migrations(): "ALTER TABLE app_templates ADD COLUMN description TEXT", "ALTER TABLE app_templates ADD COLUMN default_port INTEGER", "ALTER TABLE app_templates ADD COLUMN default_health_path TEXT", + "ALTER TABLE app_templates ADD COLUMN create_script TEXT", + "ALTER TABLE app_templates ADD COLUMN deploy_script TEXT", "ALTER TABLE app_templates ADD COLUMN is_enabled INTEGER NOT NULL DEFAULT 1", "ALTER TABLE app_templates ADD COLUMN create_enabled INTEGER NOT NULL DEFAULT 0", "ALTER TABLE app_templates ADD COLUMN created_at TEXT", diff --git a/app/routes/apps.py b/app/routes/apps.py index 0db84fd..3eb7b63 100644 --- a/app/routes/apps.py +++ b/app/routes/apps.py @@ -12,7 +12,6 @@ from ..config import ( DELETE_APP_SCRIPT, DEPLOY_SCRIPT, GENERATE_COMPOSE_SCRIPT, - NEW_APP_SCRIPT, read_env_value, ) from ..db.apps import ( @@ -930,8 +929,11 @@ def create_app( selected_template = get_app_template(template, create_enabled=True) if not selected_template: return HTMLResponse("Nepodporovaná šablona", status_code=400) + create_script = clean_optional(selected_template.get("create_script")) + if not create_script: + return HTMLResponse("Šablona nemá nastavený create script", status_code=400) - create_result = run_command([NEW_APP_SCRIPT, app_id, app_name]) + create_result = run_command([create_script, app_id, app_name]) if create_result.returncode == 0: update_app_template_metadata( app_id, @@ -944,7 +946,8 @@ def create_app( "container_port": selected_template.get("default_port"), }, ) - deploy_result = run_command([DEPLOY_SCRIPT, app_id]) + deploy_script = clean_optional(selected_template.get("deploy_script")) or DEPLOY_SCRIPT + deploy_result = run_command([deploy_script, app_id]) status = "OK" if create_result.returncode == 0 and deploy_result.returncode == 0 else "FAILED" log_audit_event(