diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index fbe8060..73d10a8 100644 --- a/.gitignore +++ b/.gitignore @@ -79,49 +79,3 @@ /pcs-0.10.8.tar.gz /pcs-web-ui-0.1.5.tar.gz /pcs-web-ui-node-modules-0.1.5.tar.xz -/daemons-1.4.0.gem -/eventmachine-1.2.7.gem -/mustermann-1.1.1.gem -/rack-2.2.3.gem -/rack-protection-2.0.8.1.gem -/ruby2_keywords-0.0.5.gem -/sinatra-2.0.8.1.gem -/thin-1.8.1.gem -/tilt-2.0.10.gem -/pcs-0.10.9.tar.gz -/pcs-web-ui-0.1.6.tar.gz -/pcs-web-ui-node-modules-0.1.6-fips-fix.tar.xz -/pcs-0.10.11.tar.gz -/pcs-web-ui-0.1.9.tar.gz -/pcs-web-ui-node-modules-0.1.9.tar.xz -/pcs-web-ui-0.1.12.tar.gz -/pcs-web-ui-node-modules-0.1.12.tar.xz -/pcs-0.11.2.tar.gz -/pcs-0.11.3.tar.gz -/pcs-web-ui-0.1.14.tar.gz -/pcs-web-ui-node-modules-0.1.14.tar.xz -/pcs-0.11.4.15-f7301.tar.gz -/pcs-web-ui-0.1.16.tar.gz -/pcs-web-ui-node-modules-0.1.16.tar.xz -/pcs-ee602830794f09a06880cd7e37a802b27113f185.tar.gz -/dacite-1.8.0.tar.gz -/pcs-0.11.5.tar.gz -/pcs-web-ui-0.1.16.1.tar.gz -/pcs-web-ui-node-modules-0.1.16.1.tar.xz -/pcs-0.11.6.tar.gz -/pcs-web-ui-node-modules-0.1.17.tar.xz -/pcs-web-ui-0.1.17.tar.gz -/dacite-1.8.1.tar.gz -/pcs-0.11.7.tar.gz -/pcs-web-ui-0.1.18.tar.gz -/pcs-web-ui-node-modules-0.1.18.tar.xz -/pcs-0.11.8.tar.gz -/pcs-web-ui-0.1.20.tar.gz -/pcs-web-ui-node-modules-0.1.20.tar.xz -/pcs-0.12.0.tar.gz -/pcs-web-ui-0.1.22.tar.gz -/pcs-web-ui-node-modules-0.1.22.tar.xz -/dacite-1.9.2.tar.gz -/pcs-0.12.1.tar.gz -/pcs-web-ui-0.1.23.tar.gz -/pcs-web-ui-node-modules-0.1.23.tar.xz diff --git a/do-not-require-wheel.patch b/do-not-require-wheel.patch deleted file mode 100644 index 2aab9ce..0000000 --- a/do-not-require-wheel.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 72588f150e89b6f06810321245a13157b7e00b09 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= -Date: Tue, 29 Jul 2025 23:42:00 +0200 -Subject: [PATCH] Do not require wheel when setuptools is new enough - -Current version of setuptools creates wheels on its own. ---- - README.md | 2 +- - configure.ac | 7 +++++-- - rpm/pcs.spec.in | 2 +- - 3 files changed, 7 insertions(+), 4 deletions(-) - -diff --git a/README.md b/README.md -index a06143eba..636485be6 100644 ---- a/README.md -+++ b/README.md -@@ -47,7 +47,7 @@ Apart from the dependencies listed above, these are also required for - installation: - - * python development files (packages python3-devel, python3-setuptools 66.1+, -- python3-pip, python3-wheel) -+ python3-pip, python3-wheel if python3-setuptools < 71) - * ruby development files (package ruby-devel) - * rubygems - * rubygem bundler (package rubygem-bundler or ruby-bundler or bundler) -diff --git a/configure.ac b/configure.ac -index 4e7d36599..0a782bfa7 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -347,12 +347,15 @@ AC_SUBST([PYAGENTX_VERSION]) - - # pip 19.0 required for PEP517 support - PCS_CHECK_PYMOD([pip], [>= 23.0]) --# pip builds a wheel first --PCS_CHECK_PYMOD([wheel]) - - if test "x$tests_only" != "xyes"; then - # setuptools 61.0.0 required for PEP621 support - PCS_CHECK_PYMOD([setuptools], [>= 66.1]) -+ # wheel is required if setuptools < 71 -+ AC_PIP_MODULE([setuptools], [>= 71], [], [], [need_wheel=yes]) -+ if test "x$need_wheel" = "xyes"; then -+ PCS_CHECK_PYMOD([wheel]) -+ fi - PCS_CHECK_PYMOD([cryptography]) - PCS_CHECK_PYMOD([lxml]) - PCS_CHECK_PYMOD([pyparsing], [>= 3.0.0]) -diff --git a/rpm/pcs.spec.in b/rpm/pcs.spec.in -index 55881a398..639a3e974 100644 ---- a/rpm/pcs.spec.in -+++ b/rpm/pcs.spec.in -@@ -86,7 +86,7 @@ BuildRequires: python%{python3_version}-pip >= 23 - BuildRequires: python%{python3_version}-setuptools >= 66.1 - - # for building wheel during make install --BuildRequires: python%{python3_version}-wheel -+BuildRequires: (python%{python3_version}-wheel if python%{python3_version}-setuptools < 71) - - # for bundling dateutil - %if "@cirpmworkarounds@" != "yes" --- -2.50.1 - diff --git a/fix-pcsd-not-starting-with-older-rack.patch b/fix-pcsd-not-starting-with-older-rack.patch deleted file mode 100644 index e18f4ef..0000000 --- a/fix-pcsd-not-starting-with-older-rack.patch +++ /dev/null @@ -1,32 +0,0 @@ -From a2899ef0e20bb638f47e74077281e73f4f18faf3 Mon Sep 17 00:00:00 2001 -From: Miroslav Lisik -Date: Thu, 10 Jul 2025 19:48:28 +0200 -Subject: [PATCH 2/2] fix ruby NameError exception in pcsd/pcsd.rb occuring - with older rack - ---- - pcsd/pcsd.rb | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/pcsd/pcsd.rb b/pcsd/pcsd.rb -index e8ae9f106..c9f668851 100644 ---- a/pcsd/pcsd.rb -+++ b/pcsd/pcsd.rb -@@ -74,9 +74,11 @@ configure do - CAPABILITIES_PCSD = capabilities_pcsd.freeze - end - --error Rack::QueryParser::QueryLimitError do -- $logger.warn(env['sinatra.error'].message) -- return 400, env['sinatra.error'].message -+if Rack.const_defined?(:QueryParser) and Rack::QueryParser.const_defined?(:QueryLimitError) -+ error Rack::QueryParser::QueryLimitError do -+ $logger.warn(env['sinatra.error'].message) -+ return 400, env['sinatra.error'].message -+ end - end - - get '/remote/?:command?' do --- -2.50.1 - diff --git a/pcs.spec b/pcs.spec index aa227b2..6522d7c 100644 --- a/pcs.spec +++ b/pcs.spec @@ -1,221 +1,165 @@ Name: pcs -Version: 0.12.1 -Release: 5%{?dist} -# https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/ +Version: 0.10.8 +Release: 1%{?dist} # https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses -# GPL-2.0-only: pcs -# MIT: dacite -License: GPL-2.0-only AND MIT +# GPLv2: pcs +# MIT: ember, handlebars, jquery, jquery-ui +License: GPLv2 and MIT URL: https://github.com/ClusterLabs/pcs -Group: System Environment/Base -Summary: Pacemaker/Corosync Configuration System -BuildArch: noarch +Summary: Pacemaker Configuration System -# Remove a tilde used by RPM to get the correct upstream version -%global clean_version %(echo %{version} | sed 's/~//') - -# To build an official pcs release, comment out branch_or_commit -# Use long commit hash or branch name to build an unreleased version -# %%global branch_or_commit 1353dfbb3af82d77f4de17a3fa4cbde185bb2b2d -%global version_or_commit %{clean_version} -%if 0%{?branch_or_commit:1} - %global version_or_commit %{branch_or_commit} - %global tarball_version %{clean_version}+%(echo %{branch_or_commit} | head -c 8) -%endif +%global version_or_commit %{version} +# %%global version_or_commit 67591ed1487cb0aefa181fdfc166c8a66b55d25a %global pcs_source_name %{name}-%{version_or_commit} -# To build an official pcs-web-ui release, comment out ui_branch_or_commit -# Last tagged version, also used as fallback version for untagged tarballs -%global ui_version 0.1.23 -%global ui_modules_version 0.1.23 -# Use long commit hash or branch name to build an unreleased version -# %%global ui_branch_or_commit 34372d1268f065ed186546f55216aaa2d7e76b54 -%global ui_version_or_commit %{ui_version} -%if 0%{?ui_branch_or_commit:1} - %global ui_version_or_commit %{ui_branch_or_commit} - %global ui_tarball_version %{ui_version}-%(echo %{ui_branch_or_commit} | head -c 8) -%endif -%global ui_src_name pcs-web-ui-%{ui_version_or_commit} +# ui_commit can be determined by hash, tag or branch +%global ui_commit 0.1.5 +%global ui_src_name pcs-web-ui-%{ui_commit} +%global pcs_snmp_pkg_name pcs-snmp -%global pyagentx_version 0.4.pcs.2 -%global dacite_version 1.9.2 +%global pyagentx_version 0.4.pcs.2 +%global dacite_version 1.6.0 -%global required_pacemaker_version 3.0.0 +# bundled libraries for old web-ui +%global ember_version 1.4.0 +%global jquery_version 1.9.1 +%global jquery_ui_version 1.10.1 +%global handlebars_version 1.2.1 -%global pcs_bundled_dir pcs_bundled -%global pcsd_webui_dir %{_prefix}/lib/pcsd/public/ui +# We do not use _libdir macro because upstream is not prepared for it. +# Pcs does not include binaries and thus it should live in /usr/lib. Tornado +# and gems include binaries and thus it should live in /usr/lib64. But the +# path to tornado/gems is hardcoded in pcs sources. Modify hard links in pcs +# sources is not the way since then rpmdiff complains that the same file has +# different content in different architectures. +%global pcs_libdir %{_prefix}/lib +%global bundled_src_dir pcs/bundled +%global pcsd_public_dir pcsd/public -%global cockpit_dir %{_datadir}/cockpit/ -%global metainfo_dir %{_datadir}/metainfo -%global ui_metainfo_name org.clusterlabs.cockpit_pcs_web_ui.metainfo.xml -%global ui_metainfo %{metainfo_dir}/%{ui_metainfo_name} - -%global pkg_pcs_snmp pcs-snmp -%global pkg_pcs_web_ui pcs-web-ui -%global pkg_cockpit_ha_cluster cockpit-ha-cluster - -# prepend v for folder in GitHub link when using tagged tarball -%if "%{clean_version}" == "%{version_or_commit}" - %global v_prefix v -%endif - -# part after the last slash is recognized as filename in look-aside cache -Source0: %{url}/archive/%{?v_prefix}%{version_or_commit}/%{pcs_source_name}.tar.gz +#part after last slash is recognized as filename in look-aside repository +#desired name is achived by trick with hash anchor +Source0: %{url}/archive/%{version_or_commit}/%{pcs_source_name}.tar.gz Source41: https://github.com/ondrejmular/pyagentx/archive/v%{pyagentx_version}/pyagentx-%{pyagentx_version}.tar.gz -Source42: https://github.com/konradhalas/dacite/archive/v%{dacite_version}/dacite-%{dacite_version}.tar.gz +Source44: https://github.com/konradhalas/dacite/archive/v%{dacite_version}/dacite-%{dacite_version}.tar.gz -Source100: https://github.com/ClusterLabs/pcs-web-ui/archive/%{ui_version_or_commit}/%{ui_src_name}.tar.gz -Source101: https://github.com/ClusterLabs/pcs-web-ui/releases/download/%{ui_version_or_commit}/pcs-web-ui-node-modules-%{ui_modules_version}.tar.xz - - -# pcs patches: <= 200 -# Patch1: name.patch -Patch1: show-info-page-instead-of-webui.patch -Patch2: fix-pcsd-not-starting-with-older-rack.patch -Patch3: do-not-require-wheel.patch - -# ui patches: >200 -# Patch201: name-web-ui.patch - - -# Split pcs to pcs and pcs-web-ui, all packages that replace pcs must obsolete -# the old monolithic package -# https://docs.fedoraproject.org/en-US/packaging-guidelines/#_one_to_many_replacement -Obsoletes: pcs < 0.12.0 -# Web UI is an add-on that doesn't need to be installed for pcs to function. -# Upgrades from before 0.12 will install it thanks to Obsoletes. But it will -# be possible to uninstall web UI to disable it and then it will not be -# installed during upgrades because it is a weak dependency. -Recommends: %{pkg_pcs_web_ui} == %{version}-%{release} +Source100: https://github.com/idevat/pcs-web-ui/archive/%{ui_commit}/%{ui_src_name}.tar.gz +Source101: https://github.com/idevat/pcs-web-ui/releases/download/%{ui_commit}/pcs-web-ui-node-modules-%{ui_commit}.tar.xz +# Patch0: name.patch # git for patches -BuildRequires: git-core -# for building pcs tarballs -BuildRequires: autoconf -BuildRequires: automake BuildRequires: make -# printf from coreutils is used in makefile, head is used in spec +BuildRequires: git-core +#printf from coreutils is used in makefile BuildRequires: coreutils -# find is used in Makefile and also somewhere else -BuildRequires: findutils # python for pcs +BuildRequires: python3 >= 3.6 BuildRequires: python3-dateutil >= 2.7.0 BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pycurl -BuildRequires: python3-pip BuildRequires: python3-pyparsing BuildRequires: python3-tornado -BuildRequires: python3-cryptography -BuildRequires: python3-lxml -# for building bundled python packages -# setuptools 71+ builds wheels by itself -BuildRequires: (python3-wheel if python3-setuptools < 71) # ruby and gems for pcsd -BuildRequires: ruby >= 2.5.0 +BuildRequires: ruby >= 2.2.0 BuildRequires: ruby-devel BuildRequires: rubygem-backports -BuildRequires: rubygem-childprocess BuildRequires: rubygem-ethon BuildRequires: rubygem-ffi +BuildRequires: rubygem-io-console BuildRequires: rubygem-json -BuildRequires: rubygem-mustermann -BuildRequires: rubygem-puma -BuildRequires: (rubygem(rack) < 3 or (rubygem(rack) >= 3 and rubygem(rackup))) +BuildRequires: rubygem-open4 +BuildRequires: rubygem-rack BuildRequires: rubygem-rack-protection BuildRequires: rubygem-rack-test BuildRequires: rubygem-sinatra BuildRequires: rubygem-tilt -%if 0%{?fedora} || 0%{?rhel} >= 9 -BuildRequires: rubygem(rexml) -%endif # ruby libraries for tests BuildRequires: rubygem-test-unit # for touching patch files (sanitization function) BuildRequires: diffstat -# for systemd scriptlet macros -BuildRequires: systemd-rpm-macros -# pam is used for authentication inside daemon (python ctypes) -# needed for tier0 tests during build -BuildRequires: pam -# for working with qdevice certificates (certutil) - used in configure.ac -BuildRequires: nss-tools -# pcs now provides a pc file -BuildRequires: pkgconfig - - -# cluster stack packages for pkg-config -# corosync has different package names on distributions but all provide -# corosync-devel -# corosync and pacemaker need versions and it's not working in virtual provides -BuildRequires: corosync-devel >= 3.0 -BuildRequires: pacemaker-libs-devel >= %{required_pacemaker_version} -BuildRequires: pkgconfig(booth) -BuildRequires: pkgconfig(corosync-qdevice) -BuildRequires: pkgconfig(sbd) - -# for validating cockpit-ha-cluster metainfo -BuildRequires: libappstream-glib +# for post, preun and postun macros +BuildRequires: systemd +# for tests +BuildRequires: python3-lxml +BuildRequires: python3-pyOpenSSL +# pcsd fonts and font management tools for creating symlinks to fonts +BuildRequires: fontconfig +BuildRequires: liberation-sans-fonts +BuildRequires: overpass-fonts +# for building web ui +BuildRequires: npm # python and libraries for pcs, setuptools for pcs entrypoint -Requires: python3-cryptography +Requires: python3 >= 3.6 Requires: python3-dateutil >= 2.7.0 Requires: python3-lxml +Requires: python3-setuptools +Requires: python3-clufter => 0.70.0 Requires: python3-pycurl Requires: python3-pyparsing Requires: python3-tornado # ruby and gems for pcsd -Requires: ruby >= 3.3.0 +Requires: ruby >= 2.2.0 Requires: rubygem-backports -Requires: rubygem-childprocess Requires: rubygem-ethon Requires: rubygem-ffi Requires: rubygem-json -Requires: rubygem-mustermann -Requires: rubygem-puma -Requires: (rubygem(rack) < 3 or (rubygem(rack) >= 3 and rubygem(rackup))) +Requires: rubygem-open4 +Requires: rubygem-rack Requires: rubygem-rack-protection +Requires: rubygem-rack-test Requires: rubygem-sinatra Requires: rubygem-tilt -%if 0%{?fedora} || 0%{?rhel} >= 9 -Requires: rubygem(rexml) -%endif +# ruby and gems for pcsd-ruby +Requires: rubygem-daemons +Requires: rubygem-eventmachine +Requires: rubygem-thin # for killall Requires: psmisc +# for working with certificates (validation etc.) +Requires: openssl +Requires: python3-pyOpenSSL # cluster stack and related packages -Requires: pcmk-cluster-manager >= %{required_pacemaker_version} Suggests: pacemaker -Requires: (corosync >= 3.0 if pacemaker) +Requires: (corosync >= 2.99 if pacemaker) # pcs enables corosync encryption by default so we require libknet1-plugins-all Requires: (libknet1-plugins-all if corosync) -Requires: pacemaker-cli >= %{required_pacemaker_version} +Requires: pacemaker-cli >= 2.0.0 +# for post, preun and postun macros +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd # pam is used for authentication inside daemon (python ctypes) # more details: https://bugzilla.redhat.com/show_bug.cgi?id=1717113 Requires: pam -# needs logrotate for /etc/logrotate.d/pcsd -Requires: logrotate -# for working with qdevice certificates (certutil) -Requires: nss-tools - +# pcsd fonts +Requires: liberation-sans-fonts +Requires: overpass-fonts Provides: bundled(dacite) = %{dacite_version} +Provides: bundled(ember) = %{ember_version} +Provides: bundled(handlebars) = %{handlebars_version} +Provides: bundled(jquery) = %{jquery_version} +Provides: bundled(jquery-ui) = %{jquery_ui_version} -# pcs-snmp subpackage definition -%package -n %{pkg_pcs_snmp} -Group: System Environment/Base +%description +pcs is a corosync and pacemaker configuration tool. It permits users to +easily view, modify and create pacemaker based clusters. + +# pcs-snmp package definition +%package -n %{pcs_snmp_pkg_name} Summary: Pacemaker cluster SNMP agent # https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses -# GPL-2.0-only: pcs +# GPLv2: pcs # BSD-2-Clause: pyagentx -License: GPL-2.0-only AND BSD-2-Clause +License: GPLv2 and BSD-2-Clause URL: https://github.com/ClusterLabs/pcs -BuildArch: noarch -# tar for unpacking pyagentx source tarball +# tar for unpacking pyagetx source tar ball BuildRequires: tar Requires: pcs = %{version}-%{release} @@ -224,60 +168,12 @@ Requires: net-snmp Provides: bundled(pyagentx) = %{pyagentx_version} -# pcs-web-ui subpackage definition -%package -n %{pkg_pcs_web_ui} -Summary: Standalone web UI for Pacemaker/Corosync Configuration System -# https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/ -# https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses -# GPL-2.0-only: pcs -License: GPL-2.0-only -URL: https://github.com/ClusterLabs/pcs-web-ui - -# Split pcs to pcs and pcs-web-ui, all packages that replace pcs must obsolete -# the old monolithic package -# https://docs.fedoraproject.org/en-US/packaging-guidelines/#_one_to_many_replacement -Obsoletes: pcs < 0.12.0 - -Requires: pcs = %{version}-%{release} - -Provides: bundled(pcs-web-ui) = %{!?ui_tarball_version:%{ui_version}}%{?ui_tarball_version} - -# cockpit-ha-cluster subpackage definition -%package -n %{pkg_cockpit_ha_cluster} -Group: System Environment/Base -Summary: Cockpit application for managing Pacemaker based clusters -License: GPL-2.0-only AND CC0-1.0 -URL: https://github.com/ClusterLabs/pcs-web-ui - -BuildRequires: make -BuildRequires: nodejs-npm - -Requires: pcs = %{version}-%{release} -Requires: cockpit-bridge - -Provides: bundled(pcs-web-ui) = %{!?ui_tarball_version:%{ui_version}}%{?ui_tarball_version} - - - -%description -pcs is a configuration tool for Corosync and Pacemaker. It permits users to -easily view, modify and create high availability clusters based on Pacemaker. -This package contains the pcs command-line utility and its server pcsd. - -%description -n %{pkg_pcs_web_ui} -Provides standalone web UI for Pacemaker/Corosync Configuration System (pcs). - -%description -n %{pkg_pcs_snmp} -SNMP agent that provides information about Pacemaker cluster to the main agent -(snmpd). - -%description -n %{pkg_cockpit_ha_cluster} -Cockpit application for managing Pacemaker based clusters. Uses -Pacemaker/Corosync Configuration System (pcs) in the background. - - +%description -n %{pcs_snmp_pkg_name} +SNMP agent that provides information about pacemaker cluster to the master agent (snmpd) %prep +%autosetup -p1 -S git -n %{pcs_source_name} + # -- following is inspired by python-simplejon.el5 -- # Update timestamps on the files touched by a patch, to avoid non-equal # .pyc/.pyo files across the multilib peers within a build @@ -294,11 +190,7 @@ update_times(){ unset file_list[0] for fname in ${file_list[@]}; do - # some files could be deleted by a patch therefore we test file for - # existance before touch to avoid exit with error: No such file or - # directory - # diffstat cannot create list of files without deleted files - test -e $fname && touch -r $reference_file $fname + touch -r $reference_file $fname done } @@ -317,113 +209,59 @@ update_times_patch(){ update_times ${patch_file_name} `diffstat -p1 -l ${patch_file_name}` } -# documentation for setup/autosetup/autopatch: -# * http://ftp.rpm.org/max-rpm/s1-rpm-inside-macros.html -# * https://rpm-software-management.github.io/rpm/manual/autosetup.html -# patch web-ui sources -# -n — Set Name of Build Directory -# -T — Do Not Perform Default Archive Unpacking -# -b — Unpack The nth Sources Before Changing Directory -# -a — Unpack The nth Sources After Changing Directory -# -N — disables automatic patch application, use autopatch to apply patches -# -# 1. unpack sources (-b 0) -# 2. then cd into sources tree (the setup macro itself) -# 3. then unpack node_modules into sources tree (-a 1). -%autosetup -T -b 100 -a 101 -N -n %{ui_src_name} -%autopatch -p1 -m 201 -# update_times_patch %%{PATCH201} +# update_times_patch %%{PATCH0} -# patch pcs sources -%autosetup -S git -n %{pcs_source_name} -N -%autopatch -p1 -M 200 -# update_times_patch %%{PATCH1} -update_times_patch %{PATCH1} -update_times_patch %{PATCH2} -update_times_patch %{PATCH3} +# prepare dirs/files necessary for building web ui +# inside SOURCE100 is only directory %%{ui_src_name} +tar -xzf %SOURCE100 -C %{pcsd_public_dir} +tar -xf %SOURCE101 -C %{pcsd_public_dir}/%{ui_src_name} -# generate .tarball-version if building from an untagged commit, not a released version -# autogen uses git-version-gen which uses .tarball-version for generating version number -%if 0%{?tarball_version:1} - echo %{tarball_version} > %{_builddir}/%{pcs_source_name}/.tarball-version -%endif - -%if 0%{?ui_tarball_version:1} - echo %{ui_tarball_version} > %{_builddir}/%{ui_src_name}/.tarball-version -%endif - -# prepare dirs/files necessary for building python bundles -mkdir -p %{pcs_bundled_dir}/src -cp -f %SOURCE41 rpm/ -cp -f %SOURCE42 rpm/ +# 3) dir for python bundles +mkdir -p %{bundled_src_dir} +# 4) sources for pyagentx +tar -xzf %SOURCE41 -C %{bundled_src_dir} +mv %{bundled_src_dir}/pyagentx-%{pyagentx_version} %{bundled_src_dir}/pyagentx +update_times %SOURCE41 `find %{bundled_src_dir}/pyagentx -follow` +cp %{bundled_src_dir}/pyagentx/LICENSE.txt pyagentx_LICENSE.txt +cp %{bundled_src_dir}/pyagentx/CONTRIBUTORS.txt pyagentx_CONTRIBUTORS.txt +cp %{bundled_src_dir}/pyagentx/README.md pyagentx_README.md +# 7) sources for python dacite +tar -xzf %SOURCE44 -C %{bundled_src_dir} +mv %{bundled_src_dir}/dacite-%{dacite_version} %{bundled_src_dir}/dacite +cp %{bundled_src_dir}/dacite/LICENSE dacite_LICENSE +cp %{bundled_src_dir}/dacite/README.md dacite_README.md %build %define debug_package %{nil} -# We left off by setting up pcs, so we are in its directory now -./autogen.sh -%{configure} --enable-local-build --enable-use-local-cache-only \ - --enable-individual-bundling --enable-webui \ - --with-pcsd-default-cipherlist='PROFILE=SYSTEM' \ - --with-pcs-lib-dir="%{_prefix}/lib" PYTHON=%{__python3} -make all - -# Web UI installation -# Switch to web ui folder first -cd ../%{ui_src_name} -./autogen.sh -%{configure} \ - --with-pcsd-webui-dir=%{pcsd_webui_dir} \ - --with-cockpit-dir=%{cockpit_dir} \ - --with-metainfo-dir=%{metainfo_dir} -make all - - - %install -rm -rf %{buildroot} +rm -rf $RPM_BUILD_ROOT pwd -# Install cockpit pcs-web-ui -cd ../%{ui_src_name} -%make_install - -# prepare pcs-web-ui files (not needed for pcs as pcs installs them in Makefile) -mkdir -p %{buildroot}/%{_defaultlicensedir}/%{pkg_cockpit_ha_cluster} -mkdir -p %{buildroot}/%{_defaultlicensedir}/%{pkg_pcs_web_ui} - -cp COPYING %{buildroot}/%{_defaultlicensedir}/%{pkg_cockpit_ha_cluster}/COPYING_WUI.md -mv COPYING %{buildroot}/%{_defaultlicensedir}/%{pkg_pcs_web_ui}/COPYING_WUI.md - -mkdir -p %{buildroot}/%{_docdir}/%{pkg_cockpit_ha_cluster} -mkdir -p %{buildroot}/%{_docdir}/%{pkg_pcs_web_ui} - -cp CHANGELOG.md %{buildroot}/%{_docdir}/%{pkg_cockpit_ha_cluster}/CHANGELOG_WUI.md -mv CHANGELOG.md %{buildroot}/%{_docdir}/%{pkg_pcs_web_ui}/CHANGELOG_WUI.md - -cp README.md %{buildroot}/%{_docdir}/%{pkg_cockpit_ha_cluster}/README_WUI.md -mv README.md %{buildroot}/%{_docdir}/%{pkg_pcs_web_ui}/README_WUI.md - -# Install pcs -cd ../%{pcs_source_name} -%make_install - -# prepare license files -cp %{pcs_bundled_dir}/src/pyagentx-*/LICENSE.txt pyagentx_LICENSE.txt -cp %{pcs_bundled_dir}/src/pyagentx-*/CONTRIBUTORS.txt pyagentx_CONTRIBUTORS.txt -cp %{pcs_bundled_dir}/src/pyagentx-*/README.md pyagentx_README.md - -cp %{pcs_bundled_dir}/src/dacite-*/LICENSE dacite_LICENSE -cp %{pcs_bundled_dir}/src/dacite-*/README.md dacite_README.md - +# build web ui and put it to pcsd +make -C %{pcsd_public_dir}/%{ui_src_name} build +mv %{pcsd_public_dir}/%{ui_src_name}/build pcsd/public/ui +rm -r %{pcsd_public_dir}/%{ui_src_name} +# main pcs install +%make_install \ + PREFIX=%{_prefix} \ + SYSTEMD_UNIT_DIR=%{_unitdir} \ + LIB_DIR=%{pcs_libdir} \ + PYTHON=%{__python3} \ + PYTHON_SITELIB=%{python3_sitelib} \ + BASH_COMPLETION_DIR=%{_datadir}/bash-completion/completions \ + BUNDLE_PYAGENTX_SRC_DIR=`readlink -f %{bundled_src_dir}/pyagentx` \ + BUNDLE_DACITE_SRC_DIR=`readlink -f %{bundled_src_dir}/dacite` \ + BUILD_GEMS=false \ + SYSTEMCTL_OVERRIDE=true \ + hdrdir="%{_includedir}" \ + rubyhdrdir="%{_includedir}" \ + includedir="%{_includedir}" %check -# Run validation of cockpit metainfo -appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/%{ui_metainfo_name} - # In the building environment LC_CTYPE is set to C which causes tests to fail # due to python prints a warning about it to stderr. The following environment # variable disables the warning. @@ -439,17 +277,20 @@ run_all_tests(){ # disabled tests: # - %{__python3} pcs_test/suite --tier0 -v --vanilla --all-but \ - pcs_test.tier0.daemon.app.test_app_remote.SyncConfigMutualExclusive.test_get_not_locked \ - pcs_test.tier0.daemon.app.test_app_remote.SyncConfigMutualExclusive.test_post_not_locked \ + BUNDLED_LIB_LOCATION=$RPM_BUILD_ROOT%{pcs_libdir}/pcs/bundled/packages \ + %{__python3} pcs_test/suite.py --tier0 -v --vanilla --all-but \ + pcs_test.tier0.daemon.app.test_app_remote.SyncConfigMutualExclusive.test_get_not_locked \ + pcs_test.tier0.daemon.app.test_app_remote.SyncConfigMutualExclusive.test_post_not_locked \ test_result_python=$? #run pcsd tests and remove them + pcsd_dir=$RPM_BUILD_ROOT%{pcs_libdir}/pcsd + # GEM_HOME is not needed anymore since all required gems are in fedora ruby \ - -I%{buildroot}%{_prefix}/lib/pcsd \ - -Ipcsd/test \ - pcsd/test/test_all_suite.rb + -I${pcsd_dir} \ + -I${pcsd_dir}/test \ + ${pcsd_dir}/test/test_all_suite.rb test_result_ruby=$? if [ $test_result_python -ne 0 ]; then @@ -458,33 +299,45 @@ run_all_tests(){ return $test_result_ruby } +remove_all_tests() { + pcsd_dir=$RPM_BUILD_ROOT%{pcs_libdir}/pcsd + #remove pcsd tests, we do not distribute them in the rpm + rm -r -v ${pcsd_dir}/test + + # remove javascript testing files + rm -r -v ${pcsd_dir}/public/js/dev +} + run_all_tests +remove_all_tests - -# Mark pcsd and pcs_snmp_agent for restart after upgrade %posttrans -%systemd_posttrans_with_restart pcsd.service +# Make sure the new version of the daemon is runnning. +# Also, make sure to start pcsd-ruby if it hasn't been started or even +# installed before. This is done by restarting pcsd.service. +%{_bindir}/systemctl daemon-reload +%{_bindir}/systemctl try-restart pcsd.service -%posttrans -n %{pkg_pcs_snmp} -%systemd_posttrans_with_restart pcs_snmp_agent.service +%post +%systemd_post pcsd.service +%systemd_post pcsd-ruby.service -# Restart pcsd if it is running to reload the Tornado app so it detects -# presence or absence of the webui backend handler on install/update -# of pcs-web-ui that contains it -# Systemd will not pick-up on this change because pcs-web-ui doesn't contain -# a unit file that would mark it for restart -# https://fedoraproject.org/wiki/Changes/Restart_services_at_end_of_rpm_transaction -%posttrans -n %{pkg_pcs_web_ui} -systemctl try-restart pcsd.service +%post -n %{pcs_snmp_pkg_name} +%systemd_post pcs_snmp_agent.service -# Runs only on pcs-web-ui uninstall -# https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/ -%postun -n %{pkg_pcs_web_ui} -if [ $1 -eq 0 ] ; then - systemctl try-restart pcsd.service -fi +%preun +%systemd_preun pcsd.service +%systemd_preun pcsd-ruby.service +%preun -n %{pcs_snmp_pkg_name} +%systemd_preun pcs_snmp_agent.service +%postun +%systemd_postun_with_restart pcsd.service +%systemd_postun_with_restart pcsd-ruby.service + +%postun -n %{pcs_snmp_pkg_name} +%systemd_postun_with_restart pcs_snmp_agent.service %files %doc CHANGELOG.md @@ -492,17 +345,18 @@ fi %doc dacite_README.md %license dacite_LICENSE %license COPYING -%{python3_sitelib}/* -%{_bindir}/pcs -%{_bindir}/pcsd -%{_prefix}/lib/pcs/* -%{_prefix}/lib/pkgconfig/pcs.pc -%{_prefix}/lib/pcsd/* +%{python3_sitelib}/pcs +%{python3_sitelib}/pcs-%{version}-py3.*.egg-info +%{_sbindir}/pcs +%{_sbindir}/pcsd +%{pcs_libdir}/pcs/pcs_internal +%{pcs_libdir}/pcsd/* +%{pcs_libdir}/pcs/bundled/packages/dacite* %{_unitdir}/pcsd.service %{_unitdir}/pcsd-ruby.service %{_datadir}/bash-completion/completions/pcs %{_sharedstatedir}/pcsd -%config(noreplace) %{_sysconfdir}/pam.d/pcsd +%{_sysconfdir}/pam.d/pcsd %dir %{_var}/log/pcsd %config(noreplace) %{_sysconfdir}/logrotate.d/pcsd %config(noreplace) %{_sysconfdir}/sysconfig/pcsd @@ -515,25 +369,22 @@ fi %ghost %config(noreplace) %attr(0644,root,root) %{_sharedstatedir}/pcsd/pcs_users.conf %{_mandir}/man8/pcs.* %{_mandir}/man8/pcsd.* -%exclude %{_prefix}/lib/pcs/pcs_snmp_agent -%exclude %{_prefix}/lib/pcs/%{pcs_bundled_dir}/packages/pyagentx* -%exclude %{cockpit_dir} -%exclude %{ui_metainfo} -%exclude %{python3_sitelib}/pcs/daemon/app/webui -%exclude %{pcsd_webui_dir} +%exclude %{pcs_libdir}/pcsd/*.debian +%exclude %{pcs_libdir}/pcsd/Gemfile +%exclude %{pcs_libdir}/pcsd/Gemfile.lock +%exclude %{pcs_libdir}/pcsd/Makefile +%exclude %{pcs_libdir}/pcsd/pcsd.conf +%exclude %{pcs_libdir}/pcsd/pcsd.service +%exclude %{pcs_libdir}/pcsd/pcsd-ruby.service +%exclude %{pcs_libdir}/pcsd/pcsd.8 +%exclude %{pcs_libdir}/pcsd/public/js/dev/* +%exclude %{python3_sitelib}/pcs/bash_completion +%exclude %{python3_sitelib}/pcs/pcs.8 +%exclude %{python3_sitelib}/pcs/pcs -%files -n %{pkg_pcs_web_ui} -%doc CHANGELOG.md -%doc %{_docdir}/%{pkg_pcs_web_ui}/CHANGELOG_WUI.md -%doc %{_docdir}/%{pkg_pcs_web_ui}/README_WUI.md -%license COPYING -%license %{_defaultlicensedir}/%{pkg_pcs_web_ui}/COPYING_WUI.md -%{python3_sitelib}/pcs/daemon/app/webui -%{pcsd_webui_dir} - -%files -n %{pkg_pcs_snmp} -%{_prefix}/lib/pcs/pcs_snmp_agent -%{_prefix}/lib/pcs/%{pcs_bundled_dir}/packages/pyagentx* +%files -n %{pcs_snmp_pkg_name} +%{pcs_libdir}/pcs/pcs_snmp_agent +%{pcs_libdir}/pcs/bundled/packages/pyagentx* %{_unitdir}/pcs_snmp_agent.service %{_datadir}/snmp/mibs/PCMK-PCS*-MIB.txt %{_mandir}/man8/pcs_snmp_agent.* @@ -544,206 +395,18 @@ fi %license COPYING %license pyagentx_LICENSE.txt -%files -n %{pkg_cockpit_ha_cluster} -%doc %{_docdir}/%{pkg_cockpit_ha_cluster}/CHANGELOG_WUI.md -%doc %{_docdir}/%{pkg_cockpit_ha_cluster}/README_WUI.md -%license %{_defaultlicensedir}/%{pkg_cockpit_ha_cluster}/COPYING_WUI.md -%{cockpit_dir} -%{ui_metainfo} - - - %changelog -* Fri Sep 19 2025 Python Maint - 0.12.1-5 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 0.12.1-4 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Wed Jul 30 2025 Michal Pospíšil - 0.12.1-3 -- Remove BuildRequires: python3-wheel when using setuptools 71+ - -* Fri Jul 25 2025 Fedora Release Engineering - 0.12.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jul 18 2025 Michal Pospíšil - 0.12.1-1 -- Rebased pcs to the newest major version (see CHANGELOG.md) - Resolves: rhbz#2371770 -- Updated standalone web UI and HA Cluster Management Cockpit application to pcs-web-ui 0.1.23 (see CHANGELOG_WUI.md) -- There is now a changelog for the HA Cluster Management Cockpit application and the standalone web UI in both packages -- The upstream version of pcs-web-ui can now be queried through RPM in both packages - see bundled(pcs-web-ui) -- Updated bundled Python dependency dacite -- Compatibility with rubygem-rack >= 3 - Resolves: rhbz#2372462 - -* Tue Jun 03 2025 Python Maint - 0.12.0-2 -- Rebuilt for Python 3.14 - -* Mon Jan 27 2025 Michal Pospíšil - 0.12.0-1 -- Rebased pcs to the newest major version (see CHANGELOG.md) - Resolves: rhbz#2341012 -- New subpackage pcs-web-ui - enables standalone web UI when the subpackage is installed on the system (default), uninstall the subpackage to disable the web UI -- Updated standalone web UI and HA Cluster Management Cockpit application to pcs-web-ui 0.1.22 -- Fixes for compatibility with Ruby 3.4 - Resolves: rhbz#2331005 - -* Fri Jan 17 2025 Fedora Release Engineering - 0.11.8-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Tue Aug 6 2024 Michal Pospíšil - 0.11.8-1 -- Rebased to the latest sources (see CHANGELOG.md) -- Updated pcs-web-ui to 0.1.20 - -* Thu Jul 18 2024 Fedora Release Engineering - 0.11.7-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sun Jun 09 2024 Python Maint - 0.11.7-4 -- Rebuilt for Python 3.13 - -* Mon Feb 5 2024 Michal Pospisil - 0.11.7-3 -- Fixed a bug preventing the Cockpit Application from being installed from Cockpit - -* Thu Jan 25 2024 Fedora Release Engineering - 0.11.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 8 2024 Michal Pospisil - 0.11.7-1 -- Rebased to the latest upstream sources (see CHANGELOG.md) -- Updated pcs-web-ui to 0.1.18 -- TLS cipher setting in pcsd now follows system-wide crypto policies by default -- Added cockpit-ha-cluster subpackage that adds pcs-web-ui as a Cockpit application - -* Thu Jul 20 2023 Fedora Release Engineering - 0.11.6-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Wed Jun 28 2023 Python Maint - 0.11.6-2 -- Rebuilt for Python 3.12 - -* Wed Jun 21 2023 Michal Pospisil - 0.11.6-1 -- Rebased to the latest upstream sources (see CHANGELOG.md) -- Updated pcs-web-ui -- Removed dependency fedora-logos - favicon is now correctly provided by pcs-web-ui -- Resolves: rhbz#2109852 rhbz#2170648 - -* Wed Apr 12 2023 Michal Pospisil - 0.11.5-2 -- Fix displaying differences between configuration checkpoints in “pcs config checkpoint diff” command -- Fix “pcs stonith update-scsi-devices” command which was broken since Pacemaker-2.1.5-rc1 -- Fixed loading of cluster status in the web interface when fencing levels are configured -- Fixed a vulnerability in pcs-web-ui-node-modules -- Swapped BuildRequires: npm for BuildRequires: nodejs-npm in Fedora 37 because of NodeJS packaging change -- Removed BuildRequires: rubygem-io-console -- Removed dependency rubygem-eventmachine - -* Thu Feb 16 2023 Michal Pospisil - 0.11.5-1 -- Rebased to the latest upstream sources (see CHANGELOG.md) -- Fixed broken filtering in create resource/fence device wizards in the web interface -- Converted package to noarch -- Added creation of .tarball-version file needed by autotools when building from untagged commits and fixed Source0 link to the tarball on GitHub -- Modified build options of pcs for booth authfile fix for all Fedora versions -- Added BuildRequires: pam for tier0 tests during build -- Added BuildRequires: nodejs-npm for NodeJS packaging change since Fedora 38 -- Removed bundled rubygem thin and its associated BuildRequires: rubygems, rubygem-bundler, rubygem-daemons, gcc, gcc-c++ -- Added dependency rubygem-puma - replacement for rubygem thin -- Added dependency nss-tools - for working with qdevice certificates -- Added dependency fedora-logos - for the web interface favicon -- Removed dependencies: rubygem-daemons, rubygem(webrick) -- Resolves: rhbz#2166266 - -* Thu Jan 19 2023 Fedora Release Engineering - 0.11.4-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Wed Jan 04 2023 Mamoru TASAKA - 0.11.4-2 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2 -- Workaround for dnf dependency resolution confusion between nodejs16 vs nodejs -- Workaround for find-debuginfo.sh failure wrt ruby3.2 gem install change - -* Mon Dec 12 2022 Michal Pospisil - 0.11.4-1 -- Rebased to latest upstream sources (see CHANGELOG.md) -- Updated pcs-web-ui -- Added dependency rubygem-childprocess -- Removed dependency rubygem-open4 - -* Mon Dec 12 2022 Mamoru TASAKA - 0.11.3-5 -- Backport upstream patch for rubygem-json 2.6.3 error message format change - -* Wed Sep 07 2022 Miroslav Lisik - 0.11.3-4 -- Fixed ruby socket permissions -- Resolves: rhbz#2123389 - -* Fri Jul 22 2022 Fedora Release Engineering - 0.11.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Tue Jul 19 2022 Zbigniew Jędrzejewski-Szmek - 0.11.3-2 -- Rebuilt for pyparsing-3.0.9 - -* Tue Jun 28 2022 Miroslav Lisik - 0.11.3-1 -- Rebased to latest upstream sources (see CHANGELOG.md) -- Updated pcs-web-ui -- Resolves: rhbz#2068452 - -* Tue Jun 14 2022 Python Maint - 0.11.2-3 -- Rebuilt for Python 3.11 - -* Thu Jun 09 2022 Miroslav Lisik - 0.11.2-2 -- Python 3.11 related fixes -- Resolves: rhbz#bz2093935 - -* Fri Feb 04 2022 Miroslav Lisik - 0.11.2-1 -- Rebased to latest upstream sources (see CHANGELOG.md) -- Updated pcs-web-ui -- Removed old web gui - -* Thu Jan 27 2022 Vít Ondruch - 0.10.11-3 -- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_3.1 - -* Thu Jan 20 2022 Fedora Release Engineering - 0.10.11-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Tue Oct 05 2021 Miroslav Lisik - 0.10.11-1 -- Rebased to latest upstream sources (see CHANGELOG.md) -- Updated pcs-web-ui -- Stop bundling rubygems daemons eventmachine mustermann rack rack-protection ruby2_keywords sinatra tilt - -* Mon Aug 16 2021 Miroslav Lisik - 0.10.9-1 -- Rebased to latest upstream sources (see CHANGELOG.md) -- Updated pcs-web-ui -- Bundle rubygem-sinatra, rubygem-thin and their dependencies because they were orphaned -- Resolves: rhbz#1983359 - -* Thu Jul 22 2021 Fedora Release Engineering - 0.10.8-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Fri Jun 04 2021 Python Maint - 0.10.8-3 -- Rebuilt for Python 3.10 - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 0.10.8-2 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - * Thu Feb 04 2021 Miroslav Lisik - 0.10.8-1 - Rebased to latest upstream sources (see CHANGELOG.md) - Updated pcs-web-ui - Updated bundled python dependency: dacite - Changed BuildRequires from git to git-core -- Added conditional (Build)Requires: rubygem(rexml) -- Added conditional Requires: rubygem(webrick) - -* Tue Jan 26 2021 Fedora Release Engineering - 0.10.7-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Thu Jan 7 2021 Vít Ondruch - 0.10.7-3 -- Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_3.0 - -* Thu Nov 26 2020 Ondrej Mular - 0.10.7-2 -- Python 3.10 related fix +- Added BuildRequires: make * Wed Sep 30 2020 Miroslav Lisik - 0.10.7-1 - Rebased to latest upstream sources (see CHANGELOG.md) - Added dependency on python packages pyparsing and dateutil - Fixed virtual bundle provides for ember, handelbars, jquery and jquery-ui -- Removed dependency on python3-clufter - -* Tue Jul 28 2020 Fedora Release Engineering - 0.10.6-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue Jul 21 2020 Miroslav Lisik - 0.10.6-1 - Rebased to latest upstream sources (see CHANGELOG.md) diff --git a/plan-gating.fmf b/plan-gating.fmf deleted file mode 100644 index 78d1116..0000000 --- a/plan-gating.fmf +++ /dev/null @@ -1,32 +0,0 @@ -summary: PCS gating test plan -description: Runs upstream tier0, tier1 and smoke tests - -discover: - dist-git-source: true - dist-git-install-builddeps: true - how: shell - tests: - - name: tier0 - test: | - ./prepare-tests.sh - $TMT_SOURCE_DIR/pcs-*/pcs_test/suite --tier0 -v --vanilla --installed - duration: 10m - tier: 0 - tag: fast - - name: tier1 - test: | - ./prepare-tests.sh - $TMT_SOURCE_DIR/pcs-*/pcs_test/suite --tier1 -v --vanilla --installed - duration: 2h - tier: 1 - - name: smoke - test: | - systemctl start pcsd - ./prepare-tests.sh - $TMT_SOURCE_DIR/pcs-*/pcs_test/smoke.sh - duration: 10m - tier: smoke - tag: fast - -execute: - how: tmt diff --git a/prepare-tests.sh b/prepare-tests.sh deleted file mode 100755 index aeb9a8b..0000000 --- a/prepare-tests.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -set -eo xtrace -cd $TMT_SOURCE_DIR -# Use stamp file to abort if this script already ran -if [ -e tests-prepared-stamp ]; then exit 0; fi -# RPM 4.20 changed the builddir structure - unpacked sources go to *-build but -# tmt copies them back to pcs-*, so the pcs-*-build folder is empty -# Remove pcs-web-ui, pcs-*-build for "cd pcs-*" to have exactly one match -rm -rf pcs-web-ui-* pcs-*-build -cd pcs-*/ -# Run autotools, use bundled dependencies from the system -export PYTHONPATH=/usr/lib/pcs/pcs_bundled/packages/ -export GEM_HOME=/usr/lib/pcsd/vendor/bundle/ -# We need to use cd pcs-* because when pcs-web-ui starts using autotools, running -# autogen and configure with expanded TMT_SOURCE_DIR will match that too -./autogen.sh -./configure --enable-webui --enable-local-build --enable-use-local-cache-only \ - --enable-individual-bundling --with-pcs-lib-dir=/usr/lib -# Remove pcs sources to make sure tests are not using any of those files -rm -rf pcs -touch ../tests-prepared-stamp diff --git a/rpminspect.yaml b/rpminspect.yaml deleted file mode 100644 index aab6587..0000000 --- a/rpminspect.yaml +++ /dev/null @@ -1,8 +0,0 @@ -xml: - # exclude ruby templates from checks - exclude_path: .*\.erb$ - -shellsyntax: - # exclude ruby templates from checks - ignore: - - /usr/lib*/pcsd/vendor/bundle/gems/thin*/lib/thin/controllers/*.erb diff --git a/show-info-page-instead-of-webui.patch b/show-info-page-instead-of-webui.patch deleted file mode 100644 index 9125cd1..0000000 --- a/show-info-page-instead-of-webui.patch +++ /dev/null @@ -1,148 +0,0 @@ -From e7fa056f582c992d3d2b289911be20440fb839ac Mon Sep 17 00:00:00 2001 -From: Ivan Devat -Date: Tue, 5 Nov 2024 16:35:02 +0100 -Subject: [PATCH 1/2] show info page instead of webui - ---- - pcs/Makefile.am | 1 + - pcs/daemon/app/webui_info_handler.py | 31 ++++++++++++++++++++++++++++ - pcs/daemon/run.py | 4 +++- - pcs_test/smoke.sh.in | 4 ++-- - pcsd/public/ui_instructions.html | 24 ++++++++++----------- - 5 files changed, 48 insertions(+), 16 deletions(-) - create mode 100644 pcs/daemon/app/webui_info_handler.py - -diff --git a/pcs/Makefile.am b/pcs/Makefile.am -index 1297473ff..8d4b93073 100644 ---- a/pcs/Makefile.am -+++ b/pcs/Makefile.am -@@ -219,6 +219,7 @@ EXTRA_DIST = \ - daemon/app/webui/core.py \ - daemon/app/webui/session.py \ - daemon/app/webui/sinatra_ui.py \ -+ daemon/app/webui_info_handler.py \ - daemon/async_tasks/__init__.py \ - daemon/async_tasks/scheduler.py \ - daemon/async_tasks/task.py \ -diff --git a/pcs/daemon/app/webui_info_handler.py b/pcs/daemon/app/webui_info_handler.py -new file mode 100644 -index 000000000..3ab8275bf ---- /dev/null -+++ b/pcs/daemon/app/webui_info_handler.py -@@ -0,0 +1,31 @@ -+from pcs.daemon.app.common import ( -+ BaseHandler, -+ RoutesType, -+) -+ -+ -+class _WebuiInfoHandler(BaseHandler): -+ __path = None -+ -+ def initialize(self, path): -+ self.__path = path -+ -+ def get(self): -+ self.set_status(404) -+ self.render(self.__path) -+ -+ -+def get_routes(path: str) -> RoutesType: -+ return [ -+ # The following two rules can be compressed into one: r"/(ui/?)?". -+ # However, the content of the parentheses used here should be captured -+ # and passed in to the handler’s get method as an argument. -+ # Unfortunately, it seems that tornado version 6.4.1 don't pass this -+ # argument (unlike version 6.3.3). Maybe it's a bug (it needs further -+ # inspection). These rules are a safe way to avoid surprises. -+ # Moreover, the captured parameter is irrelevant to the functionality -+ # of the handler. -+ (r"/", _WebuiInfoHandler, dict(path=path)), -+ (r"/ui/?", _WebuiInfoHandler, dict(path=path)), -+ (r"/ui/.*", _WebuiInfoHandler, dict(path=path)), -+ ] -diff --git a/pcs/daemon/run.py b/pcs/daemon/run.py -index 558315c23..cfe9999fc 100644 ---- a/pcs/daemon/run.py -+++ b/pcs/daemon/run.py -@@ -33,6 +33,7 @@ from pcs.daemon.app import ( - auth, - sinatra_remote, - sinatra_ui, -+ webui_info_handler, - ) - from pcs.daemon.app import capabilities as capabilities_app - -@@ -168,7 +169,8 @@ def configure_app( # noqa: PLR0913 - # Even with disabled (standalone) webui the following routes must be - # provided because they can be used via unix socket from cockpit. - routes.extend( -- sinatra_ui.get_routes(auth_provider, ruby_pcsd_wrapper) -+ webui_info_handler.get_routes(webui_fallback) -+ + sinatra_ui.get_routes(auth_provider, ruby_pcsd_wrapper) - ) - - return Application( -diff --git a/pcs_test/smoke.sh.in b/pcs_test/smoke.sh.in -index fdfe8be2c..a9bb83447 100755 ---- a/pcs_test/smoke.sh.in -+++ b/pcs_test/smoke.sh.in -@@ -71,10 +71,10 @@ if [ "$webui_http_code_response" = "200" ]; then - curl --insecure --cookie ${cookie_file} --header "X-Requested-With: XMLHttpRequest" --data "hidden[hidden_input]=&config[stonith-enabled]=false" https://localhost:2224/managec/${cluster_name}/update_cluster_settings > "${output_file}" - cat "${output_file}"; echo "" - [ "$(cat ${output_file})" = "Update Successful" ] --elif [ "$webui_http_code_response" = "401" ]; then -+elif [ "$webui_http_code_response" = "404" ]; then - curl --insecure https://localhost:2224/ui/ > "${output_file}" - cat "${output_file}"; echo "" -- [ "$(cat "${output_file}")" = '{"notauthorized":"true"}' ] -+ grep "HA cluster management has been moved" "${output_file}" - else - echo "Unexpected response from https://localhost:2224/ui/ - http code: '${webui_http_code_response}'" - exit 1 -diff --git a/pcsd/public/ui_instructions.html b/pcsd/public/ui_instructions.html -index a120ed3d4..b9c1c3152 100644 ---- a/pcsd/public/ui_instructions.html -+++ b/pcsd/public/ui_instructions.html -@@ -1,27 +1,25 @@ - - - -- Pcs WebUI instructions -+ Web UI is disabled - - - --

Pcs WebUI instructions

-+

Package pcs-web-ui is not installed

-

-- WebUI is not a part of pcs repository but it has its own -- repository. -+ Since Fedora 42, pcsd web UI is distributed with pcs as pcs-web-ui -+ package. This
package can be uninstalled to disable the web UI. -

-

-- You can clone WebUI repository -- and build the web application into pcs by: -+ To re-enable pcsd web UI, install the pcs-web-ui RPM package. -

--

--    $ npm install
--    $ npm run build
--    $ mv ./build [/path/to/]pcs/pcsd/public/ui
--  
-

-- For more details, see instructions in -- README.md. -+ Another option is to try pcsd web UI as an application for -+ Cockpit -+ - a web-based
graphical interface for servers. The HA Cluster Management -+ application can be
installed from within the Applications pane in -+ Cockpit or by installing the
cockpit-ha-cluster RPM -+ package. -

- - --- -2.50.1 - diff --git a/sources b/sources index c6784fc..ccc5682 100644 --- a/sources +++ b/sources @@ -1,5 +1,5 @@ SHA512 (pyagentx-0.4.pcs.2.tar.gz) = d4194fec9a3e5fefe3793d49b7fec1feafef294c7e613a06046c2993daeefc5cb39d7c5b2b402ff83e49b2d976953f862264288c758c0be09d997b5323cc558a -SHA512 (dacite-1.9.2.tar.gz) = 69513bc1acd43e45a208ce4b4186072f92d9057a6a88c77d56f21405fbed7964d94fe4f6a37c99754a793caa2bd0584664dfab69169ef0d3564bb09d37769e59 -SHA512 (pcs-0.12.1.tar.gz) = 4f17a8d9c15b8c9208c94a264f5f79f03abc451e3f4ae4ba0fb338055a26407d4961466dd8f3565f6882c2c00f1d6a1ec8fd15dadcb0cf1a5586d37c56c77238 -SHA512 (pcs-web-ui-0.1.23.tar.gz) = 6bc709926f26a02d33fb3865d15a1cf15db51a07dd9b25c63f33277c427c3403c189e2ac5e7adc795b254ad0bdb50f1bc4be70f1385bc8522ca502142d41fc26 -SHA512 (pcs-web-ui-node-modules-0.1.23.tar.xz) = f39dd1fd391f10b874b5fec34da1a2f2496d66b31af736ee1dfc2ef6e0b518efd03053fd00312c84e10a33ffda492e12d48a898a21efb6241e5459828e500e80 +SHA512 (dacite-1.6.0.tar.gz) = 034255f095589d309fe5805413d8b148f430cd20a0de305b7954083b530d516da1d8f3f00ebb5264a8cfb77f2b2a76f1e2d863e78bd191f1d85021c5553815da +SHA512 (pcs-0.10.8.tar.gz) = 8b9ba62279431e481d062e804d24480d2a274d2f4897a82149df6116ff3df2394d97a3ee77a6dee4c563d915bab0142124a8942524fcc4e894912086e865353c +SHA512 (pcs-web-ui-0.1.5.tar.gz) = ec4adf8ca5858c1f1f82e8f58e36864805bedc6dc10674fab83498aff5422a0497703ecd96fda17b4c1f6beffa64fe5a80a82fb4f75b2102fe1a4753a5d057e9 +SHA512 (pcs-web-ui-node-modules-0.1.5.tar.xz) = cf1ef7e9280e7a0e864407e15f33edb98dce72e93d6917b74d5833ba184be248d87f6f309a2667bb2cbba0f33d1afde6a706832473505df87ed65835512da82c diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..f4f86a0 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,62 @@ +- hosts: localhost + tags: + - classic + vars: + # standard-test-basic directory for tests are relative to {{ tenv_workdir }} + tenv_workdir: /var/test + pre_tasks: + - import_role: + name: standard-test-source + vars: + fetch_only: True + - name: Copy files including source to test environment + synchronize: + src: "{{ playbook_dir }}/.." + dest: "{{ tenv_workdir }}" + mode: push + ssh_args: "-o UserKnownHostsFile=/dev/null" + - name: Start pcsd + systemd: + state: started + name: pcsd.service + daemon_reload: yes + + roles: + # roles documentation: + # https://pagure.io/standard-test-roles/blob/master/f/roles/standard-test-source + - role: standard-test-basic + required_packages: + - autoconf + - automake + - make + - rpm-build + - git + - booth-site + - fence-agents-apc + - fence-agents-ipmilan + - fence-agents-scsi + - fence-virt + - pcs + - pcs-snmp + required_services: + - pcsd.service + tests: + # dir: . -> dot means tests dir in distgit + - prepare-source: + dir: ./ + run: rpmbuild -bp {{tenv_workdir}}/*.spec --nodeps --define "_sourcedir {{tenv_workdir}}" --define "_builddir {{tenv_workdir}}/source" + - flatten-source: + dir: ./ + run: shopt -s dotglob; mv {{tenv_workdir}}/source/*/* {{tenv_workdir}}/source + - remove_sources: + dir: ./source + run: rm -rfv pcs + - run_upstream_tier0_tests: + dir: ./source + run: pcs_test/suite.py --tier0 -v --vanilla --installed + - run_upstream_tier1_tests: + dir: ./source + run: pcs_test/suite.py --tier1 -v --vanilla --installed + - run_smoke_tests: + dir: ./source + run: pcs_test/smoke.sh