Compare commits

...
Sign in to create a new pull request.

86 commits

Author SHA1 Message Date
Python Maint
97846a528f Rebuilt for Python 3.14.0rc3 bytecode 2025-09-19 12:36:02 +02:00
Python Maint
267ae8ba0c Rebuilt for Python 3.14.0rc2 bytecode 2025-08-15 13:05:31 +02:00
Michal Pospíšil
2e5063b78a bump release
Forgotten to bump release in previous commit (096aab9).
2025-07-30 18:11:15 +02:00
Michal Pospíšil
096aab967f pcs-0.12.1-3
- Remove BuildRequires: python3-wheel when using setuptools 71+
2025-07-30 12:47:35 +02:00
Fedora Release Engineering
5830580f12 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 00:03:19 +00:00
Michal Pospíšil
8cd0772e80 pcs-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
- Updated bundled Python dependency dacite
2025-07-22 17:56:27 +02:00
Michal Pospíšil
1351fa3026 report pcs-web-ui version and simplify version macros
The original goal was to report the pcs-web-ui upstream version through
rpm to simplify reporting bugs upstream because subpackages inherit the
pcs version from the main package.

When pcs-web-ui is built from unreleased version, I needed a mechanism
to include the git revision in the version string. This mechanism
already existed for generating .tarball-version. I didn't want to
duplicate the code so I moved it to a macro. With this approach I was
also able to simplify conditions for generating .tarball-version file.

On top of that, as I was adding the new tarball_version macro, I noticed
that the if conditions could be simplified by updating the existing
variables instead of using the else branch.
2025-07-22 17:56:27 +02:00
Michal Pospíšil
2f443108e0 add --enable-webui switch to tests
The switch alters the test suite behavior - we want it enabled since we
want pcsd to support webui in standalone mode if the user chooses to
install pcs-web-ui package.
2025-07-22 17:56:27 +02:00
Michal Pospíšil
2cc50341f9 package licenses and docs for pcs-web-ui
Pcs-web-ui added a changelog upstream, so I'm adding it downstream as
well. It turns out that I forgot to package the readme and license
before, so adding them too. In Fedora, I have to copy the files to the
cockpit package and pcs-web-ui package since they both include the
pcs-web-ui upstream code.

For pcs, readme and changelog are installed via automake variable
`dist_doc_DATA` [1] which gets automatically converted to its own target
ran during `make install`. The target installs it to %docdir/%TARNAME
(automake variables). This happens to align with RPM default of
%_docdir/%name (spec macros). This is rendered completely useless as
these later get replaced by RPM anyway. The path is therefore
/usr/share/doc/pcs.

RPM %doc directive has two modes. If there is a relative path, the %doc
directive runs a script that goes into builddir/BUILD/<Source0> and
copies the file to %_docdir. If there is an absolute path, the file is
only marked as a doc file in the RPM database. The same goes for
%license directive, except for it getting copied to %_defaultlicensedir.
[2][3]

The problem arises for pcs-web-ui files as they neither come from the
pcs tarball nor are to be owned by the pcs package. Additionally, the
package name changes for different downstreams. Because the package name
changes, it is not desirable to install the files in the upstream
Makefile which is not aware of RPM package names. I made a decision to
handle file copying entirely in the specfile for these reasons. It seems
like for relative paths, RPM searches the Source0 tarball, but ours are
located in Source100. Therefore, I explicitly used %_docdir and
%_defaultlicensedir in %install and %files.

[1]: https://www.gnu.org/software/automake/manual/html_node/amhello_0027s-Makefile_002eam-Setup-Explained.html
[2]: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/
[3]: https://web.archive.org/web/20160927094629/https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s05s03.html
2025-07-22 17:56:27 +02:00
Michal Pospíšil
959addae3b use virtual provides for rack and rackup
This fixes commit 825b175. Dnf5 cannot resolve the rpm name for some
reason. Switching to virtual provides rubygem(rack) instead of
rubygem-rack solves the issue. As a troubleshooting attempt, I also
tried a different approach to declaring the dependency with "and" and
"or". This provides a more complete picture and is less hacky than the
if boolean dependency [1].

This might have something to do with how provides are defined:
rpm -qP -p ./rubygem-rack-3.1.16-1.fc43.noarch.rpm
rubygem(rack) = 3.1.16
rubygem-rack = 1:3.1.16-1.fc43

[1] https://rpm-software-management.github.io/rpm/manual/boolean_dependencies.html
2025-07-22 17:51:40 +02:00
Michal Pospíšil
825b1756ac depend on rackup with rack 3+
Since rack 3, rack handlers were moved to a new gem called rackup. As
a part of update to rack 3 in Fedora, a new package rubygem-rackup is
included [1]. No upstream changes are needed, we already have a
mechanism to require rackup when rack >= 3.

Resolves: rhbz#2372462

[1] https://bugzilla.redhat.com/show_bug.cgi?id=2338474
2025-07-18 19:08:01 +02:00
Michal Pospíšil
db939b8274 fix URL of pcs-web-ui package 2025-07-18 17:19:31 +02:00
Python Maint
0ab16a578c Rebuilt for Python 3.14 2025-06-03 23:35:19 +02:00
Michal Pospíšil
c3de7d7354 - 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

- Support tilde in version - for correct sorting of prerelease upstream version by RPM - %{version} expands with the tilde, use %{clean_version} to get upstream version
- Added pkgconfig file for pcs
- Added previously omitted autotools as build dependencies
- Changed BuildRequires for cluster stack components to use pkgconfig virtual provides to prevent breakage if pkgconfig is ever moved to a different package
- Removed BuildRequires: nodejs-npm from main package and fixed the name in cockpit-ha-cluster subpackage - the idea is that BuildRequires become Requires of the srpm which are then used during the main build phase when subpackages are built (so BuildRequires are effectively inherited by this logic)
- Removed Requires: python3-setuptools. With overhauled setup, new setuptools create entrypoints that do not import setuptools.
- Removed Requires: rubygem-rack-test - this is a build requirement.
- Improved BuildRequires for systemd scriptlet macros according to packaging guidelines
- Replaced ${RPM_BUILD_ROOT} in favor of %buildroot to match the upstream spec
- Revamped and unified tarball version management between pcs and pcs-web-ui - version numbers are needed for untagged releases, as git-version-gen takes the version from a git tag present in official released tarballs. To build an unreleased version of pcs, a commit hash is declared in a macro and .tarball-version is generated from rpm version and the hash. For tagged releases, .tarball-version is not generated but rpm version is used for file names and such. Pcs-web-ui uses a different version than pcs, so the rpm version cannot be used. Instead, pcs-web-ui version always has to be declared in the spec file anyway, so it will now serve as the fallback version for generating the .tarball-version for pcs-web-ui.
- Added BuildRequires: pkgconf as autotools need to process pc files from cluster packages
- Removal of all %post macros for all subpackages, because these are run automatically by systemd via %filetriggerin [1]. The need to restart is from now on indicated by running %posttrans systemd macros which set restart markers, see systemd 248 release notes [2]. This is implementation of a Fedora change proposal [3]. There are %posttrans and %postun macros for pcs-web-ui subpackage since pcsd needs to be restarted to start/stop providing webui or update webui on its installation/update/uninstall.
- The path to webui_public_dir passed to pcs-web-ui autotools is hardcoded. The pcs.pc file is not available since pcs is built in the same SRPM. It is not possible to get the path from compiled pc file after running configure from pcs because the %files section is not shell interpreted. It only accepts RPM macros which are replaced by the preprocessor before pcs is compiled. Technically, %files accept a file with paths and pkg-config could be run manually after pcs is compiled outputiing the directory to a temporary file. This hack is too ugly. Another solution would be to hardcode the paths both to pcs and ps-web-ui via autotools. This however doesn;t change the structure of the pcs tarball and is not safe either.
- Stopped using sbindir macro due to: https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin

[1] 1ffa7bf7c7/f/triggers.systemd
[2] https://github.com/systemd/systemd/blob/v248-rc1/NEWS#L360
[3] https://fedoraproject.org/wiki/Changes/Restart_services_at_end_of_rpm_transaction
2025-02-03 22:21:46 +01:00
Fedora Release Engineering
a62e4a77c3 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-17 22:35:25 +00:00
Michal Pospisil
dd5c28916c rpm induced gating changes
Changes to builddir structure in RPM 4.20 broke the old script for
patching sources. Luckily, we can now patch sources with tmt.
Gone is also list of packages needed for testing,
build dependencies will be installed by tmt instead.

Name of the gating plan was changed to remove confusion with
gating.yaml. The prepare script was also renamed to better reflect what
it does.

The prepare script should be run in prepare, but TMT_SOURCE_DIR doesn't
exist in that step yet. The workaround is to run the prepre script
before every test to allow for running all tests by itself. However, the
script can only run once because it removes pcs folder which breaks
autotools. This is done by creating a stamp file that prevents the
script from running if it already ran.
2024-08-06 17:46:08 +02:00
Michal Pospisil
9fee6b2969 pcs-0.11.8-1
- Rebased to the latest sources (see CHANGELOG.md)
- Updated pcs-web-ui to 0.1.20

- Removed extraneous Requires and BuildRequires
2024-08-06 17:40:30 +02:00
Fedora Release Engineering
234d9718a9 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-18 21:39:00 +00:00
Yaakov Selkowitz
232b9c52ef Drop eln macro usage
The %eln macro should only be used where absolutely necessary and with
approval from ELN SIG.  ELN builds also define the %rhel macro, set to the
next version to be branched, which covers almost all cases. Fedora 38 is
EOL, so there is no further need to conditionalize for it.
2024-06-23 22:34:41 -04:00
Python Maint
43ad532686 Rebuilt for Python 3.13 2024-06-09 03:06:50 +02:00
Michal Pospisil
655b3251b0 pcs-0.11.7-3
- Fixed a bug preventing the Cockpit Application from being installed from Cockpit
2024-02-05 10:51:21 +01:00
Fedora Release Engineering
b68e4b6701 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-25 12:20:13 +00:00
Michal Pospisil
3a06ce659f pcs-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-pcs-web-ui subpackage that adds pcs-web-ui as a Cockpit application
- Removed BuildRequires: python3-distro - was used to bundle dateutil
- Replaced STI tests with fmf tests for gating
- Change to prepare-env.sh script for rpm 4.19+ that creates SPECPARTS
  directories
- Workaround used for distro in autotools
2024-01-19 14:23:26 +01:00
Fedora Release Engineering
d102aae88e Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-20 18:51:05 +00:00
Yaakov Selkowitz
2d244b8d72 Fix build with Python 3.12
Patch submitted upstream: https://github.com/ClusterLabs/pcs/pull/713
2023-07-10 13:02:11 -04:00
Python Maint
11e6bb08f8 Rebuilt for Python 3.12 2023-06-28 11:42:02 +02:00
Michal Pospisil
71c95f418e Resolves: rhbz#2109852 rhbz#2170648
- 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
2023-06-22 13:43:50 +02:00
Michal Pospisil
52c9289b49 Resolves: rhbz#2179837
- 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
2023-04-13 13:01:04 +02:00
Michal Pospisil
2287b8ba7d Resolves: rhbz#2166266
- 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)
2023-03-01 15:29:41 +01:00
Fedora Release Engineering
514efad418 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-19 23:33:26 +00:00
Mamoru TASAKA
7315593416 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
2023-01-04 15:01:32 +09:00
Michal Pospisil
dc07da9166 Rebased to latest upstream sources (see CHANGELOG.md)
- Updated pcs-web-ui
- Added rubygem dependency: childprocess
- Removed rubygem dependency: open4
2022-12-13 10:50:06 +01:00
Mamoru TASAKA
b937466e5b Backport upstream patch for rubygem-json 2.6.3 error message format change 2022-12-12 21:54:19 +09:00
Miroslav Lisik
09490deee9 Resolves: rhbz#2123389
- Fixed ruby socket permissions
2022-09-07 16:37:27 +02:00
Fedora Release Engineering
e364a48be5 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-22 02:52:52 +00:00
Zbigniew Jędrzejewski-Szmek
d88d1a37b2 Rebuilt for pyparsing-3.0.9 2022-07-19 11:12:48 +02:00
Miroslav Lisik
478964bb97 Rebased to latest upstream sources (see CHANGELOG.md)
- Updated pcs-web-ui
- Resolves: rhbz#2068452
2022-06-28 10:48:56 +02:00
Python Maint
a6e4f795a7 Rebuilt for Python 3.11 2022-06-14 09:03:59 +02:00
Miroslav Lisik
d172d46e44 Resolves: rhbz#bz2093935
- Python 3.11 related fixes
2022-06-09 11:01:20 +02:00
Miroslav Lisik
f8c8ea2492 Rebased to latest upstream sources (see CHANGELOG.md)
- Updated pcs-web-ui
- Removed old web gui
2022-02-04 18:12:04 +01:00
Vít Ondruch
183fef8a1e Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_3.1 2022-01-27 19:00:48 +01:00
Fedora Release Engineering
026b429ce0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-20 23:04:13 +00:00
Miroslav Lisik
c8e365c715 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
2021-10-05 18:40:50 +02:00
Miroslav Lisik
b82abfd36d Resolves: rhbz#1983359
- Rebased to latest upstream sources (see CHANGELOG.md)
- Updated pcs-web-ui
- Bundle rubygem-sinatra, rubygem-thin and their dependencies because they were orphaned
2021-08-16 20:54:38 +02:00
Fedora Release Engineering
d6820b5189 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-22 17:52:13 +00:00
Python Maint
0edfcc78db Rebuilt for Python 3.10 2021-06-04 20:14:54 +02:00
Zbigniew Jędrzejewski-Szmek
c125a1634e Rebuilt for updated systemd-rpm-macros
See https://pagure.io/fesco/issue/2583.
2021-03-02 16:13:06 +01:00
Miroslav Lisik
eff9068c43 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)
2021-02-04 17:10:46 +01:00
Fedora Release Engineering
7247eb7cfb - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-26 23:06:16 +00:00
Tom Stellard
f5aa58717c Add BuildRequires: make
https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot
2021-01-08 01:11:38 +00:00
Vít Ondruch
415687d70d Rebuilt for https://fedoraproject.org/wiki/Changes/Ruby_3.0 2021-01-07 18:46:03 +01:00
Ondrej Mular
f00a25ef21 Python 3.10 related fix 2020-11-26 09:40:35 +01:00
Miroslav Lisik
08d2960343 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
2020-10-02 10:09:31 +02:00
Fedora Release Engineering
2755aa818b - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-28 13:19:25 +00:00
Miroslav Lisik
7bbab365c2 Rebased to latest upstream sources (see CHANGELOG.md)
- Updated pcs-web-ui
- Stopped bundling tornado (use distribution package instead)
- Stopped bundling rubygem-tilt (use distribution package instead)
- Removed rubygem bundling
- Removed unneeded BuildRequires: execstack, gcc, gcc-c++
- Excluded some tests for tornado daemon
2020-07-22 08:43:45 +02:00
Tom Stellard
2aa2099244 Use make macros
https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
2020-07-21 10:21:42 +02:00
Ondrej Mular
68ffc62879 fix date in changelog 2020-07-16 10:19:37 +02:00
Ondrej Mular
ebc60dd1fe Switch to the latest upstream version of dacite 2020-07-15 16:18:02 +02:00
Ondrej Mular
92ce8561ab Resolves: rhbz#1838327 2020-07-03 14:51:42 +02:00
Miro Hrončok
c2ddcd2f48 Rebuilt for Python 3.9 2020-05-26 02:55:52 +02:00
Ondrej Mular
3b2f88a991 Rebased to latest upstream sources 2020-05-07 10:12:07 +02:00
Ondrej Mular
704acb797e Enable gating 2020-04-03 15:14:10 +02:00
Ondrej Mular
48169244fa Resolves: rhbz#1817695 2020-03-27 14:39:00 +01:00
Miroslav Lisik
a85960601d Rebased to latest upstream sources 2020-03-18 15:16:26 +01:00
Fedora Release Engineering
bb6d268d06 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-29 21:06:14 +00:00
Miroslav Lisik
737f32d653 Rebased to latest upstream sources 2019-11-28 16:08:24 +01:00
Miro Hrončok
15c352599d Rebuilt for Python 3.8.0rc1 (#1748018) 2019-10-03 13:58:19 +02:00
Ondrej Mular
f0ef8cf425 Rebased to latest upstream sources 2019-08-23 14:44:10 +02:00
Miro Hrončok
4f71ee46f2 Rebuilt for Python 3.8 2019-08-19 10:22:00 +02:00
Fedora Release Engineering
1ae25be92e - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-26 00:15:09 +00:00
Ondrej Mular
ca4645e212 Rebased to latest upstream sources 2019-06-14 10:15:58 +02:00
Ondrej Mular
116232cf36 Merge branch 'f29' 2019-06-14 10:12:05 +02:00
Tomas Jelinek
bdca7babca Removed unused dependency rubygem-multi_json 2019-03-19 14:14:46 +01:00
Ivan Devat
b03e36bf06 Corrected gem install flags 2019-02-04 15:13:05 +01:00
Fedora Release Engineering
36bfc825b5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-01 18:09:03 +00:00
Igor Gnatenko
3b38e6b807 Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:25 +01:00
Ivan Devat
7e17d16d64 Rebased to latest upstream sources 2019-01-09 07:54:30 +01:00
Ivan Devat
ab63e39814 Rebased to latest upstream sources 2019-01-08 13:10:36 +01:00
Miro Hrončok
84c984d7f5 https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_2 2018-11-15 12:53:55 +01:00
Ondrej Mular
29a162574a Resolves: rhbz#1618911 2018-10-09 10:10:07 -04:00
Ivan Devat
a504446fc1 Start bundling rubygem-tilt
- Started bundling rubygem-tilt (rubygem-tilt is orphaned in fedora due to rubygem-prawn dependency)
- Enabled passing tests
2018-08-31 14:23:00 +02:00
Ivan Devat
af67efa0f5 Resolves: rhbz#1618911
- Fixed error with missing rubygem location during pcsd start
2018-08-25 11:14:44 +02:00
Ivan Devat
6341d90428 Rebased to latest upstream sources 2018-08-02 10:57:56 +02:00
Ivan Devat
c9ec744a14 Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild 2018-07-25 15:59:45 +02:00
Fedora Release Engineering
040429de38 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-13 15:36:31 +00:00
Miro Hrončok
a23ce0d87c Rebuilt for Python 3.7 2018-06-19 10:49:20 +02:00
12 changed files with 1126 additions and 616 deletions

1
.fmf/version Normal file
View file

@ -0,0 +1 @@
1

76
.gitignore vendored
View file

@ -49,3 +49,79 @@
/pyagentx-0.4.pcs.2.tar.gz
/sinatra-contrib-2.0.0.gem
/pcs-0.9.164.tar.gz
/pcs-0.10.0.1.tar.gz
/tornado-5.0.2.tar.gz
/pcs-0.10.0.alpha.1.tar.gz
/sinatra-contrib-2.0.3.gem
/pcs-0.10.0.alpha.2.tar.gz
/tilt-2.0.8.gem
/pcs-0.10.0.alpha.6.tar.gz
/pcs-0.10.1.tar.gz
/pcs-0.10.2.tar.gz
/pcs-web-ui-0.1.1.tar.gz
/pcs-web-ui-node-modules-0.1.1.tar.xz
/pcs-0.10.3.tar.gz
/tornado-6.0.3.tar.gz
/pcs-0.10.4.tar.gz
/pcs-0.10.5.tar.gz
/pcs-web-ui-0.1.2.tar.gz
/pcs-web-ui-node-modules-0.1.2.tar.xz
/tilt-2.0.9.gem
/dacite-1.1.0.tar.gz
/pcs-67591ed1487cb0aefa181fdfc166c8a66b55d25a.tar.gz
/dacite-1.5.0.python3.9.fix.tar.gz
/dacite-1.5.1.tar.gz
/pcs-0.10.6.tar.gz
/pcs-web-ui-0.1.3.tar.gz
/pcs-web-ui-node-modules-0.1.3.tar.xz
/pcs-0.10.7.tar.gz
/dacite-1.6.0.tar.gz
/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

View file

@ -0,0 +1,63 @@
From 72588f150e89b6f06810321245a13157b7e00b09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
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

View file

@ -1,311 +0,0 @@
From f7b706961ce0f51beebe24bdce1d56eb38ec8fca Mon Sep 17 00:00:00 2001
From: Ivan Devat <idevat@redhat.com>
Date: Mon, 19 Feb 2018 17:54:35 +0100
Subject: [PATCH] fedfix
Gems for fedora was adapted.
Codebase was adapted for sinatra 2 and rack 2.
---
pcs/pcs | 2 +-
pcs/test/suite.py | 2 +-
pcsd/Makefile | 36 ++++++++----------------------------
pcsd/pcsd.rb | 18 +++++-------------
pcsd/pcsd.service-runner | 3 ++-
pcsd/session.rb | 25 ++++++++++++-------------
pcsd/ssl.rb | 1 -
pcsd/test/test_session.rb | 37 +++++++++++++++++++------------------
8 files changed, 48 insertions(+), 76 deletions(-)
diff --git a/pcs/pcs b/pcs/pcs
index 736f9cd2..3dff69a5 100755
--- a/pcs/pcs
+++ b/pcs/pcs
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
from __future__ import absolute_import
import os.path
diff --git a/pcs/test/suite.py b/pcs/test/suite.py
index 809596bc..98c5a268 100755
--- a/pcs/test/suite.py
+++ b/pcs/test/suite.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
from __future__ import (
absolute_import,
division,
diff --git a/pcsd/Makefile b/pcsd/Makefile
index d7d98f60..c83bd958 100644
--- a/pcsd/Makefile
+++ b/pcsd/Makefile
@@ -1,33 +1,13 @@
-FFI_VERSION="1.9.18"
-FFI_C_DIR=vendor/bundle/ruby/gems/ffi-${FFI_VERSION}/ext/ffi_c
-
-build_gems: get_gems
- bundle install --local --deployment
- #ffi makes symlink with absolute path. Let's change it to relative path.
- for fname in `ls ${FFI_C_DIR}/libffi-*/include/ffitarget.h`; do \
- if [[ -L "$$fname" ]]; then \
- target=$$(readlink $$fname | sed "s~.*/${FFI_C_DIR}\(/libffi/src/[^/]\+/ffitarget.h\)~../..\1~"); \
- rm $$fname; \
- ln -s $$target $$fname; \
- fi; \
- done;
-
-build_gems_without_bundler:
+# Comment from specfile from distgit 9b7a65231 Mamoru TASAKA:
+# So it seems that with rubygems 2.7.3 --install-dir option always
+# needs --no-user-install???
+# tld;dr; added flag --no-user-install, details in the commit
+build_gems:
mkdir -p vendor/bundle/ruby
- gem install --verbose --no-rdoc --no-ri -l --ignore-dependencies -i vendor/bundle/ruby \
- vendor/cache/backports-3.9.1.gem \
- vendor/cache/ethon-0.10.1.gem \
- vendor/cache/ffi-${FFI_VERSION}.gem \
- vendor/cache/json-2.1.0.gem \
- vendor/cache/multi_json-1.12.2.gem \
- vendor/cache/open4-1.3.4.gem \
- vendor/cache/rack-1.6.4.gem \
- vendor/cache/rack-protection-1.5.5.gem \
- vendor/cache/rack-test-0.7.0.gem \
+ gem install --force --verbose --no-rdoc --no-ri -l --no-user-install -i vendor/bundle/ruby \
+ vendor/cache/orderedhash-0.0.6.gem \
vendor/cache/rpam-ruby19-1.2.1.gem \
- vendor/cache/sinatra-1.4.8.gem \
- vendor/cache/sinatra-contrib-1.4.7.gem \
- vendor/cache/tilt-2.0.8.gem \
+ vendor/cache/sinatra-contrib-2.0.0.gem \
-- '--with-ldflags="-Wl,-z,now -Wl,-z,relro"'
get_gems:
diff --git a/pcsd/pcsd.rb b/pcsd/pcsd.rb
index 61b28044..39c69608 100644
--- a/pcsd/pcsd.rb
+++ b/pcsd/pcsd.rb
@@ -83,6 +83,11 @@ before do
$session_storage = env[:__session_storage]
$session_storage_env = env
end
+ begin
+ $session_storage.drop_expired(request)
+ rescue => e
+ $logger.warn("Exception while removing expired sessions: #{e}")
+ end
# urls which are accesible for everybody including not logged in users
always_accessible = [
@@ -156,19 +161,6 @@ $thread_cfgsync = Thread.new {
end
}
-$thread_session_expired = Thread.new {
- while true
- sleep(60 * 5)
- begin
- if $session_storage
- $session_storage.drop_expired($session_storage_env)
- end
- rescue => e
- $logger.warn("Exception while removing expired sessions: #{e}")
- end
- end
-}
-
helpers do
def is_ajax?
return request.env['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'
diff --git a/pcsd/pcsd.service-runner b/pcsd/pcsd.service-runner
index 883d2908..712913ea 100644
--- a/pcsd/pcsd.service-runner
+++ b/pcsd/pcsd.service-runner
@@ -3,8 +3,9 @@
# it also serves as a holder of a selinux context
begin
- # add pcsd to the load path (ruby -I)
+ # add pcsd and bundled gems to the load path (ruby -I)
libdir = File.dirname(__FILE__)
+ $LOAD_PATH.unshift(*Dir[libdir + '/vendor/bundle/ruby/gems/*/lib'])
$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
# change current directory (ruby -C)
diff --git a/pcsd/session.rb b/pcsd/session.rb
index 8b09ed82..f42bf73e 100644
--- a/pcsd/session.rb
+++ b/pcsd/session.rb
@@ -1,4 +1,3 @@
-gem 'rack', '< 2.0.0'
require 'rack/session/pool'
class SessionPoolLifetime < Rack::Session::Pool
@@ -14,14 +13,14 @@ class SessionPoolLifetime < Rack::Session::Pool
super
end
- def get_session(env, sid)
- with_lock(env) do
+ def find_session(req, sid)
+ with_lock(req) do
now = Time.now()
# delete the session if expired
if @default_options[:expire_after] and sid and @pool_timestamp[sid] and
@pool_timestamp[sid] < (now - @default_options[:expire_after])
then
- delete_session(sid)
+ remove_session(sid)
end
# create new session if nonexistent
unless sid and session = @pool[sid]
@@ -34,8 +33,8 @@ class SessionPoolLifetime < Rack::Session::Pool
end
end
- def set_session(env, session_id, new_session, options)
- with_lock(env) do
+ def write_session(req, session_id, new_session, options)
+ with_lock(req) do
@pool.store session_id, new_session
# bump session's access time
@pool_timestamp[session_id] = Time.now()
@@ -43,30 +42,30 @@ class SessionPoolLifetime < Rack::Session::Pool
end
end
- def destroy_session(env, session_id, options)
- with_lock(env) do
- delete_session(session_id)
+ def delete_session(req, session_id, options)
+ with_lock(req) do
+ remove_session(session_id)
generate_sid unless options[:drop]
end
end
- def drop_expired(env)
+ def drop_expired(req)
return unless lifetime = @default_options[:expire_after]
- with_lock(env) {
+ with_lock(req) {
threshold = Time.now() - lifetime
sid_to_delete = []
@pool_timestamp.each { |sid, timestamp|
sid_to_delete << sid if timestamp < threshold
}
sid_to_delete.each { |sid|
- delete_session(sid)
+ remove_session(sid)
}
}
end
private
- def delete_session(sid)
+ def remove_session(sid)
@pool.delete(sid)
@pool_timestamp.delete(sid)
end
diff --git a/pcsd/ssl.rb b/pcsd/ssl.rb
index eaf2cbf1..2668c958 100644
--- a/pcsd/ssl.rb
+++ b/pcsd/ssl.rb
@@ -2,7 +2,6 @@ require 'rubygems'
require 'webrick'
require 'webrick/https'
require 'openssl'
-gem 'rack', '< 2.0.0'
require 'rack'
require 'socket'
diff --git a/pcsd/test/test_session.rb b/pcsd/test/test_session.rb
index e72bf012..c212b1a0 100644
--- a/pcsd/test/test_session.rb
+++ b/pcsd/test/test_session.rb
@@ -2,18 +2,19 @@ require 'test/unit'
require 'pcsd_test_utils.rb'
require 'session.rb'
+require 'sinatra'
class TestSessionPool < Test::Unit::TestCase
def setup()
- @env = {
+ @request = Sinatra::Request.new({
'rack.multithread' => true,
- }
+ })
end
def fixture_get_pool(lifetime)
pool = SessionPoolLifetime.new(nil, {:expire_after => lifetime,})
- (1..3).each { |i| pool.set_session(@env, "sid#{i}", {'value' => i}, {}) }
+ (1..3).each { |i| pool.write_session(@request, "sid#{i}", {'value' => i}, {}) }
return pool
end
@@ -23,14 +24,14 @@ class TestSessionPool < Test::Unit::TestCase
# touch sessions each second
lifetime.times {
sleep(1)
- assert_equal({'value' => 1}, pool.get_session(@env, 'sid1')[1])
- assert_equal({'value' => 3}, pool.get_session(@env, 'sid3')[1])
+ assert_equal({'value' => 1}, pool.find_session(@request, 'sid1')[1])
+ assert_equal({'value' => 3}, pool.find_session(@request, 'sid3')[1])
}
# after @lifetime passes the unused session gets removed on access
sleep(1)
- assert_equal({'value' => 1}, pool.get_session(@env, 'sid1')[1])
- assert_equal({'value' => 3}, pool.get_session(@env, 'sid3')[1])
- assert_equal({}, pool.get_session(@env, 'sid2')[1])
+ assert_equal({'value' => 1}, pool.find_session(@request, 'sid1')[1])
+ assert_equal({'value' => 3}, pool.find_session(@request, 'sid3')[1])
+ assert_equal({}, pool.find_session(@request, 'sid2')[1])
end
def test_drop_expired_explicit()
@@ -39,12 +40,12 @@ class TestSessionPool < Test::Unit::TestCase
# touch sessions each second (otherwise they will be removed on access)
lifetime.times {
sleep(1)
- pool.get_session(@env, 'sid2')
- pool.set_session(@env, 'sid3', {'value' => 33}, {})
+ pool.find_session(@request, 'sid2')
+ pool.write_session(@request, 'sid3', {'value' => 33}, {})
}
sleep(1)
- pool.drop_expired(@env)
+ pool.drop_expired(@request)
assert_equal(
{
'sid2' => {'value' => 2,},
@@ -57,14 +58,14 @@ class TestSessionPool < Test::Unit::TestCase
def test_no_lifetime()
pool = fixture_get_pool(nil)
sleep(1)
- assert_equal({'value' => 1}, pool.get_session(@env, 'sid1')[1])
- assert_equal({'value' => 2}, pool.get_session(@env, 'sid2')[1])
- assert_equal({'value' => 3}, pool.get_session(@env, 'sid3')[1])
+ assert_equal({'value' => 1}, pool.find_session(@request, 'sid1')[1])
+ assert_equal({'value' => 2}, pool.find_session(@request, 'sid2')[1])
+ assert_equal({'value' => 3}, pool.find_session(@request, 'sid3')[1])
sleep(1)
- pool.drop_expired(@env)
- assert_equal({'value' => 1}, pool.get_session(@env, 'sid1')[1])
- assert_equal({'value' => 2}, pool.get_session(@env, 'sid2')[1])
- assert_equal({'value' => 3}, pool.get_session(@env, 'sid3')[1])
+ pool.drop_expired(@request)
+ assert_equal({'value' => 1}, pool.find_session(@request, 'sid1')[1])
+ assert_equal({'value' => 2}, pool.find_session(@request, 'sid2')[1])
+ assert_equal({'value' => 3}, pool.find_session(@request, 'sid3')[1])
end
end
--
2.13.6

View file

@ -0,0 +1,32 @@
From a2899ef0e20bb638f47e74077281e73f4f18faf3 Mon Sep 17 00:00:00 2001
From: Miroslav Lisik <mlisik@redhat.com>
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

14
gating.yaml Normal file
View file

@ -0,0 +1,14 @@
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}

1026
pcs.spec

File diff suppressed because it is too large Load diff

32
plan-gating.fmf Normal file
View file

@ -0,0 +1,32 @@
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

22
prepare-tests.sh Executable file
View file

@ -0,0 +1,22 @@
#!/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

8
rpminspect.yaml Normal file
View file

@ -0,0 +1,8 @@
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

View file

@ -0,0 +1,148 @@
From e7fa056f582c992d3d2b289911be20440fb839ac Mon Sep 17 00:00:00 2001
From: Ivan Devat <idevat@redhat.com>
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 handlers 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 @@
<!DOCTYPE html>
<html>
<head>
- <title>Pcs WebUI instructions</title>
+ <title>Web UI is disabled</title>
<meta charset="utf-8" />
</head>
<body>
- <h1>Pcs WebUI instructions</h1>
+ <h1>Package <code>pcs-web-ui</code> is not installed</h1>
<p>
- WebUI is not a part of pcs repository but it has its own
- <a href="https://github.com/ClusterLabs/pcs-web-ui">repository</a>.
+ Since Fedora 42, pcsd web UI is distributed with pcs as <code>pcs-web-ui
+ </code> package. This<br>package can be uninstalled to disable the web UI.
</p>
<p>
- You can clone <a href="https://github.com/ClusterLabs/pcs-web-ui">WebUI repository</a>
- and build the web application into pcs by:
+ To re-enable pcsd web UI, install the <code>pcs-web-ui</code> RPM package.
</p>
- <pre><code>
- $ npm install
- $ npm run build
- $ mv ./build [/path/to/]pcs/pcsd/public/ui
- </code></pre>
<p>
- For more details, see instructions in
- <a href="https://github.com/ClusterLabs/pcs-web-ui/blob/main/README.md">README.md</a>.
+ Another option is to try pcsd web UI as an application for
+ <a href="https://cockpit-project.org/">Cockpit</a>
+ - a web-based<br>graphical interface for servers. The HA Cluster Management
+ application can be<br>installed from within the Applications pane in
+ Cockpit or by installing the<br><code>cockpit-ha-cluster</code> RPM
+ package.
</p>
</body>
</html>
--
2.50.1

View file

@ -1,6 +1,5 @@
SHA512 (pcsd-bundle-config-1) = f2a2df2dab39c2012cc6a91517716dde8f5a48788d1069c4addf619bc4dc45a98fd48f0f7964b5400e43e84fe96f942a550d2762553fea97e63dc7ad9b8be823
SHA512 (orderedhash-0.0.6.gem) = b2dae648187437ea7d9d9be47b9ff8d0e1a96bc2ff9e50117033d5bd4cf09cfff3c0740c99c322910138cac90f33b425705ee7a30be84aa193e6afd9f576f64a
SHA512 (rpam-ruby19-1.2.1.gem) = b403964295e96a6247289518ff46e59bbae6c78bcfb647e12b7dbb247698642b4a1ee04492521b782fb3c594c2ede8143c765819fecde087e2ec850e3aea3503
SHA512 (sinatra-contrib-2.0.0.gem) = 2e9c1fccfee050af8ef93ce0fe92504930ee41db3ff5aec3c2260ab49f334474386787057011adcb6cfa7de62f9e24ea228944d25bdf8af316b0b7614008ce03
SHA512 (pyagentx-0.4.pcs.2.tar.gz) = d4194fec9a3e5fefe3793d49b7fec1feafef294c7e613a06046c2993daeefc5cb39d7c5b2b402ff83e49b2d976953f862264288c758c0be09d997b5323cc558a
SHA512 (pcs-0.9.164.tar.gz) = f5c26e470ace01e961f50ec6883d78e3556a572c274b7093005d496baed4fc33d38409169b06b67722b2fed32d5fd42cf8eb2b6832fe8e55027bf12a37dd5dc4
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