File openstack-monasca-notification.spec of Package openstack-monasca-notification

#
# spec file for package openstack-monasca-notification
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%global sname   monasca-notification
%define username    monasca-notification
%define groupname   monasca
%define notification_conf_dir %{_sysconfdir}/monasca/
%define notification_log_dir %{_localstatedir}/log/%{sname}
Name:           openstack-monasca-notification
Version:        9.0.1~dev2
Release:        0
Summary:        Notification engine sends notifications based on alarm transitions
License:        Apache-2.0
Group:          Development/Languages/Python
URL:            https://wiki.openstack.org/wiki/Monasca
Source0:        monasca-notification-master.tar.gz
Source1:        openstack-%{sname}.service
Source3:        openstack-monasca-notification.logrotate
BuildRequires:  fdupes
BuildRequires:  openstack-macros
BuildRequires:  python3-Jinja2
BuildRequires:  python3-SQLAlchemy
BuildRequires:  python3-keystoneauth1
BuildRequires:  python3-monasca-common
BuildRequires:  python3-monasca-statsd
BuildRequires:  python3-oslo.config
BuildRequires:  python3-oslo.log
BuildRequires:  python3-oslotest
BuildRequires:  python3-pbr
BuildRequires:  python3-requests
BuildRequires:  python3-simplejson
BuildRequires:  python3-six
BuildRequires:  python3-stestr
Requires:       logrotate
Requires:       python3-%{sname} = %{version}-%{release}
BuildArch:      noarch
%if 0%{?suse_version}
BuildRequires:  python3-jira
BuildRequires:  systemd-rpm-macros
Requires(pre):  pwdutils
%else
BuildRequires:  systemd
Requires(post): systemd
Requires(postun): systemd
Requires(preun): systemd
%endif

%description
This engine reads alarms from Kafka and then notifies the customer using
their configured notification method.
Multiple notification and retry engines can run in
parallel up to one per available Kafka partition. Zookeeper
is used to negotiate access to the Kafka partitions
whenever a new process joins or leaves the working set.

%package -n python3-%{sname}
Summary:        Python core module for monasca-notification
Group:          Development/Languages/Python
Requires:       python3-Jinja2
Requires:       python3-PyYAML
Requires:       python3-SQLAlchemy
Requires:       python3-debtcollector
Requires:       python3-keystoneauth1
Requires:       python3-monasca-common
Requires:       python3-monasca-statsd
Requires:       python3-oslo.config
Requires:       python3-oslo.log
Requires:       python3-requests
Requires:       python3-simplejson
Requires:       python3-six

%description -n python3-%{sname}
This engine reads alarms from Kafka and then notifies the customer using
their configured notification method.
Multiple notification and retry engines can run in
parallel up to one per available Kafka partition. Zookeeper
is used to negotiate access to the Kafka partitions
whenever a new process joins or leaves the working set.

This package contains the core Python module of Monasca-notification

%prep
%autosetup -p1 -n %{sname}-9.0.1.dev2
%py_req_cleanup

%build
%py3_build
# NOTE: RDO currenty does not have python-jira in the CI
%if 0%{?suse_version}
PYTHONPATH=. oslo-config-generator \
  --config-file config-generator/notification.conf \
  --output-file etc/monasca/notification.conf.sample
%endif

%install
%py3_install

## usr
install -d -m 755 %{buildroot}%{_sbindir}

## log dir
install -d -m 750 %{buildroot}%{notification_log_dir}

## logrotate
install -p -D -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-monasca-notification.logrotate

## etc
install -d -m 755 %{buildroot}%{notification_conf_dir}
%if 0%{?suse_version}
install -D -m 644 etc/monasca/notification.conf.sample %{buildroot}%{notification_conf_dir}/notification.conf
%endif

## system stuff
install -p -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
%if 0%{?suse_version}
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
%endif

%fdupes %{buildroot}%{python3_sitelib}

%check
# NOTE: RDO currenty does not have python-jira in the CI
# NOTE: SUSE fails on a weird mock issue
%if 0
%{openstack_stestr_run}
%endif

%pre
# create monasca group and monasca-notification user
%openstack_pre_user_group_create %{username} %{groupname}

%post
%systemd_post %{name}.service

%preun
%systemd_preun %{name}.service

%postun
%systemd_postun %{name}.service

if [ $1 -eq 0 ] ; then
  getent passwd %{username} > /dev/null
  if [ "$?" == "0" ] ; then
      userdel %{username}
  fi
fi

%files
%license LICENSE
%doc README.rst
%{_bindir}/monasca-notification
%{_unitdir}/%{name}.service
%dir %attr(-, root, %{groupname}) %{notification_conf_dir}
%if 0%{?suse_version}
%config(noreplace) %attr(640, root, %{groupname}) %{notification_conf_dir}/notification.conf
%endif
%config(noreplace) %{_sysconfdir}/logrotate.d/openstack-monasca-notification.logrotate
%dir %attr(750, %{username}, %{groupname}) %notification_log_dir
%if 0%{?suse_version}
%{_sbindir}/rc%{name}
%endif

%files -n python3-monasca-notification
%license LICENSE
%{python3_sitelib}/monasca_notification
%{python3_sitelib}/*.egg-info

%changelog
openSUSE Build Service is sponsored by