Skip to content

Release 0.2.2#45

Merged
kbens merged 35 commits into
mainfrom
staging
Feb 16, 2026
Merged

Release 0.2.2#45
kbens merged 35 commits into
mainfrom
staging

Conversation

@kbens
Copy link
Copy Markdown
Member

@kbens kbens commented Feb 13, 2026

Summary

  • CLI command reorg: ops commands moved from config to ops group
  • psa ops setup --url replaces psa config setup --ops-url
  • psa ops compare replaces psa config compare
  • psa ops register removed (consolidated into ops setup)
  • DPK commands: repo init/status/list, stage --version, kit install, dpk status --json
  • Domain UX: compare with archive picker, --force flag, --quiet/--verbose
  • Bug fixes: RawConfigParser for %vars%, PIA paths, status parser, OL8 prereqs

Full changelog

32 commits from staging since 0.2.0

kbens added 30 commits February 12, 2026 10:36
Standardize CLI help text by removing trailing periods across all Click command/option help strings
* Remove trailing periods from CLI help text

* Fix missed trailing period in config compare help
#21)

- Discovery methods now catch PermissionError per-domain instead of
  crashing entire list (e.g. PIA dirs with 750 perms no longer block
  app/prcs discovery)
- find_domain() scopes to requested type, avoiding unnecessary discovery
- _find_domain() in commands catches errors cleanly instead of raw traceback
…h auto-detect (#24)

F7: Add "is not started" pattern to status parser for app/prcs domains
F9: Fallback message when psadmin returns empty output on stop/kill
F3: PIA discovery uses config.xml for detection, globs DPK WAR path for properties
F5: PRCS/PIA inline status checks filesystem markers instead of hardcoded unknown
F1: Add ps_app_home/ps_cust_home to PsaConfig; auto-detect PS paths from runtime user env
F4: Filed as #23 (deferred — needs design decision)
psadmin on some servers returns raw tmadmin tables (BBL, PSAPPSRV, etc.)
instead of summary "X processes running" lines. Detect BBL + "Prog Name"
header as running indicator for app/prcs domains.

Also reorder stopped checks before running checks so "is not started"
can't accidentally match a running pattern.
psadmin returns just "Started" for running prcs domains on some servers.
…nds (#27)

- Verbosity enum + run_step() helper in output.py with spinner + checkmark UX
- Global -q/-v flags in cli.py callback
- Domain commands use run_step() for multi-step operations (bounce, reconfigure, restart)
- Single-action commands (start/stop/configure/flush/purge/kill) wrapped in run_step()
- status --verbose shows full output, list --verbose shows config columns
- print_info/success/warning silenced in QUIET, print_error always prints
- Remove unused --verbose from ops report, --quiet from dpk apply/data sync
- New test_output.py covering verbosity and run_step behavior
- configure now stops domain before configuring; add --restart to start after
- Remove reconfigure (replaced by configure --restart)
- stop/kill on already-stopped domains warn instead of failing
- bounce/restart stop substeps only warn on real failures
- Add _is_already_stopped() helper reusing status parser
- Add skip_domain_confirm config field
- Tests for all new behavior
Show yellow ~ instead of red x when stop/kill fails on an
already-stopped domain. Updated all 5 stop substep callers.
* Add warn_if to run_step for already-stopped domain warnings

Show yellow ~ instead of red x when stop/kill fails on an
already-stopped domain. Updated all 5 stop substep callers.

* Add psa config set, always prompt in all-mode, show bypass hint
- Add _is_already_purged() helper: warn instead of fail when cache empty
- Guard all 8 summary blocks with len(domains) > 1 to skip redundant
  ratio message for single-domain commands
- Add tests for already-purged and single-domain-no-summary
… ops (#36)

- New `psa domain compare` command: local archive, --ops (API), --file modes
- New `src/psa/core/compare.py`: archive listing, INI/properties parsing, diff
- Add `get_latest_config()` to ApiClient
- Move `set-env` from domain to `psa ops set-env` with proper ApiClient usage
- Delete old drift command + tests, add compare + set-env tests
Real psappsrv.cfg contains %VAR% interpolation tokens that
ConfigParser chokes on. RawConfigParser skips interpolation.
Default mode shows numbered backup list, prompts user to select.
--latest skips picker (old behavior). --json/--quiet imply --latest.
--latest/--ops/--file now mutually exclusive.
* Add human-friendly age display to archive backup selection

* Bump version to 0.2.0
Show ps_app_home, ps_cust_home, multi_homes in Paths section.
Add Options section with sudo_enabled, parallel_boot, skip_domain_confirm.
Show zone and suppress_fact_warnings in PSA-OPS section.
* Consolidate dpk commands: move prereq/postcfg/hiera/modules/site into setup/sync as flags

* Add psa kit command, 3-tier hiera, PSA_KIT/PSA_CUST config support
- Add dpk_repo_path to PsaConfig (load/save/settable)
- New DpkRepo class + DpkVersion dataclass for PCM repo scanning
- New `psa dpk repo init/status/list` subcommands
- Add --version to `psa dpk stage` with resolution via DpkRepo
- 27 tests covering repo logic, commands, and config integration
dry-run skips file copy so install_dir is empty; search
repo_path instead when in dry-run mode
psa-kit is private; HTTPS clone fails without auth.
Try SSH first, clean up and retry HTTPS if SSH fails.
* dpk setup: sudo prefix, prereq check in --prereq mode, --fix flag, 2hr timeout

- All setup/cleanup/postcfg commands auto-prefix sudo when not root
- --prereq mode now runs _check_dpk_prerequisites before Oracle script
- New --fix flag auto-installs missing packages without prompting
- Timeout increased from 1hr to 2hr for full DPK installs
- 5 new unit tests for _check_dpk_prerequisites

* Pipe "n" to --prereq script to skip Oracle inventory prompt

Oracle's psft-dpk-setup.sh --prereq asks interactively whether to
grant non-root users access to Oracle central inventory. When run
non-interactively, stdin EOF causes an exception. Pipe "n\n" via
subprocess input to auto-decline (root via sudo needs no addition).

* Use shell pipe instead of subprocess input for prereq stdin

subprocess.run(input=) doesn't reliably pass stdin through sudo.
Use echo n | shell pipe which works correctly.
OUI Tuxedo clone fails on OL8 without libnsl.so.1. Add to
TUXEDO_REQUIRED_LIBS and use pkg_map for lib→package mapping.
* Add libnsl to DPK prereq checks for OL8/RHEL8+ (#55)

OUI Tuxedo clone fails on OL8 without libnsl.so.1. Add to
TUXEDO_REQUIRED_LIBS and use pkg_map for lib→package mapping.

* Fix _verify_puppet to use DPK relocatable Puppet path only
Split init() into standalone_setup() and ops_setup(). Move compare
command and _resolve_domain_id to ops.py. Remove register command
(consolidated into ops setup). Update all hint strings.
* Move ops commands from config to ops group, remove register

Split init() into standalone_setup() and ops_setup(). Move compare
command and _resolve_domain_id to ops.py. Remove register command
(consolidated into ops setup). Update all hint strings.

* Bump version to 0.2.2
@kbens kbens changed the title Release v0.2.1 Release 0.2.2 Feb 16, 2026
@kbens kbens merged commit 8751415 into main Feb 16, 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