Relax the length constraints of cluster, role and role group name#1222
Conversation
maltesander
left a comment
There was a problem hiding this comment.
LGTM, there are some stale compile asserts not using the qualified_role_group_name assert "The string <cluster_name>-<hash>..." but "The string <cluster_name>-<role_name>-<role_group_name>...":
- role_group_config_map
- stateful_set_name
- listener_name
adwk67
left a comment
There was a problem hiding this comment.
Testing with superset/resources test that failed with current smooth-op branch.
Nit: does this change behaviour - e.g. where previously a name exceeding the allowed overall length would result in an error, the name is now silently adapted? If so, we should add something to the change log, along with the other breaking changes.
If a name exceeded the length limit, then the cluster spec was not rejected by the operator. It just applied the resources until Kubernetes complained. Usually, some Services and ConfigMaps were applied but the StatefulSet was not. The operator then went into an error loop. This is in my opinion not a change but a new feature. The operator can now handle more specs than before. |
* chore: Import framework code from opensearch-operator This commit imports the framework code from the opensearch-operator by first moving over the relevant files (located at rust/operator-binary/ src/framework) commit-by-commit, then squashing them in a interactive rebase. This commit message includes a list of the individual commit titles. It also includes all authore and co-authors of the original commits as co-authors. List of commits: - feat: Add listener support (opensearch-operator#17) - feat: Make OPENSEARCH_HOME and OPENSEARCH_PATH_CONF overridable (opensearch-operator#18) - Fix technical debts (opensearch-operator#20) - test: Add unit tests (opensearch-operator#32) - feat: Improve name types (opensearch-operator#35) - chore: Upgrade dependencies (opensearch-operator#37) - feat: Support log configuration and log aggregation (opensearch-operator#40) - feat: Support regular expressions in attributed_string_type (opensearch-operator#88) - feat: TLS support (opensearch-operator#55) - feat: Support objectOverrides (opensearch-operator#93) - chore: Use anchors in regular expressions (opensearch-operator#102) - chore: Move controller utility functions to separate module (opensearch-operator#104) - chore: Add Port type (opensearch-operator#105) - feat: Service discovery and exposition (opensearch-operator#94) - chore: Bump OpenSearch version 3.4.0 (opensearch-operator#108) - chore: Bump to stackable-operator 0.106.1 (opensearch-operator#116) - feat: Allow the configuration of the security plugin (opensearch-operator#117) - feat: Support hot-reloading for security configuration files (opensearch-operator#130) - chore: Upgrade stackable-operator to 0.110.1 (opensearch-operator#137) Co-authored-by: Andrew Kenworthy <1712947+adwk67@users.noreply.github.com> Co-authored-by: Benedikt Labrenz <benedikt@labrenz.org> Co-authored-by: Sebastian Bernauer <sebastian.bernauer@stackable.tech> Co-authored-by: Siegfried Weber <mail@siegfriedweber.net> Co-authored-by: Malte Sander <malte.sander.it@gmail.com> * fix: make config_overrides public (stackabletech#1210) fix(config_overrides): make config_overrides public, fix clippy & doc checks * Fix/make role and group utils pub (stackabletech#1212) * deps: add uuid crate 1.23 * fix: add missing traits; macros and types pub. * fix: adapt pathes * fix: make builder pub * fix: make role-utils and role-group-utils pub * fix: correct fragment and merge macro path * fix: remaining precommit * fix: doc tests * fix: make missing v2 framework utils pub (stackabletech#1216) * refactor: Add config file writers to v2 (stackabletech#1217) * feat(v2): add shared config-file writers (java-properties/Hadoop-XML + Flask) Adds v2::config_file_writer (to_java_properties_string + to_hadoop_xml, backed by the java-properties and xml crates) and v2::flask_config_writer (the Flask App Builder Python config writer), both originally from the product-config crate's writer modules and until now vendored separately into the operators (hdfs/hbase/hive byte-identical full copies; kafka/nifi/zookeeper java-only subsets; airflow/superset identical Flask copies). Unit tests moved along with the code; minor lint-driven cleanups only (use_self, format_push_string, identical match arms, no unwrap in Result-returning tests) — rendered output is unchanged and pinned by the tests. Operators will migrate to these in follow-up commits, deleting their vendored copies. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs: fix rustdoc warnings (broken intra-doc links, bare URLs) stackable-operator: intra-doc links within the crate must use `crate::` rather than the package name `stackable_operator::`, which is not in scope and produced `broken_intra_doc_links` warnings. Also wrap two bare URLs in the scaler docs in angle brackets so rustdoc renders them as hyperlinks. stackable-telemetry: `SettingsBuilder` is not imported in `tracing/mod.rs` (only `Settings` is), so the four doc links to it did not resolve. Point them at `settings::SettingsBuilder` via the child module, keeping the rendered link text unchanged. `cargo doc --document-private-items` is now warning-free across the workspace. * Update crates/stackable-operator/src/v2/config_file_writer.rs Co-authored-by: maltesander <malte.sander.it@gmail.com> * Apply suggestions from code review Co-authored-by: maltesander <malte.sander.it@gmail.com> * remove error suffix and clippy --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: maltesander <malte.sander.it@gmail.com> * fix: remove option part for properties writer (stackabletech#1218) * fix: remove option part for properties writer (now takes <String,String> instead of <String,<Option<String>> * fix: precommit * Change KeyValueConfigOverrides to `BTreeMap<String, String>` (stackabletech#1219) * Make JvmArgumentOverrides mergeable (stackabletech#1220) * Add function to build a metrics Service name (stackabletech#1221) * Relax the length constraints of cluster, role and role group name (stackabletech#1222) * Relax the length constraints of cluster, role and role group name * Adapt compile-time assertions * Check that ensure_max_length is only called with ASCII resource names * Fix: make rolegroup replicas optional (stackabletech#1223) refactor: make replicas optional for HPA support * chore(stackable-operator): Update changelog * stackable-operator: Add feature test-support * Remove unnecessary Clippy hints * Improve code style * Use attributed string type for EnvVarName * Allow expressions in the constant macro * Add types for DaemonSetName and DeploymentName * Add functions to create Prometheus labels and annotations --------- Co-authored-by: Techassi <git@techassi.dev> Co-authored-by: Andrew Kenworthy <1712947+adwk67@users.noreply.github.com> Co-authored-by: Benedikt Labrenz <benedikt@labrenz.org> Co-authored-by: Sebastian Bernauer <sebastian.bernauer@stackable.tech> Co-authored-by: Malte Sander <malte.sander.it@gmail.com> Co-authored-by: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Description
Relax the length constraints of cluster, role and role group name
Some operators use long role names like
dagprocessorandmiddlemanager. Increasing the length of role names would require decreasing the length of cluster or role group name. These length constraints are already so tight that they could break existing cluster configurations. Instead, the length constraints were relaxed:ClusterNameis now up to 40 characters,RoleNameandRoleGroupNameare up to 63 characters each, according to RFC 1123 label names. In turn, if the qualified role group name length exceeds its limit of 52 characters, it is truncated and a hash is added.Definition of Done Checklist
Author
Reviewer
Acceptance