Skip to content

Commit 7c5f40a

Browse files
committed
docs: SP5 outcomes (image build, smoke matrix)
Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
1 parent afcd74f commit 7c5f40a

1 file changed

Lines changed: 41 additions & 5 deletions

File tree

docs/superpowers/specs/2026-09-02-pgadmin4-container-design.md

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ root/ppg/devel/pgadmin/containers/
8282
1. `ppg:devel:pgadmin` UBI_9 — the pgAdmin stack RPMs
8383
2. `ppg:staging:{18,17,16,15,14}` UBI_9 — `percona-postgresqlNN` clients
8484
3. `ppg:common:deps` UBI_9
85-
4. `common:deps:build` UBI_9 — kept for path consistency; drop at plan time if the
86-
image install closure never touches it
85+
4. `common:deps:build` UBI_9 — **dropped at plan time** (§7); the image install
86+
closure never touches it
8787
5. `common:containers:ubi9` `images` + `UBI_9``percona-ubi-minimal`, kiwi helpers
8888
6. `Fedora:EPEL:9 standard`, `RedHat:UBI-9 standard`, `RockyLinux:9 devel`
8989

@@ -162,9 +162,18 @@ python / port 80, postfix, `PGPASS_FILE` (defer until asked — desktop-mode ori
162162

163163
## 7. RPM change (the single approach-A exception)
164164

165-
`percona-pgadmin4-gunicorn` launcher: when `PGADMIN_TLS_CERTFILE` and
166-
`PGADMIN_TLS_KEYFILE` are both set, append `--certfile/--keyfile` to the gunicorn
167-
command line. Host-useful too; ~4 lines; rebuilds `percona-pgadmin4` only.
165+
**Dropped at plan time (2026-09-02):** the shipped launcher already implements TLS —
166+
`PGADMIN_ENABLE_TLS=true` adds `--certfile /certs/server.cert --keyfile
167+
/certs/server.key` to the gunicorn command line (SP4 §5.7 delivered it). No RPM change
168+
is needed; the entrypoint's TLS step (§6.6) reduces to validating that the cert pair
169+
exists when `PGADMIN_ENABLE_TLS` is set, then passing the variable through.
170+
171+
Other plan-time resolutions: `common:deps:build` is dropped from the repo paths (§4 —
172+
nothing in the image's install closure needs the build tools); the `ubi9-images` PR
173+
label already matches the new `:containers` layout generically
174+
(`percona_obs/cmd_sync.py` `_IMAGES_REPO_RE` — a `:containers` project with a repo
175+
named `ubi9`), so PR #12 needs the `ubi9-images` label added alongside `UBI_9`;
176+
`percona-ubi-minimal` includes shadow-utils, so `usermod` is available at image build.
168177

169178
## 8. Verification
170179

@@ -198,6 +207,33 @@ Task-5-style, against the OBS-built image (PR project):
198207
| `pgadmin4-cli load-servers/set-prefs` argument names differ from upstream `setup.py` | they are the same entry points (SP4 §5); verify `--user/--replace` flags in the fix loop. |
199208
| First-run init in the entrypoint vs launcher double-run | the launcher skips when `pgadmin4.db` exists; entrypoint runs init only when setup is needed. Smoke test 1 covers restart-idempotence. |
200209

210+
### Outcomes (2026-09-02)
211+
212+
- OBS (`isv:percona:PR:pr-12:ppg:devel:pgadmin:containers`, repo `ubi9`): **1 image fix
213+
round** — the ENTRYPOINT failed with "not executable" (COPY preserves the mode-644
214+
source from the OBS payload; crun refuses exec) → `RUN chmod 0755` after the COPYs
215+
plus the x-bit on the committed source (afcd74f9). One CI wrinkle: adding the
216+
`ubi9-images` label triggered a skipped label-event run that auto-cancelled the push
217+
run; a re-run synced fine. Final: `percona-pgadmin4` **succeeded on x86_64 +
218+
aarch64**, tags `9.17-2.1` / `9.17` / `latest` (macros rendered correctly).
219+
- Entrypoint hardening found in Task 2 review (spec §6 amendments, both harness-covered):
220+
`PGADMIN_REPLACE_SERVERS_ON_STARTUP=True` without `PGADMIN_DEFAULT_EMAIL` now fails
221+
with a clear error instead of `--user ""`; in external-config-DB mode the entrypoint
222+
unsets `PGADMIN_DEFAULT_EMAIL/PASSWORD` before exec so the launcher cannot
223+
double-init against the external DB.
224+
- Image acquisition (spec §8 open item resolved): the OBS registry returns "name
225+
unknown" for PR projects — the working path is `osc getbinaries` of the ~207 MB
226+
image tar + `podman load`. Loaded x86_64 image size: 650 MB (five PG client majors).
227+
- Smoke matrix: **6/6 PASS** on `9.17-2.1`
228+
(digest `sha256:2bf4c37b4a5ae2774b3d1139f66e4cbfd9ddd51cd0ea878bf6632041bfb1bae2`) —
229+
T1 login 200 + `ver=91700` + idempotent restart; T2 password `_FILE` + both-set
230+
error; T3 servers.json imported; T4 TLS https 200 + missing-certs error; T5
231+
`pg_dump` 14–18 present + `DEFAULT_BINARY_PATHS['pg-16']` resolves; T6
232+
`--user 12345:0` boots. Log: scratchpad `sp5/smoke-image.log`; round-1 failure
233+
evidence and diagnosis in the SDD task-4 report.
234+
- Decisions changed during execution: none (the §6 entrypoint amendments and the chmod
235+
are within the approved design; controller rulings recorded in the SDD ledger).
236+
201237
## 10. Out of scope
202238

203239
Port 80/443 + capability python, PUID/PGID remapping, postfix/local mail,

0 commit comments

Comments
 (0)