diff --git a/common/utils/database.py b/common/utils/database.py index 6ae77cb..1f14869 100644 --- a/common/utils/database.py +++ b/common/utils/database.py @@ -46,7 +46,10 @@ class Database: def create_tables(self): """create tables in for schema""" - db.metadata.create_all(self.get_engine()) + try: + db.metadata.create_all(self.get_engine()) + except SQLAlchemyError as e: + current_app.logger.error(f"๐Ÿ’” Error creating tables for schema {self.schema}: {e.args}") def switch_schema(self): """switch between tenant/public database schema""" diff --git a/documentation/Production Setup/cluster-install.md b/documentation/Production Setup/cluster-install.md index d6e8dab..8620e49 100644 --- a/documentation/Production Setup/cluster-install.md +++ b/documentation/Production Setup/cluster-install.md @@ -608,6 +608,15 @@ Let op: apply alleen triggert niet altijd een rollout als er geen inhoudelijke s kubectl -n eveai-staging logs deploy/eveai-api --tail=200 ``` +### Phase 10: Cockpit Setup + +#### Standard Cockpit Setup +- Create a grafana user (Cockpit > Grafana Users > Add user) +- Open Grafana Dashboard (Cockpit > Open Dashboards) +- Er zijn heel wat dashboards beschikbaar. + - Kubernetes cluster overview (metrics) + - Kubernetes cluster logs (controlplane logs) + ## Verification and Testing diff --git a/eveai_ops/__init__.py b/eveai_ops/__init__.py index ee10089..2ea257d 100644 --- a/eveai_ops/__init__.py +++ b/eveai_ops/__init__.py @@ -7,7 +7,10 @@ import logging.config from common.extensions import db, migrate from config.logging_config import configure_logging from config.config import get_config - +import common.models.user +import common.models.interaction +import common.models.entitlements +import common.models.document def create_app(config_file=None): app = Flask(__name__, static_url_path='/static') diff --git a/scripts/db_heads.sh b/scripts/db_heads.sh index 3fe317a..cf4b1ac 100755 --- a/scripts/db_heads.sh +++ b/scripts/db_heads.sh @@ -25,7 +25,7 @@ fi # Set FLASK_APP environment variable PROJECT_DIR="/app" -export FLASK_APP=${PROJECT_DIR}/scripts/run_eveai_app.py # Adjust the path to your Flask app entry point +export FLASK_APP=${PROJECT_DIR}/scripts/run.py # Adjust the path to your Flask app entry point export PYTHONPATH="$PYTHONPATH:$PROJECT_DIR" # Include the app directory in the Python path # Run the Flask migration command diff --git a/scripts/db_migrate.sh b/scripts/db_migrate.sh index 61c312f..54e4512 100755 --- a/scripts/db_migrate.sh +++ b/scripts/db_migrate.sh @@ -15,7 +15,7 @@ cd "$project_dir" || exit 1 source .env # Set Flask app and Python path -export FLASK_APP=scripts/run_eveai_app.py +export FLASK_APP=scripts/run.py export PYTHONPATH="$PYTHONPATH:$project_dir" while getopts m:d: flag diff --git a/scripts/db_squash.sh b/scripts/db_squash.sh index 23f79b8..6a7ad8c 100755 --- a/scripts/db_squash.sh +++ b/scripts/db_squash.sh @@ -15,7 +15,7 @@ cd "$project_dir" || exit 1 source .env # Set Flask app and Python path -export FLASK_APP=scripts/run_eveai_app.py +export FLASK_APP=scripts/run.py export PYTHONPATH="$PYTHONPATH:$project_dir" while getopts m: flag diff --git a/scripts/initialize_data.py b/scripts/initialize_data.py index 35cdfac..cdf2d28 100644 --- a/scripts/initialize_data.py +++ b/scripts/initialize_data.py @@ -21,7 +21,7 @@ def initialize_data(): - Default tenant (ID 1) - Admin user (ID 1) """ - print("Starting data initialization...") + print("๐Ÿ’œ Starting data initialization...") app = create_app() @@ -36,12 +36,12 @@ def initialize_data(): # Step 3: Initialize admin user admin_user = initialize_admin_user(default_tenant) - print("Data initialization completed successfully") + print("๐Ÿ’œ Data initialization completed successfully") def initialize_roles(): """Initialize system roles with IDs below 1000""" - print("Initializing system roles...") + print("๐Ÿงก Initializing system roles...") # Define system roles - matching the exact IDs and names you specified roles_data = [ @@ -69,12 +69,14 @@ def initialize_roles(): db.session.execute(text("ALTER SEQUENCE public.role_id_seq RESTART WITH 1000")) db.session.commit() + print("๐Ÿงก Finished initializing system roles.") + return roles def initialize_default_tenant(): """Initialize the default system tenant with ID 1""" - print("Initializing default tenant...") + print("๐Ÿงก Initializing default tenant...") tenant_data = { 'id': 1, @@ -90,20 +92,22 @@ def initialize_default_tenant(): tenant = db.session.get(Tenant, tenant_data['id']) if not tenant: - print(f"Creating default tenant: {tenant_data['name']} (ID: {tenant_data['id']})") + print(f"๐Ÿ’› Creating default tenant: {tenant_data['name']} (ID: {tenant_data['id']})") tenant = Tenant(**tenant_data) db.session.add(tenant) db.session.commit() # Create tenant schema - print(f"Creating schema for tenant {tenant.id}") + print(f"๐Ÿ’› Creating schema for tenant {tenant.id}") Database(tenant.id).create_tenant_schema() # Create MinIO bucket - print(f"Creating MinIO bucket for tenant {tenant.id}") + print(f"๐Ÿ’› Creating MinIO bucket for tenant {tenant.id}") minio_client.create_tenant_bucket(tenant.id) else: - print(f"Default tenant already exists: {tenant.name} (ID: {tenant.id})") + print(f"๐Ÿงก Default tenant already exists: {tenant.name} (ID: {tenant.id})") + + print(f"๐Ÿงก Finished initializing default tenant.") return tenant