Skip to content

Podman#94

Merged
pbuncic merged 69 commits intomainfrom
podman
May 8, 2026
Merged

Podman#94
pbuncic merged 69 commits intomainfrom
podman

Conversation

@pbuncic
Copy link
Copy Markdown
Contributor

@pbuncic pbuncic commented May 8, 2026

This is a continuation of work on new features covering the remaining open issues.

pbuncic and others added 30 commits April 7, 2026 23:26
…e to the current architecture in target installation directory
Updated acknowledgement section and configuration paths.
pbuncic and others added 29 commits April 13, 2026 17:24
Updated section title from 'Honest strengths and weaknesses' to 'Strengths and weaknesses'.
Updated section header from 'Honest overall characterisation' to 'Conclusion'.
Introduces a pluggable lease.Backend interface so the orchestrator can run
against either a cvmfs_gateway HTTP lease API (existing behaviour) or a
local cvmfs_server subprocess (new, for single-node deployments without a
gateway).

lease package:
- Add Backend interface (Acquire, Heartbeat, Commit, Probe, NeedsPipeline)
- Client implements Backend; gateway-mode code path unchanged
- Add LocalBackend: serialises concurrent requests per repo, runs
  cvmfs_server transaction/publish/abort as subprocesses under the
  cvmfs-prepub service account
- acquireLease: validate path (no empty, leading/trailing/adjacent slashes),
  percent-encode each segment individually to preserve slash separators

orchestrator:
- Lease field changed from *lease.Client to lease.Backend
- Add CVMFSMount field (used by local mode to locate the repo mount point)
- Run() bifurcates on Lease.NeedsPipeline(): gateway path unchanged;
  local path skips CAS pipeline and calls Lease.Commit() directly
- Distribute and Pipeline config marked optional (nil/zero in local mode)

server:
- Add stagingRoot field and constructor parameter; when set, enables
  JSON tar_path submission mode and restricts accepted paths to that
  directory tree (SHA-256 content check prevents path-traversal)
- New submitJob handles both multipart/form-data and application/json
  Content-Types on the same endpoint

probe:
- Run() accepts lease.Backend instead of *lease.Client
- CAS probe skipped when backend.NeedsPipeline() == false
- Gateway probe delegated to backend.Probe()

install.sh (replaces uninstall.sh):
- Unified install/uninstall script with positional ACTION argument
- install: prereq check, optional legacy spool daemon removal
  (--purge-legacy), account + dirs + binaries + config templates +
  systemd units + health check
- uninstall: stop/disable services, remove files/dirs, optionally
  preserve spool (--keep-spool), CAS (--keep-cas), or user (--keep-user)
- --dry-run prints every action without making changes
- Fix --help: replace fragile sed range (broke on UTF-8 em-dash in
  line 2) with awk rule that stops at the first non-comment line

uninstall.sh: forwarding stub → deprecated, delegates to install.sh uninstall

INSTALL.md:
- §5.1 Local Mode: architecture diagram, requirements, service account
  setup, config snippet, and smoke-test commands
- §10 renamed "Installing and Uninstalling": install quick-start, config
  file table, legacy detection notes, updated uninstall commands
@pbuncic pbuncic merged commit c2bca8f into main May 8, 2026
8 of 12 checks passed
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