diff --git a/guest_info b/guest_info new file mode 100644 index 0000000..be8d748 --- /dev/null +++ b/guest_info @@ -0,0 +1,2 @@ +[DEFAULT] +# guest_id = placeholder to be overwritten when VM instance created diff --git a/openstack-trove-api.service b/openstack-trove-api.service new file mode 100644 index 0000000..0b0b19e --- /dev/null +++ b/openstack-trove-api.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack Trove API Service +After=syslog.target network.target mariadb.service + +[Service] +Type=simple +User=trove +ExecStart=/usr/bin/trove-api +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-trove-conductor.service b/openstack-trove-conductor.service new file mode 100644 index 0000000..ccda4fc --- /dev/null +++ b/openstack-trove-conductor.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack Trove Conductor Service +After=syslog.target network.target mariadb.service + +[Service] +Type=simple +User=trove +ExecStart=/usr/bin/trove-conductor +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-trove-guestagent.service b/openstack-trove-guestagent.service new file mode 100644 index 0000000..e8abca7 --- /dev/null +++ b/openstack-trove-guestagent.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack Trove guestagent Service +After=syslog.target network.target + +[Service] +Type=simple +User=trove +ExecStart=/usr/bin/trove-guestagent --config-file /usr/share/trove/trove-dist.conf --config-file /etc/trove/trove-guestagent.conf --config-file /etc/trove/guest_info +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-trove-taskmanager.service b/openstack-trove-taskmanager.service new file mode 100644 index 0000000..bf887bb --- /dev/null +++ b/openstack-trove-taskmanager.service @@ -0,0 +1,13 @@ +[Unit] +Description=OpenStack Trove taskmanager service +After=syslog.target network.target mariadb.service + +[Service] +Type=simple +User=trove +ExecStart=/usr/bin/trove-taskmanager +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/openstack-trove.spec b/openstack-trove.spec new file mode 100644 index 0000000..6760341 --- /dev/null +++ b/openstack-trove.spec @@ -0,0 +1,390 @@ +%global service trove +%{!?upstream_version: %global upstream_version %{version}%{?milestone}} + +%global common_desc OpenStack DBaaS (codename %{service}) provisioning service. + +%global with_doc 1 + +Name: openstack-%{service} +Version: 15.0.0 +Release: 1 +Summary: OpenStack DBaaS (%{service}) + +License: ASL 2.0 +URL: https://wiki.openstack.org/wiki/Trove +Source0: https://tarballs.openstack.org/%{service}/%{service}-%{upstream_version}.tar.gz + +# + +Source1: %{service}.logrotate +Source2: guest_info + +Source10: %{name}-api.service +Source11: %{name}-taskmanager.service +Source12: %{name}-conductor.service +Source13: %{name}-guestagent.service + +BuildArch: noarch +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pbr +# BuildRequires: python3-d2to1 +BuildRequires: python3-sphinx +BuildRequires: python3-crudini +BuildRequires: intltool +BuildRequires: openstack-macros + +# to build default config files +BuildRequires: python3-keystoneauth1 +BuildRequires: python3-keystonemiddleware +BuildRequires: python3-oslo-config +BuildRequires: python3-oslo-log +BuildRequires: python3-oslo-messaging +BuildRequires: python3-oslo-middleware +BuildRequires: python3-oslo-policy +BuildRequires: python3-osprofiler + +Requires: %{name}-api = %{version}-%{release} +Requires: %{name}-taskmanager = %{version}-%{release} +Requires: %{name}-conductor = %{version}-%{release} + + +%description +%{common_desc} + +%package common +Summary: Components common to all OpenStack %{service} services + +Requires: python3-%{service} = %{version}-%{release} + +%{?systemd_requires} +BuildRequires: systemd + +Requires(pre): shadow-utils +Requires: python3-pbr + +%description common +%{common_desc} + +This package contains scripts, config and dependencies shared +between all the OpenStack %{service} services. + + +%package api +Summary: OpenStack %{service} API service +Requires: %{name}-common = %{version}-%{release} + +%description api +%{common_desc} + +This package contains the %{service} interface daemon. + + +%package taskmanager +Summary: OpenStack %{service} taskmanager service +Requires: %{name}-common = %{version}-%{release} + +%description taskmanager +%{common_desc} + +This package contains the %{service} taskmanager service. + + +%package conductor +Summary: OpenStack %{service} conductor service +Requires: %{name}-common = %{version}-%{release} + +%description conductor +%{common_desc} + +This package contains the %{service} conductor service. + + +%package guestagent +Summary: OpenStack %{service} guest agent +Requires: python3-pexpect + +Requires: %{name}-common = %{version}-%{release} + +%description guestagent +%{common_desc} + +This package contains the %{service} guest agent service +that runs within the database VM instance. + + +%package -n python3-%{service} +Summary: Python libraries for %{service} +Requires: python3-PyMySQL + +Requires: python3-kombu + +Requires: python3-cryptography +Requires: python3-enum34 +Requires: python3-eventlet +Requires: python3-iso8601 +Requires: python3-netaddr +Requires: python3-lxml +Requires: python3-six +Requires: python3-stevedore +Requires: python3-xmltodict + +Requires: python3-webob + +# python-migrate instead by python-sqlalchemy-migrate +# Requires: python-migrate >= 0.11.0 + +Requires: python3-sqlalchemy +Requires: python3-paste +Requires: python3-paste-deploy +Requires: python3-routes + +Requires: python3-troveclient +Requires: python3-cinderclient +Requires: python3-designateclient +Requires: python3-glanceclient +Requires: python3-heatclient +Requires: python3-keystoneclient +Requires: python3-keystonemiddleware +Requires: python3-neutronclient +Requires: python3-novaclient +Requires: python3-swiftclient + +Requires: python3-oslo-concurrency +Requires: python3-oslo-config +Requires: python3-oslo-context +Requires: python3-oslo-db +Requires: python3-oslo-i18n +Requires: python3-oslo-log +Requires: python3-oslo-messaging +Requires: python3-oslo-middleware +Requires: python3-oslo-policy +Requires: python3-oslo-serialization +Requires: python3-oslo-service +Requires: python3-oslo-utils + +Requires: python3-osprofiler +Requires: python3-jsonschema +Requires: python3-babel +Requires: python3-jinja2 + +Requires: python3-httplib2 +Requires: python3-passlib + +%description -n python3-%{service} +%{common_desc} + +This package contains the %{service} python library. + +%package -n python3-%{service}-tests +Summary: Trove tests +Requires: python3-%{service} = %{version}-%{release} + +%description -n python3-%{service}-tests +%{common_desc} + +This package contains the Trove test files + +%if 0%{?with_doc} +%package doc +Summary: Documentation for OpenStack %{service} +BuildRequires: python3-openstackdocstheme +BuildRequires: python3-sphinx +%description doc +%{common_desc} + +This package contains documentation files for %{service}. +%endif + +%prep +%autosetup -n %{service}-%{upstream_version} + +# Avoid non-executable-script rpmlint while maintaining timestamps +find %{service} -name \*.py | +while read source; do + if head -n1 "$source" | grep -F '/usr/bin/env'; then + touch --ref="$source" "$source".ts + sed -i '/\/usr\/bin\/env python/{d;q}' "$source" + touch --ref="$source".ts "$source" + rm "$source".ts + fi +done + +# Remove the requirements file so that pbr hooks don't add it +# to distutils requires_dist config +%py_req_cleanup + +%build +%{__python3} setup.py build + +%install +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} + +# docs generation requires everything to be installed first + +%if 0%{?with_doc} +pushd doc + +SPHINX_DEBUG=1 sphinx-build -b html source build/html +# Fix hidden-file-or-dir warnings +rm -fr build/html/.doctrees build/html/.buildinfo + +# Create dir link to avoid a sphinx-build exception +mkdir -p build/man/.doctrees/ +ln -s . build/man/.doctrees/man +SPHINX_DEBUG=1 sphinx-build -b man source build/man +mkdir -p %{buildroot}%{_mandir}/man1 +install -p -D -m 644 build/man/*.1 %{buildroot}%{_mandir}/man1/ + +popd +%endif + +# Create config file + +export PYTHONPATH=$PYTHONPATH:. +oslo-config-generator --namespace trove.config --namespace oslo.messaging --namespace oslo.log --namespace oslo.log --namespace oslo.policy --output-file etc/%{service}/%{service}.conf.sample + +# Setup directories +install -d -m 755 %{buildroot}%{_unitdir} +install -d -m 755 %{buildroot}%{_datadir}/%{service} +install -d -m 755 %{buildroot}%{_sharedstatedir}/%{service} +install -d -m 750 %{buildroot}%{_localstatedir}/log/%{service} + +# Install Apache site file +install -p -D -m 640 etc/apache2/%{service} %{buildroot}%{_sysconfdir}/apache2/%{service} + +# Install config files +install -p -D -m 640 etc/%{service}/%{service}.conf.sample %{buildroot}%{_sysconfdir}/%{service}/%{service}.conf +# Use crudini to set some configuration keys +crudini --set %{buildroot}%{_sysconfdir}/%{service}/%{service}.conf database connection mysql://trove:trove@localhost/trove +crudini --set %{buildroot}%{_sysconfdir}/%{service}/%{service}.conf DEFAULT log_file %{_localstatedir}/log/%{service}/%{service}.log +mv %{buildroot}%{_prefix}/etc/%{service}/api-paste.ini %{buildroot}%{_sysconfdir}/%{service}/api-paste.ini +# Remove duplicate config files under /usr/etc/trove +rmdir %{buildroot}%{_prefix}/etc/%{service} +install -d -m 755 %{buildroot}%{_sysconfdir}/%{service} +install -p -D -m 640 etc/%{service}/%{service}.conf.sample %{buildroot}%{_sysconfdir}/%{service}/trove-taskmanager.conf +install -p -D -m 640 etc/%{service}/%{service}.conf.sample %{buildroot}%{_sysconfdir}/%{service}/trove-conductor.conf +install -p -D -m 640 etc/%{service}/%{service}.conf.sample %{buildroot}%{_sysconfdir}/%{service}/trove-guestagent.conf +install -p -D -m 640 %{SOURCE2} %{buildroot}%{_sysconfdir}/%{service}/guest_info + +# Install initscripts +install -p -m 644 %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{buildroot}%{_unitdir} + +# Install logrotate +install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} + +# Install pid directory +install -d -m 755 %{buildroot}%{_localstatedir}/run/%{service} + +# Remove unneeded in production stuff +rm -fr %{buildroot}%{_bindir}/trove-fake-mode +rm -fr %{buildroot}%{python3_sitelib}/run_tests.* +%pre common +# Origin: http://fedoraproject.org/wiki/Packaging:UsersAndGroups#Dynamic_allocation +USERNAME=%{service} +GROUPNAME=$USERNAME +HOMEDIR=%{_sharedstatedir}/$USERNAME +getent group $GROUPNAME >/dev/null || groupadd -r $GROUPNAME +getent passwd $USERNAME >/dev/null || \ + useradd -r -g $GROUPNAME -G $GROUPNAME -d $HOMEDIR -s /sbin/nologin \ + -c "$USERNAME Daemons" $USERNAME +exit 0 + +%post api +%systemd_post openstack-trove-api.service +%post taskmanager +%systemd_post openstack-trove-taskmanager.service +%post conductor +%systemd_post openstack-trove-conductor.service +%post guestagent +%systemd_post openstack-trove-guestagent.service + +%preun api +%systemd_preun openstack-trove-api.service +%preun taskmanager +%systemd_preun openstack-trove-taskmanager.service +%preun conductor +%systemd_preun openstack-trove-conductor.service +%preun guestagent +%systemd_preun openstack-trove-guestagent.service + +%postun api +%systemd_postun_with_restart openstack-trove-api.service +%postun taskmanager +%systemd_postun_with_restart openstack-trove-taskmanager.service +%postun conductor +%systemd_postun_with_restart openstack-trove-conductor.service +%postun guestagent +%systemd_postun_with_restart openstack-trove-guestagent.service + + +%files +%license LICENSE + +%files common +%license LICENSE +%dir %{_sysconfdir}/%{service} +%config(noreplace) %attr(0640, root, %{service}) %{_sysconfdir}/%{service}/%{service}.conf +%attr(0640, root, %{service}) %{_sysconfdir}/%{service}/api-paste.ini +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} + +%dir %attr(0750, %{service}, root) %{_localstatedir}/log/%{service} +%dir %attr(0755, %{service}, root) %{_localstatedir}/run/%{service} + +%{_bindir}/%{service}-manage +%{_bindir}/%{service}-status +%{_bindir}/trove-mgmt-taskmanager + +%{_datarootdir}/%{service} + +%defattr(-, %{service}, %{service}, -) +%dir %{_sharedstatedir}/%{service} + +%files api +%{_bindir}/%{service}-api +%{_unitdir}/%{name}-api.service +%config(noreplace) %attr(0640, root, %{service}) %{_sysconfdir}/apache2/%{service} + +%files taskmanager +%{_bindir}/%{service}-taskmanager +%{_unitdir}/%{name}-taskmanager.service +%config(noreplace) %attr(0640, root, %{service}) %{_sysconfdir}/%{service}/%{service}-taskmanager.conf + +%files conductor +%{_bindir}/%{service}-conductor +%{_unitdir}/%{name}-conductor.service +%config(noreplace) %attr(0640, root, %{service}) %{_sysconfdir}/%{service}/%{service}-conductor.conf + +%files guestagent +%{_bindir}/%{service}-guestagent +%{_unitdir}/%{name}-guestagent.service +%config(noreplace) %attr(0640, root, %{service}) %{_sysconfdir}/%{service}/%{service}-guestagent.conf +%config(noreplace) %attr(0640, root, %{service}) %{_sysconfdir}/%{service}/guest_info + +%files -n python3-%{service} +%license LICENSE +%{python3_sitelib}/%{service} +%{python3_sitelib}/%{service}-%{version}*.egg-info +%exclude %{python3_sitelib}/%{service}/tests + +%files -n python3-%{service}-tests +%license LICENSE +%{python3_sitelib}/%{service}/tests + +%if 0%{?with_doc} +%files doc +%license LICENSE +%doc doc/build/html +%{_mandir}/man1/* +%endif + +%changelog +* Thu Jul 29 2021 huangtianhua - 15.0.0-1 +- Upgrade to 15.0.0 to support OpenStack-W + +* Tue Jun 08 2021 liusheng +- Add missed apache config file + +* Tue May 18 2021 Python_Bot +- Package Spec generated + diff --git a/trove-15.0.0.tar.gz b/trove-15.0.0.tar.gz new file mode 100644 index 0000000..69e03e0 Binary files /dev/null and b/trove-15.0.0.tar.gz differ diff --git a/trove.logrotate b/trove.logrotate new file mode 100644 index 0000000..3279571 --- /dev/null +++ b/trove.logrotate @@ -0,0 +1,6 @@ +/var/log/trove/*.log { + rotate 14 + size 10M + missingok + compress +}