Skip to content

feat: remove product config & clean up#830

Open
maltesander wants to merge 20 commits into
mainfrom
refactor/remove-product-config
Open

feat: remove product config & clean up#830
maltesander wants to merge 20 commits into
mainfrom
refactor/remove-product-config

Conversation

@maltesander
Copy link
Copy Markdown
Member

Description

  • remove product config
  • move to config map builder step

Definition of Done Checklist

  • Not all of these items are applicable to all PRs, the author should update this template to only leave the boxes in that are relevant
  • Please make sure all these things are done and tick the boxes

Author

  • Changes are OpenShift compatible
  • CRD changes approved
  • CRD documentation for all fields, following the style guide.
  • Helm chart can be installed and deployed operator works
  • Integration tests passed (for non trivial changes)
  • Changes need to be "offline" compatible
  • Links to generated (nightly) docs added
  • Release note snippet added

Reviewer

  • Code contains useful comments
  • Code contains useful logging statements
  • (Integration-)Test cases added
  • Documentation added or updated. Follows the style guide.
  • Changelog updated
  • Cargo.toml only contains references to git tags (not specific commits or branches)

Acceptance

  • Feature Tracker has been updated
  • Proper release label has been added
  • Links to generated (nightly) docs added
  • Release note snippet added
  • Add type/deprecation label & add to the deprecation schedule
  • Add type/experimental label & add to the experimental features tracker

maltesander and others added 17 commits June 4, 2026 21:10
Add a [patch] override redirecting stackable-operator to the
smooth-operator branch of operator-rs (mirroring trino/hdfs operators),
in preparation for removing product-config. No source changes were
required; the framework API surface used by druid-operator is unchanged
between the 0.111.0 tag and the smooth-operator branch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ults

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Removes the last direct uses of the product-config crate now that
validation and config-map rendering compute everything from first
principles. Deletes the dead `build_role_properties` method and the five
`impl Configuration` blocks, makes `common_compute_files` infallible, and
replaces the `Configuration`-based `.erase()` in `get_role` with a local
`erase_config` helper that erases the typed config to `()`.

Also drops the `ProductConfigManager` from the controller `Ctx`, ignores
the shared `--product-config` CLI arg, removes the product-config
config-spec files plus their Helm/Dockerfile wiring, and removes the
crate from Cargo.toml/Cargo.lock (it now only remains transitively via
stackable-operator).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nces

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The operator no longer reads a product-config spec, but the config-spec
properties.yaml files must remain (empty) for chart/release tooling, matching
trino-operator and hdfs-operator. Revert the Helm/Dockerfile changes so the
config-spec wiring is unchanged from main; only the spec contents are emptied.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…constants

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@adwk67 adwk67 self-requested a review June 8, 2026 07:26
Comment thread Cargo.toml

[workspace.dependencies]
product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.8.0" }
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.111.0", features = ["crds", "webhook"] }
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be bumped to 0.111.1 to be the same as the smooth-op branch in op-rs.

role: &DruidRole,
rolegroup: &RoleGroupRef<v1alpha1::DruidCluster>,
rg: &DruidRoleGroupConfig,
owner: &v1alpha1::DruidCluster,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be handled when validating the cluster so we don't have to reach into the raw spec again i.e. extract metadata_database_connection_details into ValidatedCluster and use it from there. The comment says this is a follow-up step (which makes sense for at least the role resolution, probably), but we can deal with some of these now (maybe also storage type).

// Currently unused by the build steps, but part of the documented `ValidatedCluster` shape;
// consumed by later tasks.
#[allow(dead_code)]
pub name: String,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we do this elsewhere, do we? (including a field that is not used)

ConfigFileName::RuntimeProperties => overrides.runtime_properties.overrides.clone(),
ConfigFileName::SecurityProperties => overrides.security_properties.overrides.clone(),
// log4j2.properties is rendered by the logging framework and accepts no key/value overrides.
ConfigFileName::Log4j2Properties => BTreeMap::new(),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no arm here for jvm.config, which means that user overrides never seem to be used and are ignored. Is this intentional or have we regressed something?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this behaviour is unchanged, but maybe we could do with a comment somewhere to make that clear.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants