Skip to content

feat(certificatemanager): restore #171, which merged into a branch instead of main - #182

Merged
naxty merged 2 commits into
mainfrom
naxty/gcpCertManagerRecovery
Aug 31, 2026
Merged

feat(certificatemanager): restore #171, which merged into a branch instead of main#182
naxty merged 2 commits into
mainfrom
naxty/gcpCertManagerRecovery

Conversation

@naxty

@naxty naxty commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Restores #171, which is marked Merged but whose code is not on main.

What happened

#171 was stacked. It merged into its parent branch, not into main — GitHub
marks a stacked pull request merged as soon as its commits are reachable from
its base, and its base was a branch. #167, #168, #169 and #170 went the same
way, but they were recovered when #173 landed, because #173 descended from them.

Nothing descended from #171, so certificate manager is the one batch still
missing: main currently has a Merged badge and no code. pkg/resources/certificatemanager
does not exist on main, and neither do the three schemas or six fixtures.

What this is

That content, on top of current main, and nothing else — 13 files. No rebase of
the old branch, which is three commits behind and would have touched 88.

Type Case CRUD Discovery
GCP::CertificateManager::CertificateMap certmanager-certificate-map 7/7, Replace skipped 4/4
GCP::CertificateManager::DnsAuthorization certmanager-dns-authorization 7/7, Replace skipped 4/4
GCP::CertificateManager::TrustConfig certmanager-trust-config 7/7, Replace skipped 4/4

Verified locally against the same service account CI uses. CI will run exactly
these three cases.

Two things worth keeping

The role is roles/certificatemanager.owner, not .editor. The draft asked
for editor. Editor carries every .create permission and no .delete
permission at all — only deleteTagBinding. With it, Create through Update pass
and Destroy fails on a permission denial that reads exactly like a plugin bug.

A trust config cannot be empty. The fixture and the schema comment both said
a config with no stores "is valid and trusts nothing". The API rejects it. The
fixture pins one throwaway self-signed anchor, inline, holding no private key.
The blank line before its closing """ is load-bearing: Certificate Manager
appends a trailing newline to every pemCertificate it stores, whatever was
sent, so a PEM declared without one passes Create and then fails Verify,
Extract, Sync and Update against its own certificate. That bites any forma with
an inline PEM, so it is in the CHANGELOG.

Not covered

Replace — no -replace.pkl fixtures. Certificate and CertificateMapEntry
are not in this batch.

naxty added 2 commits August 31, 2026 19:35
…ustConfig

Restores #171. That pull request was stacked, and it merged into its parent
branch rather than into main - GitHub marks a stacked pull request merged once
its commits reach its base, and its base was a branch. #167, #168, #169 and #170
went the same way but were recovered when #173 landed, because #173 descended
from them. Nothing descended from #171, so certificate manager was the one batch
left behind: main has carried a Merged badge and no code since.

This is that content on top of current main, nothing else - the three types,
their schemas, six fixtures, and the package registration.

Verified locally against the service account CI uses, all three CRUD 7/7 with
Replace skipped and discovery 4/4. Two things it needed, both recorded in the
CHANGELOG: roles/certificatemanager.owner rather than editor, which carries no
delete permission at all; and a trust config that is not empty, since the API
rejects one carrying neither a trust store nor an allowlisted certificate.
@naxty
naxty merged commit 37e75b2 into main Aug 31, 2026
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.

1 participant