%global ocf_provider_dir /usr/lib/ocf/resource.d/loxthelion # Preserve the proven entrypoint byte-for-byte, including its /bin/bash shebang. %global __brp_mangle_shebangs %{nil} %{!?package_version:%global package_version 0.1.0} %{!?package_release:%global package_release 0.dev} Name: ocf-managed-container Version: %{package_version} Release: %{package_release}%{?dist} Summary: PostgreSQL HA agent for a persistent rootless container # Development status only; see PROVENANCE.md. No release publishing yet. License: LicenseRef-Provenance-Pending URL: https://gitea.loxthelion.com/david/ocf-managed-container Source0: %{name}-%{version}.tar.gz BuildArch: noarch BuildRequires: bash BuildRequires: python3 BuildRequires: resource-agents BuildRequires: hostname BuildRequires: diffutils BuildRequires: coreutils BuildRequires: pacemaker-cli >= 2.1.0 Requires: python3 Requires: bash Requires: /usr/lib/ocf/lib/heartbeat/ocf-shellfuncs Requires: podman Requires: systemd Requires: /usr/sbin/runuser Requires: /usr/bin/getent Requires: corosync Requires: coreutils Requires: gawk Requires: sed Requires: hostname Requires: pacemaker-cli >= 2.1.0 %description OCF agent managing PostgreSQL through a persistent rootless systemd/Quadlet container, with role-aware monitoring, promotion, demotion and rejoin. This development package has unresolved license provenance. It does not configure the cluster or container and does not start or stop services. %prep %autosetup cp packaging/README.md RPM-BUILD.md %build # Shell modules require no compilation. %install install -d %{buildroot}%{ocf_provider_dir}/managed-container.d install -m 0755 refactored/managed-container %{buildroot}%{ocf_provider_dir}/managed-container for subdir in . applications/postgresql lifecycles runtimes; do install -d %{buildroot}%{ocf_provider_dir}/managed-container.d/$subdir install -m 0644 refactored/managed-container.d/$subdir/*.sh %{buildroot}%{ocf_provider_dir}/managed-container.d/$subdir/ done install -m 0644 refactored/managed-container.d/applications/postgresql/promotion_state.py %{buildroot}%{ocf_provider_dir}/managed-container.d/applications/postgresql/ %check python3 tests/verify_refactor.py python3 tests/test_promotion_scores.py python3 tests/test_promotion_scheduler.py python3 tests/test_promotion_cleanup.py python3 tests/test_disconnected_state.py python3 tests/test_plugin_engine.py # Check the actual staged layout, including resolution from an unrelated cwd. agent="%{buildroot}%{ocf_provider_dir}/managed-container" "$agent" meta-data > staged-metadata.xml refactored/managed-container meta-data > reference-metadata.xml cmp reference-metadata.xml staged-metadata.xml (cd /tmp && "$agent" meta-data) > other-cwd-metadata.xml cmp reference-metadata.xml other-cwd-metadata.xml %files %defattr(-,root,root,-) %doc README.md packaging/PROVENANCE.md RPM-BUILD.md notes/PROMOTION-SCORING.md notes/DISCONNECTED-STANDBY.md %doc docs/operations.md docs/testing.md docs/review.md docs/plugin-engine.md %dir %{ocf_provider_dir} %attr(0755,root,root) %{ocf_provider_dir}/managed-container %dir %{ocf_provider_dir}/managed-container.d %attr(0644,root,root) %{ocf_provider_dir}/managed-container.d/*.sh %dir %{ocf_provider_dir}/managed-container.d/applications %dir %{ocf_provider_dir}/managed-container.d/applications/postgresql %dir %{ocf_provider_dir}/managed-container.d/lifecycles %dir %{ocf_provider_dir}/managed-container.d/runtimes %attr(0644,root,root) %{ocf_provider_dir}/managed-container.d/applications/postgresql/*.sh %attr(0644,root,root) %{ocf_provider_dir}/managed-container.d/applications/postgresql/*.py %attr(0644,root,root) %{ocf_provider_dir}/managed-container.d/lifecycles/*.sh %attr(0644,root,root) %{ocf_provider_dir}/managed-container.d/runtimes/*.sh