From d61e60b08bc6690a03262f48513d4d40f8b73180 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:18:42 +0100 Subject: [PATCH 1/9] fix: Remove deprecated and removed import Flask AppBuilder 5 no longer has the AUTH_OID module. It is possible a user still relies on this for old Superset versions. --- rust/operator-binary/src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/operator-binary/src/config.rs b/rust/operator-binary/src/config.rs index a848e711..df00529a 100644 --- a/rust/operator-binary/src/config.rs +++ b/rust/operator-binary/src/config.rs @@ -33,7 +33,7 @@ pub enum Error { pub const PYTHON_IMPORTS: &[&str] = &[ "import os", "from superset.stats_logger import StatsdStatsLogger", - "from flask_appbuilder.security.manager import (AUTH_DB, AUTH_LDAP, AUTH_OAUTH, AUTH_OID, AUTH_REMOTE_USER)", + "from flask_appbuilder.security.manager import (AUTH_DB, AUTH_LDAP, AUTH_OAUTH, AUTH_REMOTE_USER)", "from log_config import StackableLoggingConfigurator", ]; From 839c07cca9aec63e6fa44d17c6d5e8c5d0490707 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:26:59 +0100 Subject: [PATCH 2/9] fix: Set required config (to an empty value Flask AppBuilder 5, for some reason, requires `RECAPTCHA_PUBLIC_KEY` to be set, or the UI cannot be used, and the following error is emitted on the container console: ``` File "/stackable/app/lib64/python3.11/site-packages/superset/views/base.py", line 417, in cached_common_bootstrap_data frontend_config["RECAPTCHA_PUBLIC_KEY"] = app.config["RECAPTCHA_PUBLIC_KEY"] ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ KeyError: 'RECAPTCHA_PUBLIC_KEY' ``` --- rust/operator-binary/src/config.rs | 7 +++++++ rust/operator-binary/src/crd/mod.rs | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/rust/operator-binary/src/config.rs b/rust/operator-binary/src/config.rs index df00529a..3036c039 100644 --- a/rust/operator-binary/src/config.rs +++ b/rust/operator-binary/src/config.rs @@ -61,6 +61,13 @@ pub fn add_superset_config( SupersetConfigOptions::LoggingConfigurator.to_string(), "StackableLoggingConfigurator()".into(), ); + // Flask AppBuilder requires this to be set, otherwise the web ui cannot be used. + // We chose to make it an expression in case the user wants to override it through + // configurationOverrides (though it would require other settings like the private key too). + config.insert( + SupersetConfigOptions::RecaptchaPublicKey.to_string(), + "''".to_owned(), + ); append_authentication_config(config, authentication_config)?; diff --git a/rust/operator-binary/src/crd/mod.rs b/rust/operator-binary/src/crd/mod.rs index ea44d00c..bb94010e 100644 --- a/rust/operator-binary/src/crd/mod.rs +++ b/rust/operator-binary/src/crd/mod.rs @@ -110,6 +110,9 @@ pub enum SupersetConfigOptions { AuthOpaRule, AuthOpaCacheMaxEntries, AuthOpaCacheTtlInSec, + // Flask AppBuilder (currently) requires this to be set, even if not used, + // otherwise the web UI cannot be used, + RecaptchaPublicKey, } #[versioned( @@ -425,6 +428,11 @@ impl FlaskAppConfigOptions for SupersetConfigOptions { SupersetConfigOptions::AuthOpaRule => PythonType::StringLiteral, SupersetConfigOptions::AuthOpaCacheMaxEntries => PythonType::IntLiteral, SupersetConfigOptions::AuthOpaCacheTtlInSec => PythonType::IntLiteral, + // Flask AppBuilder (currently) requires this option to be set (even if empty). + // If we set it to a string, the user cannot then get it from an expression in + // configOverrides. So we make it an expression, but will need to manually quote the + // empty string as a default. + SupersetConfigOptions::RecaptchaPublicKey => PythonType::Expression, } } } From ade04730c13096e857c81ad6dea819965a82a858 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:28:34 +0100 Subject: [PATCH 3/9] chore: Use to_owned for &str -> String --- rust/operator-binary/src/config.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rust/operator-binary/src/config.rs b/rust/operator-binary/src/config.rs index 3036c039..9dc32c2f 100644 --- a/rust/operator-binary/src/config.rs +++ b/rust/operator-binary/src/config.rs @@ -43,23 +43,23 @@ pub fn add_superset_config( ) -> Result<(), Error> { config.insert( SupersetConfigOptions::SecretKey.to_string(), - "os.environ.get('SECRET_KEY')".into(), + "os.environ.get('SECRET_KEY')".to_owned(), ); config.insert( SupersetConfigOptions::SqlalchemyDatabaseUri.to_string(), - "os.environ.get('SQLALCHEMY_DATABASE_URI')".into(), + "os.environ.get('SQLALCHEMY_DATABASE_URI')".to_owned(), ); config.insert( SupersetConfigOptions::StatsLogger.to_string(), - "StatsdStatsLogger(host='0.0.0.0', port=9125)".into(), + "StatsdStatsLogger(host='0.0.0.0', port=9125)".to_owned(), ); config.insert( SupersetConfigOptions::MapboxApiKey.to_string(), - "os.environ.get('MAPBOX_API_KEY', '')".into(), + "os.environ.get('MAPBOX_API_KEY', '')".to_owned(), ); config.insert( SupersetConfigOptions::LoggingConfigurator.to_string(), - "StackableLoggingConfigurator()".into(), + "StackableLoggingConfigurator()".to_owned(), ); // Flask AppBuilder requires this to be set, otherwise the web ui cannot be used. // We chose to make it an expression in case the user wants to override it through From bf89e052b24f55890f445809a2e6e364765731d2 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:36:20 +0100 Subject: [PATCH 4/9] test(kuttl): Add Superset 6.0.0-rc2 to test-definitions. This requires the product image to be merged and built: https://github.com/stackabletech/docker-images/pull/1337 --- tests/test-definition.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/test-definition.yaml b/tests/test-definition.yaml index b84b89c0..3d612a0a 100644 --- a/tests/test-definition.yaml +++ b/tests/test-definition.yaml @@ -9,12 +9,13 @@ dimensions: - 4.0.2 - 4.1.2 - 4.1.4 + - 6.0.0-rc2 # Or use a custom image: - # - 4.1.4,oci.stackable.tech/razvan/superset:4.1.4-stackable0.0.0-dev + # - x.x.x,oci.stackable.tech/razvan/superset:x.x.x-stackable0.0.0-dev - name: superset-latest values: - - 4.1.4 - # - 4.1.4,oci.stackable.tech/razvan/superset:4.1.4-stackable0.0.0-dev + - 6.0.0-rc2 + # - x.x.x,oci.stackable.tech/razvan/superset:x.x.x-stackable0.0.0-dev - name: ldap-authentication values: - no-tls From c0893de09727c7fde23b9c15a3b2e4c96b1d49b3 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:43:19 +0100 Subject: [PATCH 5/9] chore: Update changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80144af8..95a8ac98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] +### Added + +- Support for Superset 6.0.0-rc2 ([#680]). + +[#680]: https://github.com/stackabletech/superset-operator/pull/680 + ## [25.11.0] - 2025-11-07 ## [25.11.0-rc1] - 2025-11-06 From 1f53422477bfa22bbaff585207acf2d992c87915 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:44:54 +0100 Subject: [PATCH 6/9] docs: Update getting started --- docs/modules/superset/examples/getting_started/superset.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/superset/examples/getting_started/superset.yaml b/docs/modules/superset/examples/getting_started/superset.yaml index 0ecec136..46a93b78 100644 --- a/docs/modules/superset/examples/getting_started/superset.yaml +++ b/docs/modules/superset/examples/getting_started/superset.yaml @@ -5,7 +5,7 @@ metadata: name: simple-superset spec: image: - productVersion: 4.1.4 + productVersion: 6.0.0-rc2 clusterConfig: credentialsSecret: simple-superset-credentials nodes: From 61c8699171f6eae313b952d9ed0090f306d7ff91 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:45:58 +0100 Subject: [PATCH 7/9] docs: Update supported versions By SDP 26.3, this should no longer be rc2 --- docs/modules/superset/partials/supported-versions.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/modules/superset/partials/supported-versions.adoc b/docs/modules/superset/partials/supported-versions.adoc index 0fdb6256..34293fa2 100644 --- a/docs/modules/superset/partials/supported-versions.adoc +++ b/docs/modules/superset/partials/supported-versions.adoc @@ -2,6 +2,7 @@ // This is a separate file, since it is used by both the direct Superset documentation, and the overarching // Stackable Platform documentation. +- 6.0.0-rc2 (experimental) - 4.1.4 (LTS) - 4.1.2 (deprecated) - 4.0.2 (deprecated) From d71eb7c7477ace858003d5606da34494a7c42a28 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 11:47:36 +0100 Subject: [PATCH 8/9] chore: Update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95a8ac98..ece92141 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Added -- Support for Superset 6.0.0-rc2 ([#680]). +- Add support for Superset 6.0.0-rc2 ([#680]). [#680]: https://github.com/stackabletech/superset-operator/pull/680 From 381f2ffff1d393da8194a22923b95bfffd8c2dd6 Mon Sep 17 00:00:00 2001 From: Nick Larsen Date: Mon, 10 Nov 2025 12:01:35 +0100 Subject: [PATCH 9/9] docs: Update required-external-components --- docs/modules/superset/pages/required-external-components.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/modules/superset/pages/required-external-components.adoc b/docs/modules/superset/pages/required-external-components.adoc index d6841c2f..47ba4041 100644 --- a/docs/modules/superset/pages/required-external-components.adoc +++ b/docs/modules/superset/pages/required-external-components.adoc @@ -4,7 +4,7 @@ Superset uses an SQL database to store metadata. The supported databases and versions are: -* PostgreSQL 10, 11, 12, 13, 14, 15 +* PostgreSQL 10, 11, 12, 13, 14, 15, 16.X * MySQL 5.7, 8.x Reference: https://superset.apache.org/docs/configuration/configuring-superset/#setting-up-a-production-metadata-database[Superset documentation]