Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 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
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