Changelog¶
All notable changes to psa-cli are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.0 — 2026-05-12¶
First public release. psa-cli is now open source under the MIT license. This release collapses the un-tagged 0.2.1 through 0.2.5 development work into the first public cut.
Pre-1.0 / beta. Not yet recommended for production. The CLI surface, config schema, and command behavior may change before 1.0.
Highlights¶
- Domain lifecycle —
psa domain list / status / start / stop / restart / bounce / comparewith Rich-rendered output, JSON mode, quiet/verbose flags, and--forceconfirmation skips. - DPK workflow — end-to-end PeopleSoft DPK provisioning:
psa dpk stage → setup → init → sync → apply → cleanup, including a 3-tier Hiera layout,dpk module installfor custom Puppet modules,dpk factsfor site facts, anddpk lookupfor hiera key resolution. psa dpk apply --summary— filtered, readable Puppet apply output with surfaced errors, exit-code mapping, and ANSI handling.- Discovery —
psa discoverfinds local PeopleSoft domains and can report results to a configured API. - Configuration —
psa config setup(interactive +--yesnon-interactive),psa config show,psa config setfor individual keys, with auto-detection ofPS_*andDPK_*paths. - Resilient file operations —
SudoFileOpsabstraction transparently cascades tosudowhen the runtime user lacks write permission, with timeout-driven diagnostics for missing passwordless sudo.
Added since v0.2.0¶
Domain¶
psa domain comparereplacespsa domain drift; archive picker, archive age display, raw-config diff that handles%PS_SERVDIR%vars- Global
-q/--quiet/-v/--verboseflags; Rich spinners --force/-fflag (renamed from--yes/-y) on destructive operationspsa domain status --jsonwith full process detail- Web tier renamed
pia→web; status/start/stop route throughpsadmin -wfor PT 8.62 - Graceful already-stopped / already-purged handling
DPK¶
psa dpkcommand group consolidates DPK provisioningpsa dpk module install <org/repo>with--branch,--dry-run,--as <name>psa dpk facts(writes to/etc/, not the DPK install tree)psa dpk initauto-creates config, generateshiera.yaml(eyaml backend), 3-tier hiera layoutpsa dpk lookupfor hiera key resolutionpsa dpk apply --summarymode + puppet error surfacing + stderr scanning + Rich bypass for raw streamspsa dpk applyauto-sudo to root unless already root orruntime_userpsa dpk syncwithSudoFileOpspermission fallbackpsa dpk status --json+ manifest parsingpsa dpk cleanup --domains-onlyfor scoped domain+service teardownpsa dpk stage --versionand--dry-runfix- Split
DPK_BASEvsDPK_HOMEwith--dpk-cust-homeflag - EL 9+ ncurses prereq: per-lib symlink fallback
- OL8/RHEL8+ libnsl in DPK prereq checks
- DPK repo commands:
init,status,list
Config¶
psa config setfor individual config keys (ps_cfg_home,ps_base,ps_home, etc.)psa config showgroups DPK paths, uppercases path labelsDPK_CUST_HOMEfoundation (renamed fromPSA_CUST)psa ops setupmoved out ofconfiggroup (hidden by default)
Quality / internal¶
- Minimum Python bumped to 3.9
SudoFileOpscentralized file operations- Resilient domain discovery (skips permission errors, scopes by type)
- Test fixes: verbosity reset, tmadmin process-table parsing, "Started" prcs pattern
- Demo-lab regression fixes: status parser, PIA paths, empty errors, PS path auto-detect
Removed¶
psa cacheandpsa secrets(stub commands that were never wired into the CLI)psa domain drift(replaced bypsa domain compare)psa ops register(folded intopsa ops setup)start/stopPIA.shshim (now routes throughpsadmin -w)io_baseconfig key
Known limitations¶
- Encrypted password leak in JSON —
psa domain --jsonincludes raw config content that contains encrypted password fields (ConnectPswd,OprPswd, etc). Values are encrypted, not cleartext, but should not appear in piped output. Tracked as issue #23, fix planned for 0.4. psa opsis hidden — depends on the private psadmin.io ops API; not intended for general public use in this release.psa kitis gated — requiresenable_psa_kit: truein config and SSH access to the privatepsadmin-io/psa-kitrepository.- Tested against PeopleTools 8.62; older versions may work but are unverified.
- No PyPI release yet — install from the GitHub release wheel or from source.
Compatibility¶
- Python 3.9, 3.10, 3.11, 3.12
- Linux (Oracle Linux 8/9, RHEL 8/9 covered; other distros likely fine)
- PeopleTools 8.62