Skip to content

Promote Google user-revocation sync to sandbox#285

Merged
akuzminsky merged 1 commit into
mainfrom
promote-google-revocation-sandbox
Jul 21, 2026
Merged

Promote Google user-revocation sync to sandbox#285
akuzminsky merged 1 commit into
mainfrom
promote-google-revocation-sandbox

Conversation

@akuzminsky

Copy link
Copy Markdown
Member

Promotes the OpenVPN certificate-revocation feature from development → sandbox, the next step on the usual development → sandbox → global path (cf. #278#279#281). Follow-up to #284, which landed it in development only.

What

  • Copies both feature files verbatim from environments/development:
    • manifests/openvpn_server/google_revocation_sync.pp
    • templates/openvpn_server/google-user-sync.sh.erb
  • Adds the same fact-gated include to sandbox's openvpn_server.pp.

The sandbox openvpn_server.pp differed from development's only by this include block, so the promotion is a mechanical copy — all three files are byte-identical to development.

Safe to land — inert until activated

The class is declared only where the openvpn.google_directory_revocation fact is true. That fact is set by terraform-aws-openvpn >= 7.0.0 and only when enable_google_directory_revocation = true. On every existing sandbox node the fact is absent → $facts.dig(...) is undef → the class isn't declared → no script, no cron, no behavior change. This can land ahead of any activation with zero risk.

The runtime dependencies Terraform can't observe are gated inside the wrapper: toolkit >= 2.61.0 providing ih-openvpn sync-google-users (released), and Google Workspace domain-wide delegation.

Verified

puppet-lint --fail-on-warnings clean on all four module paths (sandbox, development, global profile, role).

🤖 Generated with Claude Code

Promotes the OpenVPN certificate revocation feature from development to sandbox,
following the usual development -> sandbox -> global path. Copies the two files
verbatim from environments/development and adds the same fact-gated include to
sandbox's openvpn_server.pp.

Inert until activated: the class is only declared where the
openvpn.google_directory_revocation fact is true, which Terraform
(terraform-aws-openvpn >= 7.0.0) sets only when
enable_google_directory_revocation = true. On every existing sandbox node the
fact is absent, so this installs no script and no cron and changes nothing until
the feature is deliberately switched on. The runtime dependencies Terraform
cannot see -- toolkit >= 2.61.0 providing `ih-openvpn sync-google-users`, and
Google Workspace domain-wide delegation -- are gated inside the wrapper.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@akuzminsky
akuzminsky merged commit c4967a1 into main Jul 21, 2026
2 checks passed
@akuzminsky
akuzminsky deleted the promote-google-revocation-sandbox branch July 21, 2026 18:13
akuzminsky added a commit that referenced this pull request Jul 21, 2026
Final promotion of the OpenVPN certificate-revocation feature: development ->
sandbox -> global, completing the development -> sandbox -> global path (cf.
#284, #285). Copies the two files verbatim from environments/development into the
top-level modules/ (which serves every environment, i.e. production) and adds the
same fact-gated include to the global openvpn_server.pp.

Inert until activated: the class is declared only where the
openvpn.google_directory_revocation fact is true, which terraform-aws-openvpn
(>= 7.0.0) sets only when enable_google_directory_revocation = true. On every
existing node the fact is absent, so this installs no script and no cron and
changes nothing until the feature is deliberately switched on per consumer.
Validated on a live sandbox OpenVPN node running the promoted code: catalog
compiled and no sync cron was installed while the fact was absent. Runtime
dependencies Terraform cannot see (toolkit >= 2.61.0 for `ih-openvpn
sync-google-users`, Google Workspace domain-wide delegation) are gated inside
the wrapper.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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