Skip to content

feat(config): complete update_config with API apply, restart engine, and bridges (4/6)#180

Draft
marceloneppel wants to merge 1 commit into
skl-01-update-config-3-templatefrom
feature/migrate-update-config
Draft

feat(config): complete update_config with API apply, restart engine, and bridges (4/6)#180
marceloneppel wants to merge 1 commit into
skl-01-update-config-3-templatefrom
feature/migrate-update-config

Conversation

@marceloneppel

@marceloneppel marceloneppel commented Jul 11, 2026

Copy link
Copy Markdown
Member

Issue

The capstone of the migration: the update_config orchestration itself — apply the Patroni REST API config patch, decide reload-vs-restart, and persist the config hash — plus the charm-owned bridges it calls back into.

Solution

  • managers/config.py: update_config orchestration wiring apply_api_config, handle_restart_need, is_tls_enabled, is_restart_pending, generate_config_hash, and config-hash persistence.
  • Reload/restart bridges as constructor-injected charm-owned callables (request_restart, refresh_endpoints, restart_services), matching the TLS migration's collaborator-injection pattern; declared @abstractmethod on the abstract charm and stubbed per substrate.
  • VM-only standalone connect-gate; K8s goes member-started → apply_api_config directly.

Final (code-only) PR in the update_config stack; the ConfigManager constructor grows to seven args, so the minimal fixture update to keep the suite green rides here, and the new unit tests land in the stack's test PR (#188). Charm adoption — deleting the charm-side copies, catching DeployedWithoutTrustError, wiring the bridges — follows in per-charm PRs once the lib is released.

Checklist

  • I have added or updated any relevant documentation.
  • I have cleaned any remaining cloud resources from my accounts.

@marceloneppel marceloneppel changed the title feat(config): migrate update_config subsystem into the library feat(config): complete update_config with API apply, restart engine, and bridges Jul 11, 2026
@marceloneppel
marceloneppel changed the base branch from tls-4-tests to skl-01-update-config-3-template July 11, 2026 01:42
@marceloneppel
marceloneppel force-pushed the skl-01-update-config-3-template branch from cba92af to fdf2a44 Compare July 11, 2026 16:12
@marceloneppel
marceloneppel force-pushed the feature/migrate-update-config branch from 08f5993 to 40752dd Compare July 11, 2026 16:12
@marceloneppel
marceloneppel force-pushed the skl-01-update-config-3-template branch from fdf2a44 to ef76d9a Compare July 20, 2026 13:22
@marceloneppel
marceloneppel force-pushed the feature/migrate-update-config branch from 40752dd to 912b1a4 Compare July 20, 2026 13:22
@marceloneppel marceloneppel changed the title feat(config): complete update_config with API apply, restart engine, and bridges feat(config): complete update_config with API apply, restart engine, and bridges (4/5) Jul 20, 2026
@marceloneppel marceloneppel changed the title feat(config): complete update_config with API apply, restart engine, and bridges (4/5) feat(config): complete update_config with API apply, restart engine, and bridges (4/6) Jul 20, 2026
@marceloneppel
marceloneppel force-pushed the skl-01-update-config-3-template branch from ef76d9a to d994db8 Compare July 20, 2026 19:04
@marceloneppel
marceloneppel force-pushed the feature/migrate-update-config branch 2 times, most recently from 9efcc0a to e80e84f Compare July 20, 2026 20:25
…and bridges

The library now owns the full config-update flow (steps 3-10) instead of the
charm. update_config renders, applies Patroni-controlled parameters via the API,
runs the TLS/pending-restart decision engine, honors the VM snap gate, and
persists the config/user hashes -- all in the lib.

The substrate-tangled pieces of the restart trigger, endpoint refresh, and
monitoring/LDAP service restarts ride charm-side through three injected bridge
callables (request_restart, refresh_endpoints, restart_services) until their own
migration phases, so the two HIGH-risk substrate diffs in the restart trigger
(VM pops postgresql_restarted; K8s updates the metrics scrape job) stay out of
the library. is_tls_enabled and generate_config_hash internalize; user_hash
stays injected. The config hash is byte-compatible with the charm's, so charm
adoption does not force a spurious restart.

Signed-off-by: Marcelo Henrique Neppel <marcelo.neppel@canonical.com>
@marceloneppel
marceloneppel force-pushed the skl-01-update-config-3-template branch from d994db8 to f5d55f2 Compare July 21, 2026 17:46
@marceloneppel
marceloneppel force-pushed the feature/migrate-update-config branch from e80e84f to 113b21b Compare July 21, 2026 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant