Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

## [Unreleased]

### Added

- Add 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
1 change: 1 addition & 0 deletions docs/modules/superset/partials/supported-versions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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)
19 changes: 13 additions & 6 deletions rust/operator-binary/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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",
];

Expand All @@ -43,23 +43,30 @@ 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
// 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)?;
Expand Down
8 changes: 8 additions & 0 deletions rust/operator-binary/src/crd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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,
}
}
}
Expand Down
7 changes: 4 additions & 3 deletions tests/test-definition.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down