From 795c7b002c16f0ca9cda0cbd7d196700864a0d31 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Tue, 21 Mar 2023 08:32:20 +0000 Subject: automatic import of resalloc --- .gitignore | 1 + cron.hourly | 3 + logrotate | 15 ++ merge-hook-logs | 17 ++ resalloc.service | 16 ++ resalloc.spec | 498 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 7 files changed, 551 insertions(+) create mode 100644 cron.hourly create mode 100644 logrotate create mode 100755 merge-hook-logs create mode 100644 resalloc.service create mode 100644 resalloc.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..7a34d37 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/resalloc-4.9.tar.gz diff --git a/cron.hourly b/cron.hourly new file mode 100644 index 0000000..0ef168e --- /dev/null +++ b/cron.hourly @@ -0,0 +1,3 @@ +#! /bin/sh + +runuser -c '/usr/libexec/resalloc-merge-hook-logs' - resalloc diff --git a/logrotate b/logrotate new file mode 100644 index 0000000..f1ff9a3 --- /dev/null +++ b/logrotate @@ -0,0 +1,15 @@ +compress + +/var/log/resallocserver/main.log { + missingok + notifempty + rotate 4 + weekly + copytruncate +} + +/var/log/resallocserver/hooks.log { + missingok + rotate 7 + daily +} diff --git a/merge-hook-logs b/merge-hook-logs new file mode 100755 index 0000000..348527a --- /dev/null +++ b/merge-hook-logs @@ -0,0 +1,17 @@ +#! /bin/sh + +export PATH=/usr/bin + +hooks_log=/var/log/resallocserver/hooks.log + +find /var/log/resallocserver/hooks -type f -mmin +60 \ + | sort | \ +while read -r file; do + { + echo "=== $file ===" + cat "$file" + echo + echo + } >> "$hooks_log" + rm "$file" +done diff --git a/resalloc.service b/resalloc.service new file mode 100644 index 0000000..e29ae38 --- /dev/null +++ b/resalloc.service @@ -0,0 +1,16 @@ +[Unit] +Description=Resource allocator server +After=network.target + +[Service] +Type=simple +Restart=always +RestartSec=5 +User=resalloc +Group=resalloc + +Environment=CONFIG_DIR=/etc/resallocserver +ExecStart=/usr/bin/resalloc-server + +[Install] +WantedBy=multi-user.target diff --git a/resalloc.spec b/resalloc.spec new file mode 100644 index 0000000..7d1bb70 --- /dev/null +++ b/resalloc.spec @@ -0,0 +1,498 @@ +%global srcname resalloc + +%global sysuser resalloc +%global sysgroup %sysuser +%global _logdir %_var/log/%{name}server +%global _homedir %_sharedstatedir/%{name}server + +%global sum Resource allocator for expensive resources +%global desc \ +The resalloc project aims to help with taking care of dynamically \ +allocated resources, for example ephemeral virtual machines used for \ +the purposes of CI/CD tasks. + + +%bcond_without check + +%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?is_opensuse} || 0%{?openEuler} +%bcond_with python2 +%bcond_without python3 +%else +%bcond_without python2 +%bcond_with python3 +%endif + +%global default_python %{?with_python3:python3}%{!?with_python3:python2} +%global default_sitelib %{?with_python3:%python3_sitelib}%{!?with_python3:%python_sitelib} + +Name: %srcname +Summary: %sum - client tooling +Version: 4.9 +Release: 2%{?dist} +License: GPL-2.0-or-later +URL: https://github.com/praiskup/resalloc +BuildArch: noarch + +BuildRequires: make +BuildRequires: postgresql-server + + +%if %{with python3} +BuildRequires: python3-alembic +BuildRequires: python3-argparse-manpage +BuildRequires: python3-devel +BuildRequires: python3-psycopg2 +BuildRequires: python3-pytest +BuildRequires: python3-pytest-cov +BuildRequires: python3-setuptools +BuildRequires: python3-six +BuildRequires: python3-sqlalchemy +%if 0%{?is_opensuse} +BuildRequires: python3-PyYAML +BuildRequires: cron +%elif 0%{?openEuler} +BuildRequires: python3-pyyaml +%else +BuildRequires: python3-yaml +%endif +%endif + +%if %{with python2} +BuildRequires: python-alembic +BuildRequires: python2-argparse-manpage +BuildRequires: python2-devel +BuildRequires: python-psycopg2 +BuildRequires: python2-mock +BuildRequires: python2-pytest +BuildRequires: python2-pytest-cov +BuildRequires: python2-setuptools +BuildRequires: python2-six +BuildRequires: python-sqlalchemy +BuildRequires: python-yaml +%endif + +Requires: %default_python-%srcname = %version-%release + +Source0: https://github.com/praiskup/%name/releases/download/v%version/%name-%version.tar.gz +Source1: resalloc.service +Source2: logrotate +Source3: merge-hook-logs +Source4: cron.hourly + +%description +%desc + +The %name package provides the client-side tooling. + + +%package server +Summary: %sum - server part + +Requires: crontabs +Requires: logrotate +Requires: %default_python-%srcname = %version-%release +%if %{with python3} +Requires: python3-alembic +Requires: python3-six +Requires: python3-sqlalchemy +Requires: python3-yaml +%else +Requires: python-alembic +Requires: python2-six +Requires: python-sqlalchemy +Requires: python-yaml +%endif + +Requires(pre): /usr/sbin/useradd +%description server +%desc + +The %name-server package provides the resalloc server, and +some tooling for resalloc administrators. + +%if %{with python3} +%package webui +Summary: %sum - webui part + +%if %{with python3} +Requires: %default_python-%srcname = %version-%release +Requires: %name-server +Requires: python3-flask +Recommends: %name-selinux +%endif + +%description webui +%desc + +The %name-webui package provides the resalloc webui, +it shows page with information about resalloc resources. +%endif + +%if %{with python3} +%package -n python3-%srcname +Summary: %sum - Python 3 client library +%{?python_provide:%python_provide python3-%srcname} +%description -n python3-%srcname +%desc + +The python3-%name package provides Python 3 client library for talking +to the resalloc server. +%endif + + +%if %{with python2} +%package -n python2-%srcname +Summary: %sum - Python 2 client library +%{?python_provide:%python_provide python2-%srcname} +%description -n python2-%srcname +%desc + +The python2-%name package provides Python 2 client library for talking +to the resalloc server. +%endif + + +%package selinux +Summary: SELinux module for %{name} +Requires: %name-webui = %version-%release +# Requires(post): policycoreutils-python +BuildRequires: selinux-policy-devel +%{?selinux_requires} + +%description selinux +%desc + +%post selinux +semanage fcontext -a -t httpd_sys_script_exec_t \ + %_var/www/cgi-%{name} 2>/dev/null || : +restorecon -R %_var/www/cgi-%{name} || : + + +%prep +%autosetup -p1 -n %name-%version + + +%build +%if %{with python2} +%py2_build +%else +%py3_build +%endif + + +%install +%if %{with python2} +%py2_install +rm -r %buildroot%python2_sitelib/%{name}webui +%else +%py3_install +install -d -m 755 %buildroot%_datadir/%{name}webui +cp -r %{name}webui/templates %buildroot%_datadir/%{name}webui/ +cp -r %{name}webui/static %buildroot%_datadir/%{name}webui/ + +install -d -m 755 %buildroot%_var/www/ +install -p -m 755 %{name}webui/cgi-resalloc %buildroot%_var/www/cgi-%{name} +%endif + +mkdir -p %buildroot%_unitdir +mkdir -p %buildroot%_logdir +install -p -m 644 %SOURCE1 %buildroot%_unitdir +install -d -m 700 %buildroot%_homedir +install -d -m 700 %buildroot%_sysconfdir/logrotate.d +install -p -m 644 %SOURCE2 %buildroot%_sysconfdir/logrotate.d/resalloc-server +install -p -m 644 man/resalloc-server.1 %buildroot%_mandir/man1 +install -d -m 755 %buildroot/%_libexecdir +install -p -m 755 %SOURCE3 %buildroot/%_libexecdir/%name-merge-hook-logs +install -d %buildroot%_sysconfdir/cron.hourly +install -p -m 755 %SOURCE4 %buildroot%_sysconfdir/cron.hourly/resalloc + + +%if %{with check} +%check +%if %{with python2} +make check TEST_PYTHONS="python2" +%else +make check TEST_PYTHONS="python3" +%endif +%endif + + +# Simplify "alembic upgrade head" actions. +ln -s "%{default_sitelib}/%{name}server" %buildroot%_homedir/project + + +%pre server +user=%sysuser +group=%sysgroup +getent group "$user" >/dev/null || groupadd -r "$group" +getent passwd "$user" >/dev/null || \ +useradd -r -g "$group" -G "$group" -s /bin/bash \ + -c "resalloc server's user" "$user" \ + -d "%_homedir" + + +%post server +%systemd_post resalloc.service + +%postun server +%systemd_postun_with_restart resalloc.service + + +%global doc_files NEWS README + +%files +%doc %doc_files +%license COPYING +%{_bindir}/%{name} +%_mandir/man1/%{name}.1* + + +%if %{with python3} +%files -n python3-%srcname +%doc %doc_files +%license COPYING +%{python3_sitelib}/%{name} +%{python3_sitelib}/%{name}-*.egg-info +%endif + + +%if %{with python2} +%files -n python2-%srcname +%doc %doc_files +%license COPYING +%{python2_sitelib}/%{name} +%{python2_sitelib}/%{name}-*.egg-info +%endif + + +%files server +%doc %doc_files +%license COPYING +%{default_sitelib}/%{name}server +%{_bindir}/%{name}-server +%{_bindir}/%{name}-maint +%{_bindir}/%{name}-check-vm-ip +%attr(0750, %sysuser, %sysgroup) %dir %{_sysconfdir}/%{name}server +%config(noreplace) %{_sysconfdir}/%{name}server/* +%_unitdir/resalloc.service +%attr(0700, %sysuser, %sysgroup) %dir %_logdir +%_mandir/man1/%{name}-maint.1* +%_mandir/man1/%{name}-server.1* +%attr(0700, %sysuser, %sysgroup) %_homedir +%config %_sysconfdir/logrotate.d/resalloc-server +%_libexecdir/resalloc-merge-hook-logs +%config %attr(0755, root, root) %{_sysconfdir}/cron.hourly/resalloc + +%if %{with python3} +%files webui +%doc %doc_files +%license COPYING +%{default_sitelib}/%{name}webui/ +%_datadir/%{name}webui/ +%_var/www/cgi-%{name} +%endif + +%files selinux + + +%changelog +* Mon Jan 30 2023 Miro Hrončok - 4.9-2 +- Rebuilt to change Python shebangs to /usr/bin/python3.6 on EPEL 8 + +* Mon Jan 23 2023 Pavel Raiskup - 4.9-1 +- new upstream release https://github.com/praiskup/resalloc/releases/tag/v4.9 + +* Fri Jan 20 2023 Fedora Release Engineering - 4.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Sep 23 2022 Pavel Raiskup - 4.8-1 +- new upstream release: + https://github.com/praiskup/resalloc/releases/tag/v4.8 + +* Tue Sep 20 2022 Pavel Raiskup - 4.7-1 +- new upstream release: + https://github.com/praiskup/resalloc/releases/tag/v4.7 + +* Sat Jul 23 2022 Fedora Release Engineering - 4.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jun 29 2022 Jakub Kadlcik - 4.6-2 +- Add resalloc-selinux subpackage + +* Wed Jun 29 2022 Jakub Kadlcik - 4.6-1 +- New upstream version: + https://github.com/praiskup/resalloc/releases/tag/v4.6 + +* Thu Jun 23 2022 Pavel Raiskup - 4.5-1 +- New upstream version: + https://github.com/praiskup/resalloc/releases/tag/v4.5 + +* Wed Jun 22 2022 Jakub Kadlcik - 4.4-1 +- New upstream version: + https://github.com/praiskup/resalloc/releases/tag/v4.4 + +* Tue Jun 14 2022 Python Maint - 4.3-2 +- Rebuilt for Python 3.11 + +* Thu Jan 20 2022 Pavel Raiskup - 4.3-1 +- new upstream release: + https://github.com/praiskup/resalloc/releases/tag/v4.3 + +* Thu Jan 20 2022 Pavel Raiskup - 4.2-1 +- new upstream release: + https://github.com/praiskup/resalloc/releases/tag/v4.2 + +* Tue Aug 24 2021 Pavel Raiskup - 4.1-1 +- bugfix release, with prioritized released resources again + +* Mon Aug 23 2021 Pavel Raiskup - 4-1 +- new release, with tag-priority + +* Fri Jul 23 2021 Fedora Release Engineering - 3.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jun 22 2021 Pavel Raiskup - 3.7-1 +- new upstream release, see NEWS file + +* Wed Jun 09 2021 Pavel Raiskup - 3.6-1 +- rebase to a new version having DB performance fixes + +* Fri Jun 04 2021 Python Maint - 3.4-3 +- Rebuilt for Python 3.10 + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 3.4-2 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Fri Feb 19 2021 Silvie Chlupova - 3.4-1 +- New upstream release v3.4 + +* Wed Jan 27 2021 Fedora Release Engineering - 3.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jun 25 2020 Pavel Raiskup - 3.3-1 +- new release, mostly fixing one bug causing traceback on too-long stdout output + from AllocWorker script + +* Tue Jun 02 2020 Pavel Raiskup - 3.2-1 +- new configuration option cmd_release - command to be run before we mark the + resource as reusable again +- after server restart, schedule all inconsistent resources to be terminated + (mitigates issue#41) +- systemd service is restarted upon failure (just in case) + +* Tue May 26 2020 Miro Hrončok - 3.1-2 +- Rebuilt for Python 3.9 + +* Tue May 26 2020 Pavel Raiskup - 3.1-1 +- new version v3.1, improved resource checker + +* Tue May 26 2020 Miro Hrončok - 3.0-2 +- Rebuilt for Python 3.9 + +* Sun May 17 2020 Pavel Raiskup - 3.0-1 +- new 3.0 version - new possibility to re-use resources, and client requests can + survive server restarts + +* Thu Jan 30 2020 Fedora Release Engineering - 2.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Oct 03 2019 Miro Hrončok - 2.6-3 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 2.6-2 +- Rebuilt for Python 3.8 + +* Fri Aug 02 2019 Pavel Raiskup - 2.6-1 +- don't assign resources to closed tickets + +* Fri Jul 26 2019 Fedora Release Engineering - 2.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jun 13 2019 Pavel Raiskup - 2.5-1 +- thread safety - don't change os.environ + +* Tue Jun 11 2019 Pavel Raiskup - 2.4-1 +- fix improperly handled thread communication + +* Fri May 10 2019 Pavel Raiskup - 2.3-3 +- drop mkhomedir requires leftover +- configure logrotate to compress rotated logs + +* Fri May 10 2019 Pavel Raiskup - 2.3-2 +- fix logrotate typo s/lib/log/, package it as config file + +* Fri May 10 2019 Pavel Raiskup - 2.3-1 +- logrotate config (per review rhbz#1707302) +- provide manual page for resalloc-server (per rhbz#1707302) +- logrotate also the hooks directory + +* Fri May 10 2019 Pavel Raiskup - 2.2-2 +- move homedir from /home to /var/lib (per msuchy's review) + +* Thu May 09 2019 Pavel Raiskup - 2.2-1 +- new release + +* Tue May 07 2019 Pavel Raiskup - 2.1-3 +- provide summary/description (per msuchy's review) + +* Tue May 07 2019 Pavel Raiskup - 2.1-2 +- only support Python 3 or Python 2 + +* Tue May 07 2019 Pavel Raiskup - 2.1-1 +- fixed racy testsuite + +* Tue May 07 2019 Pavel Raiskup - 2.0-1 +- release 2.0 (changed db schema for "id" within pool) + +* Wed Oct 31 2018 Pavel Raiskup - 1.1-1 +- bump, rebuild for Python 3.7 + +* Tue Jan 30 2018 Pavel Raiskup - 1.1-0 +- release with removed 'cat' hack (commit 970b99725acf1dc) + +* Thu Jan 18 2018 Pavel Raiskup - 0.1-12 +- first release + +* Wed Jan 17 2018 Pavel Raiskup - 0.dev0-12 +- better setup default directories + +* Wed Jan 17 2018 Pavel Raiskup - 0.dev0-11 +- log both stdout and stderr for start/stop/livecheck commands + +* Sat Jan 06 2018 Pavel Raiskup - 0.dev0-10 +- service: add WantedBy=multi-user.target + +* Fri Sep 29 2017 Pavel Raiskup - 0.dev0-9 +- fix homedir for ansible + +* Fri Sep 29 2017 Pavel Raiskup - 0.dev0-8 +- resalloc-maint resource-delete fix + +* Thu Sep 28 2017 Pavel Raiskup - 0.dev0-7 +- resalloc ticket-wait puts output to stdout +- new command resalloc-maint ticket-list + +* Tue Sep 26 2017 Pavel Raiskup - 0.dev0-6 +- create datadir directory for database files + +* Tue Sep 26 2017 Pavel Raiskup - 0.dev0-5 +- install manual pages +- add '--with check' option + +* Thu Sep 21 2017 Pavel Raiskup - 0.dev0-4 +- python2/python3 fixes + +* Wed Sep 20 2017 Pavel Raiskup - 0.dev0-3 +- resalloc user is not nologin anymore +- add resalloc-maint + +* Tue Sep 19 2017 Pavel Raiskup - 0.dev0-2 +- add service file +- install log directory for server + +* Mon Sep 18 2017 Pavel Raiskup +- no changelog diff --git a/sources b/sources new file mode 100644 index 0000000..b43d7ac --- /dev/null +++ b/sources @@ -0,0 +1 @@ +085994083ea5845f40e8ebfdd975c60b resalloc-4.9.tar.gz -- cgit v1.2.3