Name:       odcs
Version:    0.5.0
Release:    2%{?dist}
Summary:    The On Demand Compose Service


Group:      Development/Tools
License:    MIT
URL:        https://pagure.io/odcs
Source0:    https://files.pythonhosted.org/packages/source/o/%{name}/%{name}-%{version}.tar.gz
Source1:    odcs-backend.service
Patch1:     https://pagure.io/odcs/pull-request/614.patch

BuildArch:    noarch

BuildRequires:    createrepo_c
BuildRequires:    gobject-introspection
BuildRequires:    koji
BuildRequires:    python3-alembic
BuildRequires:    python3-defusedxml
BuildRequires:    python3-devel
BuildRequires:    python3-flufl-lock
BuildRequires:    python3-gobject-base
BuildRequires:    python3-kobo
BuildRequires:    python3-koji
BuildRequires:    python3-ldap
BuildRequires:    python3-libmodulemd
BuildRequires:    python3-openidc-client
BuildRequires:    python3-productmd
BuildRequires:    python3-prometheus_client
BuildRequires:    python3-psutil
BuildRequires:    python3-pyOpenSSL
BuildRequires:    python3-requests-gssapi
BuildRequires:    python3-setuptools
BuildRequires:    python3-sqlalchemy
BuildRequires:    python3-systemd
BuildRequires:    python3-tabulate
BuildRequires:    python3-zipp
BuildRequires:    systemd

# test requirements
BuildRequires:    python3-freezegun
BuildRequires:    python3-pytest
# following test requirements are missing
# BuildRequires:    python3-pytest-cov
BuildRequires:    python3-responses

%{?systemd_requires}

Requires(pre): shadow-utils
Requires:    gobject-introspection
Requires:    hardlink
Requires:    pungi
Requires:    pungi-modular-support
Requires:    python3-alembic
Requires:    python3-celery
Requires:    python3-defusedxml
Requires:    python3-flask
Requires:    python3-flask-login
Requires:    python3-flask-migrate
Requires:    python3-flask-sqlalchemy
Requires:    python3-flufl-lock
Requires:    python3-kobo
Requires:    python3-ldap
Requires:    python3-libmodulemd
Requires:    python3-openidc-client
Requires:    python3-productmd
Requires:    python3-prometheus_client
Requires:    python3-psutil
Requires:    python3-psycopg2
Requires:    python3-pyOpenSSL
Requires:    python3-requests-gssapi
Requires:    python3-rhmsg
Requires:    python3-systemd
Requires:    systemd

Requires:    python3-odcs-common = %{version}-%{release}


%description
The On Demand Compose Service (ODCS) creates temporary composes using Pungi
tool and manages their lifetime. The composes can be requested by external
services or users using the REST API provided by Flask frontend.

%package -n python3-odcs-common
Summary:        ODCS subpackage providing code shared between server and client.
%{?python_provide:%python_provide python3-odcs-client}

%description -n python3-odcs-common
ODCS subpackage providing code shared between server and client.

%package -n python3-odcs-client
Summary:        ODCS client module
%{?python_provide:%python_provide python3-odcs-client}

Requires:       python3-requests
Requires:       python3-requests-gssapi
Requires:       python3-odcs-common = %{version}-%{release}

%description -n python3-odcs-client
Client library for sending requests to On Demand Compose Service (ODCS).

%package -n odcs-client
Summary:        ODCS command line client
Requires:       python3-openidc-client
Requires:       python3-odcs-client = %{version}-%{release}

%description -n odcs-client
Command line client for sending requests to ODCS.


%prep
%autosetup -p1

# These packages are not avaiable on el8 and only needed by frontend
sed -i '/apispec-webframeworks/d' server/requirements.txt
sed -i '/apispec/d' server/requirements.txt
sed -i '/marshmallow/d' server/requirements.txt


%build
%py3_build


%install
%py3_install

export PYTHONPATH=%{buildroot}%{python3_sitelib}
mkdir -p %{buildroot}%{_mandir}/man1
for command in odcs-manager odcs-frontend odcs-gencert ; do
export ODCS_CONFIG_DIR=server/conf/
export ODCS_DEVELOPER_ENV=1
done

install -d -m 0755 %{buildroot}%{_unitdir}
install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/

install -d -m 0755 %{buildroot}%{_datadir}/odcs
install -p -m 0644 server/contrib/odcs.wsgi %{buildroot}%{_datadir}/odcs


%pre
getent group odcs >/dev/null || groupadd -r odcs
getent passwd odcs >/dev/null || \
    useradd -r -g odcs -s /sbin/nologin \
    -c "On Demand Compose Service user" odcs
exit 0

%post
%systemd_post odcs-backend.service

%preun
%systemd_preun odcs-backend.service

%postun
%systemd_postun_with_restart odcs-backend.service

%check
# Skip tests due to permission issue or old version of mock
# PYTHONPATH=`pwd`/common:`pwd`/server:`pwd`/client ODCS_CONFIG_DIR=`pwd`/server/conf ODCS_DEVELOPER_ENV=1 pytest-%{python3_version} -v -k 'not test_mock_runroot_run and not test_error_string'

%files -n odcs-client
%doc README.md
%{_bindir}/odcs

%files -n python3-odcs-common
%doc README.md
%dir %{python3_sitelib}/odcs/
%{python3_sitelib}/odcs/__init__.py*
%{python3_sitelib}/odcs/common/
%{python3_sitelib}/odcs-%{version}-py%{python3_version}.egg-info/
%exclude %{python3_sitelib}/odcs/__pycache__

%files -n python3-odcs-client
%doc README.md
%dir %{python3_sitelib}/odcs/
%{python3_sitelib}/odcs/client/
%exclude %{python3_sitelib}/odcs/__pycache__

%files
%doc README.md
%{_unitdir}/odcs-backend.service
%{python3_sitelib}/odcs/server
%{_bindir}/odcs-*
%{_datadir}/odcs
%dir %{_sysconfdir}/odcs
%config(noreplace) %{_sysconfdir}/odcs/config.py
%config(noreplace) %{_sysconfdir}/odcs/pungi.conf
%config(noreplace) %{_sysconfdir}/odcs/raw_config_urls.conf
%config(noreplace) %{_sysconfdir}/odcs/raw_config_wrapper.conf
%exclude %{_sysconfdir}/odcs/*.py[co]
%exclude %{_sysconfdir}/odcs/__pycache__
%exclude %{python3_sitelib}/odcs/__pycache__


%changelog
* Thu Mar 23 2023 Lubomír Sedlář <lsedlar@redhat.com> - 0.5.0-2
- Backport patch for merged pulp repos (RHELCMP-11462)
- Switch to %%autosetup

* Wed Mar 01 2023 Haibo Lin <hlin@redhat.com> - 0.5.0-1
- backend: Handle raw config file in subdirectory implicitly
- backend: pulp: Always include explicitly mentioned repos
- client: switch to HTTPSPNEGOAuth and drop mutual_authentication
- docs: Improve documentation for pulp composes
- server: Load raw_config_urls config without reboot
- server: Refine server config initializing
- Add missing comma in setup.py
- Update formatting to satisfy latest black
- Update license info

* Wed Dec 07 2022 Haibo Lin <hlin@redhat.com> - 0.4.0-1
- backend: Drop python 2 support
- backend: Remove non-latest symlink before creating
- cleanup: Delete unneeded requirement
- client: Add missing requirement openidc-client
- client: Customize user-agent of odcs-client
- client: Drop python 2 support
- client: improve create-tag --help description
- frontend: Allow `^` character in ODCS input.
- frontend: Allow querying rover groups
- frontend: Brand new API doc available at /api/1/
- frontend: Drop python 2 support
- frontend: Optimized metrics raw_config_types
- promote: Stop checking symlinks before promoting

* Thu Sep 29 2022 Haibo Lin <hlin@redhat.com> - 0.3.8-2
- Use python3-requests-gssapi

* Thu Sep 29 2022 Haibo Lin <hlin@redhat.com> - 0.3.8-1
- new version

* Wed May 25 2022 Haibo Lin <hlin@redhat.com> - 0.3.7-2
- Build package for server side

* Fri Apr 22 2022 Haibo Lin <hlin@redhat.com> - 0.3.7-1
- client: Replace http request with https in order prevent false redirection

* Wed Dec 08 2021 Haibo Lin <hlin@redhat.com> - 0.3.6-1
- client: Suggest KRB5_TRACE env variable option on auth failure
- client: Improve odcs create-module user experience
- client: improve renew --help description

* Wed Aug 18 2021 Lubomír Sedlář <lsedlar@redhat.com> - 0.3.4-1
- New upstream release
- Backport patch to work with both authenticated and unauthenticated server

* Wed Jan 06 2021 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.52-3
- Bump release to allow rebuild

* Fri Dec 11 2020 Haibo Lin <hlin@redhat.com> - 0.2.52-2
- Install /usr/bin/odcs

* Fri Dec 11 2020 Haibo Lin <hlin@redhat.com> - 0.2.52-1
- new version

* Tue Nov 24 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.51-3
- Build a client only version

* Wed Nov 04 2020 Haibo Lin <hlin@redhat.com> - 0.2.51-2
- Backport patch

* Wed Nov 04 2020 Haibo Lin <hlin@redhat.com> - 0.2.51-1
- new version

* Wed Sep 30 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.50-2
- Backport patch to support development composes

* Wed Sep 30 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.50-1
- new version

* Wed Aug 19 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.49-4
- Actually include the patch

* Wed Aug 19 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.49-3
- Fix scratch module argument parser

* Wed Aug 19 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.49-2
- Add missing migration

* Tue Aug 18 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.49-1
- new version

* Fri Jul 03 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.48-2
- odcs-promote-compose: When hardlink fails because of EXDEV, fallback to copy

* Fri Jun 19 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.48-1
- New upstream release

* Fri May 22 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.47-1
- New upstream release

* Tue Apr 07 2020 Jan Kaluza <jkaluza@redhat.com> - 0.2.43-1
- New upstream release

* Wed Apr 01 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.42-1
- New upstream release

* Thu Feb 20 2020 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.38-1
- New upstream release

* Mon Nov 11 2019 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.37-1
- new version

* Thu Oct 03 2019 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.36-1
- new version

* Mon Sep 23 2019 Lubomír Sedlář <lsedlar@redhat.com> - 0.2.35-1
- new version

* Fri Aug 23 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.34-2
- fix flooding the log with rmtree error messages.

* Tue Aug 20 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.34-1
- new version

* Mon Aug 05 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.33-1
- new version

* Mon Jul 15 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.32-1
- new version

* Fri Jun 14 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.31-1
- new version

* Thu May 16 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.30-1
- new version

* Thu May 09 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.29-1
- new version

* Tue May 07 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.28-1
- new version

* Wed Apr 03 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.27-1
- new version

* Wed Apr 03 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.26-2
- fix the default raw config.

* Wed Apr 03 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.26-1
- new version

* Tue Mar 26 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.25-2
- fix compatibility with python-amqp-2.4.x

* Mon Mar 25 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.25-1
- new version

* Mon Mar 11 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.24-1
- new version

* Fri Feb 15 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.23-1
- new version

* Fri Feb 01 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.22-1
- new version

* Tue Jan 29 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.21-2
- do not require 'koji' in requirements.txt, because in RHEL7,
  it does not provide the egginfo.

* Tue Jan 29 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.21-1
- new version

* Thu Jan 03 2019 Jan Kaluza <jkaluza@redhat.com> - 0.2.20-1
- new version

* Tue Nov 27 2018 Luiz Carvalho <lui@redhat.com> - 0.2.19-1
- new version

* Thu Nov 08 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.18-1
- new version

* Tue Nov 06 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.16-1
- new version

* Tue Oct 23 2018 Chenxiong Qi <cqi@redhat.com> - 0.2.15-1
- new version

* Fri Sep 21 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.14-1
- new version

* Thu Sep 13 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.13-2
- fix tracebacks when multilib is not set.

* Wed Sep 12 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.13-1
- new version

* Mon Sep 03 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.12-2
- set '--nightly' as default PUNGI_KOJI_ARGS.

* Mon Sep 03 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.12-1
- new version

* Thu Aug 16 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.11-1
- new version

* Tue Jul 31 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.10-2
- bump the release for eng-rhel-7 repo

* Tue Jul 31 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.10-1
- new version

* Mon Jul 30 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.9-1
- new version

* Tue Jul 17 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.8-1
- new version

* Fri Jun 15 2018 Ralph Bean <rbean@redhat.com> - 0.2.6.1-1
- new version

* Thu Jun 14 2018 Ralph Bean <rbean@redhat.com> - 0.2.6-1
- updated to new version 0.2.6.

* Thu Jun 07 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.5-2
- Add dep on python-requests-kerberos.

* Thu Jun 07 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.5-1
- updated to new version 0.2.5.

* Mon Jun 04 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.4-1
- updated to new version 0.2.4

* Mon May 07 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.3-1
- updated to new version 0.2.3.

* Thu Apr 19 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.2-1
- updated to new version 0.2.2.

* Mon Mar 12 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.1-1
- updated to new version 0.2.1.

* Mon Feb 26 2018 Jan Kaluza <jkaluza@redhat.com> - 0.2.0-1
- updated to new version 0.2.0.

* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.1.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Mon Feb 05 2018 Jan Kaluza <jkaluza@redhat.com> - 0.1.7-2
- restart odcs-backend.service on failure.

* Mon Feb 05 2018 Jan Kaluza <jkaluza@redhat.com> - 0.1.7-1
- updated to new version 0.1.7.

* Thu Jan 11 2018 Jan Kaluza <jkaluza@redhat.com> - 0.1.6-1
- updated to new version 0.1.6.

* Tue Dec 12 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.5-5
- do not remove pungi ODCS composes

* Mon Dec 11 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.5-4
- fix Koji kerberos login with keytab

* Mon Dec 11 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.5-3
- fix Koji kerberos login with keytab

* Mon Dec 11 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.5-2
- fix traceback in unique_path.

* Fri Dec 08 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.5-1
- updated to new version 0.1.5

* Fri Nov 24 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.4-1
- updated to new version 0.1.4.

* Fri Nov 24 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.3-1
- updated to new version 0.1.3.

* Wed Nov 01 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.2-1
- updated to new version 0.1.2.

* Mon Oct 30 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.1-3
- Require:hardlink

* Mon Oct 30 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.1-1
- updated to new version 0.1.1.

* Thu Oct 12 2017 Jan Kaluza <jkaluza@redhat.com> - 0.1.0-2
- use http instead of https for pulp .repo file

* Fri Oct 06 2017 Ralph Bean <rbean@redhat.com> - 0.1.0-1
- new version

* Thu Oct 05 2017 Ralph Bean <rbean@redhat.com> - 0.0.8-1
- new version

* Fri Sep 29 2017 Ralph Bean <rbean@redhat.com> - 0.0.7-1
- new version

* Tue Sep 26 2017 Ralph Bean <rbean@redhat.com> - 0.0.6-1
- new version

* Thu Sep 21 2017 Jan Kaluza <jkaluza@redhat.com> - 0.0.5-1
- new version

* Thu Aug 10 2017 Jan Kaluza <jkaluza@redhat.com> - 0.0.4-1
- new version

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.3-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Tue Jul 18 2017 Jan Kaluza <jkaluza@redhat.com> - 0.0.3-4
- fix reversed condition for python2-* dependencies

* Mon Jul 17 2017 Jan Kaluza <jkaluza@redhat.com> - 0.0.3-3
- Add python2- prefix to requirements when it makes sense
- Add -p to install command to preserve timestamp
- Fix macros formatting, use _datadir instead of /usr/share

* Tue Jul 11 2017 Jan Kaluza <jkaluza@redhat.com> - 0.0.3-2
- fix dependencies

* Thu Jun 29 2017 Jan Kaluza <jkaluza@redhat.com> - 0.0.3-1
- Initial version of spec file