!3 openstack-glance: add spec and source package

From: @zhangy1317
Reviewed-by: @joec88
Signed-off-by: @joec88
This commit is contained in:
openeuler-ci-bot 2021-02-10 10:28:43 +08:00 committed by Gitee
commit 2ff7425d6f
7 changed files with 431 additions and 0 deletions

BIN
glance-21.0.0.tar.gz Normal file

Binary file not shown.

View File

@ -0,0 +1,19 @@
[Unit]
Description=OpenStack Image Service API server
After=syslog.target network.target
After=mariadb.service postgresql.service rabbitmq-server.service
[Service]
Type=simple
User=glance
Group=glance
LimitNOFILE=131072
LimitNPROC=131072
WorkingDirectory=/var/lib/glance
PrivateTmp=yes
# the connection parameter might be stored in the glance-api related config files
ExecStartPre=-/usr/bin/glance-manage --config-dir=/etc/glance/glance.conf.d/ --config-dir=/etc/glance/glance-api.conf.d/ db sync
ExecStart=/usr/bin/glance-api
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,30 @@
The main service configuration (/etc/$project/$project.conf) can still be used
for configuration but the preferred way is to add config file snippets into
/etc/$project/$project.conf.d/ instead.
As part of the packaging, the package itself installs a config snippet at
/etc/$project/$project.conf.d/010-$project.conf with basic configuration. This
file should not be modified. In case there is a need to overwrite or add
settings, a XXX-$project.conf (XXX being a 3 digit number) should be created
instead.
Config directory file snippet naming should follow these conventions:
- snippets should start with "XXX-" where "X" is a number
- snippets must end with ".conf"
- config management systems (Crowbar, Salt, ...) should use numbers
between 100 and 499
- users should use numbers starting from 500
Configuring just a single $program (eg for Nova, $project is "nova" and
$program is "nova-api", "nova-compute", "nova-scheduler", ...) can be done
in a similar way. The config snippets should be placed in
/etc/$project/$program.conf.d/ . The same snippets rules apply here, too.
$program reads the configuration files in the following order:
- /etc/$project/$project.conf
- /etc/$project/$project.conf.d/*.conf (lexically sorted)
- /etc/$project/$program.conf.d/*.conf (lexically sorted)
The last configured key overwrites all previous ones. In particular, settings
in /etc/$project/$project.conf are overwritten by config values from any file
in /etc/$project/$project.conf.d/XXX-$project.conf .

1
openstack-glance.conf Normal file
View File

@ -0,0 +1 @@
d /run/glance 0755 glance glance -

View File

@ -0,0 +1,6 @@
[DEFAULT]
log_dir=/var/log/glance
lock_path=/run/glance
[paste_deploy]
flavor=keystone

View File

@ -0,0 +1,11 @@
/var/log/glance/*.log {
weekly
dateext
rotate 10
size 1M
missingok
compress
notifempty
su glance glance
minsize 100k
}

364
openstack-glance.spec Normal file
View File

@ -0,0 +1,364 @@
%if 0%{?rhel} || 0%{?fedora}
%global rdo 1
%endif
%if 0%{?rhel} == 7
%global skip_python3 1
%endif
%global with_doc 1
%if 0%{?rhel} || 0%{?fedora}
%global rdo 1
%endif
%global with_check 0
Name: openstack-glance
Version: 21.0.0
Release: 1%{?dist}
Epoch: 0
Summary: OpenStack Image Service (Glance)
License: ASL 2.0
URL: https://docs.openstack.org/glance
Source0: glance-%{version}.tar.gz
Source1: openstack-glance.logrotate
Source2: openstack-glance.conf
Source3: openstack-glance-api.service
Source6: openstack-glance.defaultconf
Source7: openstack-glance.README.config
BuildRequires: openstack-macros
BuildRequires: python3-paste
BuildRequires: python3-paste-deploy
BuildRequires: python3-routes
BuildRequires: python3-wsme
BuildRequires: python3-webob
BuildRequires: python3-cursive
BuildRequires: python3-ddt
BuildRequires: python3-debtcollector
BuildRequires: python3-defusedxml
BuildRequires: python3-eventlet
BuildRequires: python3-futurist
BuildRequires: python3-glance-store
BuildRequires: python3-httplib2
BuildRequires: python3-keystoneclient
BuildRequires: python3-keystonemiddleware
BuildRequires: python3-oslo-concurrency
BuildRequires: python3-oslo-config
BuildRequires: python3-oslo-context
BuildRequires: python3-oslo-db
BuildRequires: python3-oslo-log
BuildRequires: python3-oslo-messaging
BuildRequires: python3-oslo-middleware
BuildRequires: python3-oslo-policy
BuildRequires: python3-oslo-reports
BuildRequires: python3-oslo-upgradecheck
BuildRequires: python3-oslo-utils
BuildRequires: python3-oslotest
BuildRequires: python3-osprofiler
BuildRequires: python3-pyOpenSSL
BuildRequires: python3-retrying
BuildRequires: python3-sqlparse
BuildRequires: python3-stestr
BuildRequires: python3-stevedore
BuildRequires: python3-taskflow
BuildRequires: python3-pyxattr
Requires: logrotate
Requires: python3-glance = %{epoch}:%{version}-%{release}
BuildArch: noarch
%if 0%{?suse_version}
BuildRequires: systemd-rpm-macros
%{?systemd_requires}
%else
BuildRequires: systemd
Requires(post): systemd
Requires(postun): systemd
Requires(preun): systemd
%endif
%if 0%{?suse_version}
BuildRequires: qemu-tools
Requires(pre): pwdutils
%endif
%if 0%{?rdo}
Requires(pre): shadow-utils
%endif
%description
The Glance project provides a service where users can upload and discover
data assets that are meant to be used with other services. This currently
includes images and metadata definitions.
Glance image services include discovering, registering, and retrieving
virtual machine images. Glance has a RESTful API that allows querying of
VM image metadata as well as retrieval of the actual image.
VM images made available through Glance can be stored in a variety of
locations from simple filesystems to object-storage systems like the
OpenStack Swift project.
%package -n python3-glance
Summary: OpenStack Image Service (Glance) - Python module
Group: Applications/System
Requires: python3-paste
Requires: python3-paste-deploy
Requires: python3-prettytable
Requires: python3-routes
Requires: python3-sqlalchemy
Requires: python3-wsme
Requires: python3-webob
Requires: python3-alembic
Requires: python3-cryptography
Requires: python3-cursive
Requires: python3-debtcollector
Requires: python3-defusedxml
Requires: python3-eventlet
Requires: python3-futurist
Requires: python3-glance-store
Requires: python3-httplib2
Requires: python3-iso8601
Requires: python3-jsonschema
Requires: python3-keystoneauth1
Requires: python3-keystoneclient
Requires: python3-keystonemiddleware
Requires: python3-monotonic
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-reports
Requires: python3-oslo-upgradecheck
Requires: python3-oslo-utils
Requires: python3-osprofiler
Requires: python3-pbr
Requires: python3-pyOpenSSL
Requires: python3-retrying
Requires: python3-six
Requires: python3-migrate
Requires: python3-sqlparse
Requires: python3-stevedore
Requires: python3-taskflow
%description -n python3-glance
The Glance project provides a service where users can upload and discover
data assets that are meant to be used with other services. This currently
includes images and metadata definitions.
Glance image services include discovering, registering, and retrieving
virtual machine images. Glance has a RESTful API that allows querying of
VM image metadata as well as retrieval of the actual image.
VM images made available through Glance can be stored in a variety of
locations from simple filesystems to object-storage systems like the
OpenStack Swift project.
This package contains the Glance Python library.
%package -n python3-glance-tests
Summary: Glance tests
Requires: openstack-glance = %{epoch}:%{version}-%{release}
Provides: python-glance-tests = %{epoch}:%{version}-%{release}
%description -n python3-glance-tests
The Glance project provides a service where users can upload and discover
data assets that are meant to be used with other services. This currently
includes images and metadata definitions.
Glance image services include discovering, registering, and retrieving
virtual machine images. Glance has a RESTful API that allows querying of
VM image metadata as well as retrieval of the actual image.
VM images made available through Glance can be stored in a variety of
locations from simple filesystems to object-storage systems like the
OpenStack Swift project.
This package contains the Glance test files.
%if 0%{?with_doc}
%package doc
Summary: Documentation for OpenStack Image Service
Group: Documentation
BuildRequires: python3-sphinx
BuildRequires: python3-openstackdocstheme
BuildRequires: python3-sphinxcontrib-apidoc
%description doc
The Glance project provides a service where users can upload and discover
data assets that are meant to be used with other services. This currently
includes images and metadata definitions.
Glance image services include discovering, registering, and retrieving
virtual machine images. Glance has a RESTful API that allows querying of
VM image metadata as well as retrieval of the actual image.
VM images made available through Glance can be stored in a variety of
locations from simple filesystems to object-storage systems like the
OpenStack Swift project.
This package contains the documentation.
%endif
%package api
Summary: OpenStack Image service (Glance) - API
Group: Development/Languages/Python
Requires: %{name} = %{epoch}:%{version}-%{release}
%description api
The Glance project provides a service where users can upload and discover
data assets that are meant to be used with other services. This currently
includes images and metadata definitions.
Glance image services include discovering, registering, and retrieving
virtual machine images. Glance has a RESTful API that allows querying of
VM image metadata as well as retrieval of the actual image.
VM images made available through Glance can be stored in a variety of
locations from simple filesystems to object-storage systems like the
OpenStack Swift project.
This package contains the %{name} API server.
%prep
%autosetup -p1 -n glance-%{version}
%py_req_cleanup
%build
%{py3_build}
# build documentation
%if 0%{?with_doc}
PBR_VERSION=%{version}-%{release} sphinx-build -b html doc/source doc/build/html
PBR_VERSION=%{version}-%{release} sphinx-build -b man doc/source doc/build/man
rm -rf doc/build/html/.{doctrees,buildinfo}
rm -rf doc/build/man/.{doctrees,buildinfo}
%endif
# regenerate the sample config files
for service in api scrubber cache manage image-import; do
PYTHONPATH=. oslo-config-generator --config-file etc/oslo-config-generator/glance-$service.conf
done
# generate the sample policy
PYTHONPATH=. oslopolicy-sample-generator --config-file=etc/glance-policy-generator.conf --output etc/policy.json
rm -f etc/glance-policy-generator.conf
%install
%{py3_install}
# directories
install -d -m 755 %{buildroot}%{_sysconfdir}/glance
install -d -m 755 %{buildroot}%{_sysconfdir}/glance/glance.conf.d/
install -d -m 755 %{buildroot}%{_sysconfdir}/glance/glance-api.conf.d/
install -d -m 755 %{buildroot}%{_localstatedir}/lib/glance
install -d -m 755 %{buildroot}%{_localstatedir}/lib/glance/images
install -d -m 750 %{buildroot}%{_localstatedir}/log/glance
install -d -m 750 %{buildroot}%{_localstatedir}/cache/glance
install -d -m 700 %{buildroot}%{_rundir}/glance
# tmpfile generator
install -D -m 644 %{SOURCE2} %{buildroot}/%{_tmpfilesdir}/glance.conf
# install sample configs
cp -pr etc/* %{buildroot}%{_sysconfdir}/glance
for service in api scrubber cache manage swift image-import; do
mv %{buildroot}%{_sysconfdir}/glance/glance-$service.conf{.sample,}
done
install -p -D -m 640 %{SOURCE6} %{buildroot}%{_sysconfdir}/glance/README.config
rm -rf %{buildroot}%{_sysconfdir}/glance/oslo-config-generator
# default config
install -D -m 640 %{SOURCE6} %{buildroot}/%{_sysconfdir}/glance/glance.conf.d/010-glance.conf
# systemd
install -p -D -m 444 %{SOURCE3} %{buildroot}%{_unitdir}/openstack-glance-api.service
# logrotate
install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-glance
# move metadefs
mv %{buildroot}%{_prefix}%{_sysconfdir}/glance/metadefs/* %{buildroot}%{_sysconfdir}/glance/metadefs
# Remove duplicate files under /usr/etc
rm -rf %{buildroot}%{_prefix}%{_sysconfdir}/glance
# man pages
%if 0%{?with_doc}
mkdir -p %{buildroot}%{_mandir}/man1
install -p -D -m 644 doc/build/man/*.1 %{buildroot}%{_mandir}/man1/
%endif
%pre
%openstack_pre_user_group_create glance glance /sbin/nologin
%check
%if 0%{?with_check}
%if 0%{?rdo}
# Skip qemu-tools related tests, those fail on RDO due to missing VDI support
rm -v glance/tests/unit/common/test_format_inspector.py
%endif
PYTHONPATH=. python3 -m stestr.cli --test-path glance/tests/unit run
%endif
%post
%tmpfiles_create %{_tmpfilesdir}/glance.conf
%post api
%systemd_post %{name}-api.service
%preun api
%systemd_preun %{name}-api.service
%postun api
%systemd_postun_with_restart %{name}-api.service
%files
%license LICENSE
%_tmpfilesdir/glance.conf
%dir %attr(0750, root, glance) %{_sysconfdir}/glance
%dir %attr(0750, root, glance) %{_sysconfdir}/glance/glance.conf.d/
%dir %attr(0750, root, glance) %{_sysconfdir}/glance/glance-api.conf.d/
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance.conf.d/010-glance.conf
%{_sysconfdir}/glance/README.config
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance-api.conf
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance-cache.conf
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance-image-import.conf
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance-scrubber.conf
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance-swift.conf
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance-manage.conf
%config %{_sysconfdir}/glance/glance-api-paste.ini
%config %{_sysconfdir}/glance/policy.json
%config %{_sysconfdir}/glance/property-protections-policies.conf.sample
%config %{_sysconfdir}/glance/property-protections-roles.conf.sample
%config %{_sysconfdir}/glance/ovf-metadata.json.sample
%config %{_sysconfdir}/glance/schema-image.json
%dir %config %{_sysconfdir}/glance/metadefs
%{_sysconfdir}/glance/metadefs/README
%config %{_sysconfdir}/glance/metadefs/*.json
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%dir %attr(0755, glance, glance) %{_localstatedir}/lib/glance
%dir %attr(0755, glance, glance) %{_localstatedir}/lib/glance/images
%dir %attr(0750, glance, glance) %{_localstatedir}/log/glance
%dir %attr(0750, glance, glance) %{_localstatedir}/cache/glance
%{_bindir}/glance-cache-cleaner
%{_bindir}/glance-cache-manage
%{_bindir}/glance-cache-prefetcher
%{_bindir}/glance-cache-pruner
%{_bindir}/glance-control
%{_bindir}/glance-manage
%{_bindir}/glance-replicator
%{_bindir}/glance-scrubber
%{_bindir}/glance-status
%if 0%{?with_doc}
%{_mandir}/man1/glance-cache-cleaner.1.gz
%{_mandir}/man1/glance-cache-manage.1.gz
%{_mandir}/man1/glance-cache-prefetcher.1.gz
%{_mandir}/man1/glance-cache-pruner.1.gz
%{_mandir}/man1/glance-control.1.gz
%{_mandir}/man1/glance-manage.1.gz
%{_mandir}/man1/glance-replicator.1.gz
%{_mandir}/man1/glance-scrubber.1.gz
%endif
%files -n python3-glance
%license LICENSE
%{python3_sitelib}/glance*
%exclude %{python3_sitelib}/glance/tests
%files -n python3-glance-tests
%license LICENSE
%{python3_sitelib}/glance/tests
%if 0%{?with_doc}
%files doc
%license LICENSE
%doc doc/build/html
%endif
%files api
%{_unitdir}/openstack-glance-api.service
%{_bindir}/glance-api
%{_bindir}/glance-wsgi-api
%if 0%{?with_doc}
%{_mandir}/man1/glance-api.1.gz
%endif
%changelog