diff --git a/0001-Add-dummy-skip-metering-database-temporarily.patch b/0001-Add-dummy-skip-metering-database-temporarily.patch new file mode 100644 index 0000000..c90cddb --- /dev/null +++ b/0001-Add-dummy-skip-metering-database-temporarily.patch @@ -0,0 +1,30 @@ +From 5465d5ae21407b4065fd9c51011bfb384eadc1f3 Mon Sep 17 00:00:00 2001 +From: Alfredo Moralejo +Date: Fri, 27 Oct 2017 19:56:53 +0200 +Subject: [PATCH] Add dummy --skip-metering-database temporarily + +We need this for backwards compatibility after [1] +until we remove the option from all installers. + +[1] https://review.openstack.org/#/c/512700 +--- + ceilometer/cmd/storage.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/ceilometer/cmd/storage.py b/ceilometer/cmd/storage.py +index 70703d39..dc3875f8 100644 +--- a/ceilometer/cmd/storage.py ++++ b/ceilometer/cmd/storage.py +@@ -26,6 +26,9 @@ LOG = log.getLogger(__name__) + def upgrade(): + conf = cfg.ConfigOpts() + conf.register_cli_opts([ ++ cfg.BoolOpt('skip-metering-database', ++ help='Skip metering database upgrade.', ++ default=False), + cfg.BoolOpt('skip-gnocchi-resource-types', + help='Skip gnocchi resource-types upgrade.', + default=False), +-- +2.13.5 + diff --git a/ceilometer-13.1.2.tar.gz b/ceilometer-13.1.2.tar.gz new file mode 100644 index 0000000..6f89b0d Binary files /dev/null and b/ceilometer-13.1.2.tar.gz differ diff --git a/ceilometer-dist.conf b/ceilometer-dist.conf new file mode 100644 index 0000000..3a90f96 --- /dev/null +++ b/ceilometer-dist.conf @@ -0,0 +1,6 @@ +[DEFAULT] +log_dir = /var/log/ceilometer +use_stderr = False + +[database] +connection = mongodb://localhost:27017/ceilometer diff --git a/ceilometer-rootwrap-sudoers b/ceilometer-rootwrap-sudoers new file mode 100644 index 0000000..ba97166 --- /dev/null +++ b/ceilometer-rootwrap-sudoers @@ -0,0 +1,2 @@ +Defaults:ceilometer !requiretty +ceilometer ALL = (root) NOPASSWD: /usr/bin/ceilometer-rootwrap /etc/ceilometer/rootwrap.conf * diff --git a/ceilometer.logrotate b/ceilometer.logrotate new file mode 100644 index 0000000..ecacf11 --- /dev/null +++ b/ceilometer.logrotate @@ -0,0 +1,10 @@ +compress + +/var/log/ceilometer/*.log { + weekly + rotate 4 + size 10M + missingok + compress + minsize 100k +} diff --git a/openstack-ceilometer-central.service b/openstack-ceilometer-central.service new file mode 100644 index 0000000..e2e4d7b --- /dev/null +++ b/openstack-ceilometer-central.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack ceilometer central agent +After=syslog.target network.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-polling --polling-namespaces central --logfile /var/log/ceilometer/central.log +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-ceilometer-compute.service b/openstack-ceilometer-compute.service new file mode 100644 index 0000000..6fda628 --- /dev/null +++ b/openstack-ceilometer-compute.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack ceilometer compute agent +After=syslog.target network.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-polling --polling-namespaces compute --logfile /var/log/ceilometer/compute.log +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-ceilometer-ipmi.service b/openstack-ceilometer-ipmi.service new file mode 100644 index 0000000..c69aecb --- /dev/null +++ b/openstack-ceilometer-ipmi.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack ceilometer ipmi agent +After=syslog.target network.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-polling --polling-namespaces ipmi --logfile /var/log/ceilometer/agent-ipmi.log +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-ceilometer-notification.service b/openstack-ceilometer-notification.service new file mode 100644 index 0000000..45b42f8 --- /dev/null +++ b/openstack-ceilometer-notification.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack ceilometer notification agent +After=syslog.target network.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-agent-notification --logfile /var/log/ceilometer/agent-notification.log +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-ceilometer-polling.service b/openstack-ceilometer-polling.service new file mode 100644 index 0000000..b409b54 --- /dev/null +++ b/openstack-ceilometer-polling.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack ceilometer polling agent +After=syslog.target network.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-polling --logfile /var/log/ceilometer/polling.log +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-ceilometer.spec b/openstack-ceilometer.spec new file mode 100644 index 0000000..5df4ee4 --- /dev/null +++ b/openstack-ceilometer.spec @@ -0,0 +1,482 @@ +%global pypi_name ceilometer + +%global common_desc \ +OpenStack ceilometer provides services to measure and \ +collect metrics from OpenStack components. + +Name: openstack-ceilometer +Version: 13.1.2 +Release: 1 +Summary: OpenStack measurement collection service + +Group: Applications/System +License: ASL 2.0 +URL: https://wiki.openstack.org/wiki/Ceilometer +Source0: https://tarballs.openstack.org/%{pypi_name}/%{pypi_name}-%{version}.tar.gz +Source1: %{pypi_name}-dist.conf +Source2: %{pypi_name}.logrotate +Source4: ceilometer-rootwrap-sudoers + +Source11: %{name}-compute.service +Source12: %{name}-central.service +Source13: %{name}-notification.service +Source14: %{name}-ipmi.service +Source15: %{name}-polling.service + +# +Patch0001: 0001-Add-dummy-skip-metering-database-temporarily.patch + +BuildArch: noarch +BuildRequires: intltool +BuildRequires: openstack-macros +BuildRequires: python3-cotyledon +BuildRequires: python3-sphinx +BuildRequires: python3-setuptools +BuildRequires: python3-pbr >= 1.10.0 +BuildRequires: git +BuildRequires: python3-devel +# Required to compile translation files +BuildRequires: python3-babel + +BuildRequires: systemd + +Requires: %{name}-polling +Requires: %{name}-compute +Requires: %{name}-central +Requires: %{name}-notification +Requires: %{name}-ipmi + +%description +%{common_desc} + +%package -n python3-ceilometer +Summary: OpenStack ceilometer python libraries +Group: Applications/System + +Requires: python3-babel +Requires: python3-cachetools >= 2.1.0 +Requires: python3-eventlet +Requires: python3-futurist >= 1.8.0 +Requires: python3-cotyledon +Requires: python3-greenlet +Requires: python3-iso8601 +Requires: python3-keystoneauth1 >= 3.9.0 +Requires: python3-jsonpath-rw-ext +Requires: python3-stevedore >= 1.20.0 +Requires: python3-pbr +Requires: python3-six >= 1.9.0 +Requires: python3-tenacity >= 4.4.0 + +Requires: python3-alembic + +Requires: python3-oslo-config >= 5.2.0 +Requires: python3-netaddr +Requires: python3-oslo-rootwrap >= 2.0.0 +Requires: python3-oslo-vmware >= 0.6.0 +Requires: python3-requests >= 2.8.1 + +Requires: python3-pytz +Requires: python3-croniter + +Requires: python3-werkzeug + +Requires: python3-oslo-context +Requires: python3-oslo-concurrency >= 3.5.0 +Requires: python3-oslo-i18n >= 3.15.3 +Requires: python3-oslo-log >= 3.36.0 +Requires: python3-oslo-privsep >= 1.32.0 +Requires: python3-oslo-reports >= 1.18.0 +Requires: python3-oslo-upgradecheck >= 0.1.1 + +Requires: python3-pysnmp +Requires: python3-PyYAML +Requires: python3-lxml +Requires: python3-anyjson +Requires: python3-jsonpath-rw +Requires: python3-msgpack >= 0.5.0 +Requires: python3-retrying + + +%description -n python3-ceilometer +%{common_desc} + +This package contains the ceilometer python library. + + +%package common +Summary: Components common to all OpenStack ceilometer services +Group: Applications/System + +# Collector service has been removed but not replaced +Provides: openstack-ceilometer-collector = %{version}-%{release} +Obsoletes: openstack-ceilometer-collector < %{version}-%{release} +# api service has been removed +Obsoletes: openstack-ceilometer-api + +Requires: python3-ceilometer = %{version}-%{release} +Requires: python3-oslo-messaging >= 6.2.0 +Requires: python3-oslo-serialization >= 1.10.0 +Requires: python3-oslo-utils >= 3.37.0 +Requires: python3-tooz +Requires: python3-gnocchiclient >= 7.0.0 +Requires: python3-os-xenapi >= 0.3.3 +Requires: python3-novaclient >= 9.1.0 +Requires: python3-keystoneclient >= 3.15.0 +Requires: python3-neutronclient >= 6.7.0 +Requires: python3-glanceclient >= 2.8.0 +Requires: python3-swiftclient +Requires: python3-cinderclient >= 3.3.0 +Requires: python3-zaqarclient >= 1.3.0 + +Requires: python3-posix_ipc + +Requires(pre): shadow-utils + +# Config file generation +BuildRequires: python3-os-xenapi +BuildRequires: python3-oslo-config >= 5.2.0 +BuildRequires: python3-oslo-concurrency +BuildRequires: python3-oslo-log +BuildRequires: python3-oslo-messaging +BuildRequires: python3-oslo-privsep +BuildRequires: python3-oslo-reports +BuildRequires: python3-oslo-vmware >= 0.6.0 +BuildRequires: python3-glanceclient >= 2.8.0 +BuildRequires: python3-neutronclient +BuildRequires: python3-novaclient >= 9.1.0 +BuildRequires: python3-swiftclient +BuildRequires: python3-croniter +BuildRequires: python3-jsonpath-rw-ext +BuildRequires: python3-tooz +BuildRequires: python3-werkzeug +BuildRequires: python3-gnocchiclient >= 7.0.0 +BuildRequires: python3-cinderclient >= 3.3.0 +BuildRequires: python3-zaqarclient >= 1.3.0 +BuildRequires: python3-jsonpath-rw +BuildRequires: python3-lxml + +Requires: python3-ceilometer + +%description common +%{common_desc} + +This package contains components common to all OpenStack +ceilometer services. + + +%package compute +Summary: OpenStack ceilometer compute agent +Group: Applications/System + +Requires: %{name}-common = %{version}-%{release} +Requires: %{name}-polling = %{version}-%{release} + +Requires: python3-libvirt + + +%description compute +%{common_desc} + +This package contains the ceilometer agent for +running on OpenStack compute nodes. + + +%package central +Summary: OpenStack ceilometer central agent +Group: Applications/System + +Requires: %{name}-common = %{version}-%{release} +Requires: %{name}-polling = %{version}-%{release} + +%description central +%{common_desc} + +This package contains the central ceilometer agent. + + +%package notification +Summary: OpenStack ceilometer notification agent +Group: Applications/System + +Requires: %{name}-common = %{version}-%{release} + +%description notification +%{common_desc} + +This package contains the ceilometer notification agent +which pushes metrics to the collector service from the +various OpenStack services. + + +%package ipmi +Summary: OpenStack ceilometer ipmi agent +Group: Applications/System + +Requires: %{name}-common = %{version}-%{release} +Requires: %{name}-polling = %{version}-%{release} + +Requires: ipmitool + +%description ipmi +%{common_desc} + +This package contains the ipmi agent to be run on OpenStack +nodes from which IPMI sensor data is to be collected directly, +by-passing Ironic's management of baremetal. + + +%package polling +Summary: OpenStack ceilometer polling agent +Group: Applications/System + +Requires: %{name}-common = %{version}-%{release} + +Requires: python3-libvirt + +%description polling +Ceilometer aims to deliver a unique point of contact for billing systems to +acquire all counters they need to establish customer billing, across all +current and future OpenStack components. The delivery of counters must +be tracable and auditable, the counters must be easily extensible to support +new projects, and agents doing data collections should be +independent of the overall system. + +This package contains the polling service. + +%package -n python3-ceilometer-tests +Summary: Ceilometer tests +Requires: python3-ceilometer = %{version}-%{release} +Requires: python3-gabbi >= 1.30.0 + +%description -n python-ceilometer-tests +%{common_desc} + +This package contains the Ceilometer test files. + +%package doc +Summary: Documentation for OpenStack ceilometer +Group: Documentation + +# Required to build module documents +BuildRequires: python3-eventlet +BuildRequires: python3-openstackdocstheme +# while not strictly required, quiets the build down when building docs. +BuildRequires: python3-iso8601 + +%description doc +%{common_desc} + +This package contains documentation files for ceilometer. + +%prep +%autosetup -n ceilometer-%{upstream_version} -S git + +find . \( -name .gitignore -o -name .placeholder \) -delete + +find ceilometer -name \*.py -exec sed -i '/\/usr\/bin\/env python/{d;q}' {} + + +# TODO: Have the following handle multi line entries +sed -i '/setup_requires/d; /install_requires/d; /dependency_links/d' setup.py + +# Remove the requirements file so that pbr hooks don't add it +# to distutils requires_dist config +%py_req_cleanup + +%build +# Generate config file +PYTHONPATH=. oslo-config-generator-3 --config-file=etc/ceilometer/ceilometer-config-generator.conf + +%{py3_build} + +# Generate i18n files +%{__python3} setup.py compile_catalog -d build/lib/%{pypi_name}/locale + +# Programmatically update defaults in sample config +# which is installed at /etc/ceilometer/ceilometer.conf +# TODO: Make this more robust +# Note it only edits the first occurrence, so assumes a section ordering in sample +# and also doesn't support multi-valued variables. +while read name eq value; do + test "$name" && test "$value" || continue + sed -i "0,/^# *$name=/{s!^# *$name=.*!#$name=$value!}" etc/ceilometer/ceilometer.conf +done < %{SOURCE1} + +%install +%{py3_install} + +# docs generation requires everything to be installed first +%{py3_build} +# Fix hidden-file-or-dir warnings +rm -fr doc/build/html/.doctrees doc/build/html/.buildinfo + + +# Setup directories +install -d -m 755 %{buildroot}%{_sharedstatedir}/ceilometer +install -d -m 755 %{buildroot}%{_sharedstatedir}/ceilometer/tmp +install -d -m 750 %{buildroot}%{_localstatedir}/log/ceilometer + +# Install config files +install -d -m 755 %{buildroot}%{_sysconfdir}/ceilometer +install -d -m 755 %{buildroot}%{_sysconfdir}/ceilometer/rootwrap.d +install -d -m 755 %{buildroot}%{_sysconfdir}/sudoers.d +install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig +install -d -m 755 %{buildroot}%{_sysconfdir}/ceilometer/meters.d +install -p -D -m 640 %{SOURCE1} %{buildroot}%{_datadir}/ceilometer/ceilometer-dist.conf +install -p -D -m 440 %{SOURCE4} %{buildroot}%{_sysconfdir}/sudoers.d/ceilometer +install -p -D -m 640 etc/ceilometer/ceilometer.conf %{buildroot}%{_sysconfdir}/ceilometer/ceilometer.conf +install -p -D -m 640 ceilometer/pipeline/data/pipeline.yaml %{buildroot}%{_sysconfdir}/ceilometer/pipeline.yaml +install -p -D -m 640 etc/ceilometer/polling.yaml %{buildroot}%{_sysconfdir}/ceilometer/polling.yaml +install -p -D -m 640 ceilometer/pipeline/data/event_pipeline.yaml %{buildroot}%{_sysconfdir}/ceilometer/event_pipeline.yaml +install -p -D -m 640 ceilometer/pipeline/data/event_definitions.yaml %{buildroot}%{_sysconfdir}/ceilometer/event_definitions.yaml +install -p -D -m 640 etc/ceilometer/rootwrap.conf %{buildroot}%{_sysconfdir}/ceilometer/rootwrap.conf +install -p -D -m 640 etc/ceilometer/rootwrap.d/ipmi.filters %{buildroot}/%{_sysconfdir}/ceilometer/rootwrap.d/ipmi.filters +install -p -D -m 640 ceilometer/publisher/data/gnocchi_resources.yaml %{buildroot}%{_sysconfdir}/ceilometer/gnocchi_resources.yaml +install -p -D -m 640 ceilometer/data/meters.d/meters.yaml %{buildroot}%{_sysconfdir}/ceilometer/meters.d/meters.yaml + +# Install systemd units for services +install -p -D -m 644 %{SOURCE11} %{buildroot}%{_unitdir}/%{name}-compute.service +install -p -D -m 644 %{SOURCE12} %{buildroot}%{_unitdir}/%{name}-central.service +install -p -D -m 644 %{SOURCE13} %{buildroot}%{_unitdir}/%{name}-notification.service +install -p -D -m 644 %{SOURCE14} %{buildroot}%{_unitdir}/%{name}-ipmi.service +install -p -D -m 644 %{SOURCE15} %{buildroot}%{_unitdir}/%{name}-polling.service + +# Install logrotate +install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} + +# Install i18n .mo files (.po and .pot are not required) +install -d -m 755 %{buildroot}%{_datadir} +rm -f %{buildroot}%{python3_sitelib}/%{pypi_name}/locale/*/LC_*/%{pypi_name}*po +rm -f %{buildroot}%{python3_sitelib}/%{pypi_name}/locale/*pot +mv %{buildroot}%{python3_sitelib}/%{pypi_name}/locale %{buildroot}%{_datadir}/locale + +# Find language files +%find_lang %{pypi_name} --all-name + +# Remove unneeded in production stuff +rm -f %{buildroot}/usr/share/doc/ceilometer/README* + +# Remove unused files +rm -fr %{buildroot}/usr/etc + +%pre common +getent group ceilometer >/dev/null || groupadd -r ceilometer --gid 166 +if ! getent passwd ceilometer >/dev/null; then + # Id reservation request: https://bugzilla.redhat.com/923891 + useradd -u 166 -r -g ceilometer -G ceilometer,nobody -d %{_sharedstatedir}/ceilometer -s /sbin/nologin -c "OpenStack ceilometer Daemons" ceilometer +fi +exit 0 + +%post compute +%systemd_post %{name}-compute.service + +%post notification +%systemd_post %{name}-notification.service + +%post central +%systemd_post %{name}-central.service + +%post ipmi +%systemd_post %{name}-alarm-ipmi.service + +%post polling +%systemd_post %{name}-polling.service + +%preun compute +%systemd_preun %{name}-compute.service + +%preun notification +%systemd_preun %{name}-notification.service + +%preun central +%systemd_preun %{name}-central.service + +%preun ipmi +%systemd_preun %{name}-ipmi.service + +%preun polling +%systemd_preun %{name}-polling.service + +%postun compute +%systemd_postun_with_restart %{name}-compute.service + +%postun notification +%systemd_postun_with_restart %{name}-notification.service + +%postun central +%systemd_postun_with_restart %{name}-central.service + +%postun ipmi +%systemd_postun_with_restart %{name}-ipmi.service + + +%postun polling +%systemd_postun_with_restart %{name}-polling.service + + +%files common -f %{pypi_name}.lang +%license LICENSE +%dir %{_sysconfdir}/ceilometer +%attr(-, root, ceilometer) %{_datadir}/ceilometer/ceilometer-dist.conf +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/ceilometer.conf +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/pipeline.yaml +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/polling.yaml +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/gnocchi_resources.yaml +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} + +%dir %attr(0750, ceilometer, root) %{_localstatedir}/log/ceilometer + +%{_bindir}/ceilometer-send-sample +%{_bindir}/ceilometer-upgrade +%{_bindir}/ceilometer-status + +%defattr(-, ceilometer, ceilometer, -) +%dir %{_sharedstatedir}/ceilometer +%dir %{_sharedstatedir}/ceilometer/tmp + + +%files -n python3-ceilometer +%{python3_sitelib}/ceilometer +%{python3_sitelib}/ceilometer-*.egg-info +%exclude %{python3_sitelib}/ceilometer/tests + +%files -n python3-ceilometer-tests +%license LICENSE +%{python3_sitelib}/ceilometer/tests + +%files doc +%doc doc/build/html + + +%files compute +%{_unitdir}/%{name}-compute.service + + +%files notification +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/event_pipeline.yaml +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/event_definitions.yaml +%dir %{_sysconfdir}/ceilometer/meters.d +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/meters.d/meters.yaml +%{_bindir}/ceilometer-agent-notification +%{_unitdir}/%{name}-notification.service + + +%files central +%{_unitdir}/%{name}-central.service + + +%files ipmi +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/rootwrap.conf +%config(noreplace) %attr(-, root, ceilometer) %{_sysconfdir}/ceilometer/rootwrap.d/ipmi.filters +%{_bindir}/ceilometer-rootwrap +%{_sysconfdir}/sudoers.d/ceilometer +%{_unitdir}/%{name}-ipmi.service + +%files polling +%{_bindir}/ceilometer-polling +%{_unitdir}/%{name}-polling.service + + +%changelog +* Fri Nov 05 2021 liusheng - 13.1.2-1 +- Add openstack-ceilometer package of version 13.1.2 +