Name:           openstack-glance
Version:        19.0.4
Release:        3
Summary:        OpenStack Image Service (Glance)
License:        ASL 2.0
URL:            https://docs.openstack.org/glance

Source0:        https://tarballs.opendev.org/openstack/glance/glance-19.0.4.tar.gz

Source10:        openstack-glance-api.service
Source11:        openstack-glance-registry.service
Source12:        openstack-glance-scrubber.service

Source20:        openstack-glance.logrotate

Source30:        glance

BuildRequires:       openstack-macros
BuildRequires:       qemu-img
BuildRequires:       systemd
BuildRequires:       python3-paste
BuildRequires:       python3-paste-deploy
BuildRequires:       python3-prettytable
BuildRequires:       python3-routes
BuildRequires:       python3-sqlalchemy
BuildRequires:       python3-wsme
BuildRequires:       python3-webob
BuildRequires:       python3-alembic
BuildRequires:       python3-cryptography
BuildRequires:       python3-castellan
BuildRequires:       python3-cursive
BuildRequires:       python3-debtcollector
BuildRequires:       python3-defusedxml
BuildRequires:       python3-eventlet
BuildRequires:       python3-futurist
BuildRequires:       python3-glance-store
BuildRequires:       python3-httplib2
BuildRequires:       python3-iso8601
BuildRequires:       python3-jsonschema
BuildRequires:       python3-keystoneauth1
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-i18n
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-osprofiler
BuildRequires:       python3-pbr
BuildRequires:       python3-pyOpenSSL
BuildRequires:       python3-retrying
BuildRequires:       python3-six
BuildRequires:       python3-sqlalchemy-migrate
BuildRequires:       python3-sqlparse
BuildRequires:       python3-stevedore
BuildRequires:       python3-taskflow
BuildRequires:       python3-hacking
BuildRequires:       python3-babel
BuildRequires:       python3-coverage
BuildRequires:       python3-ddt
BuildRequires:       python3-fixtures
BuildRequires:       python3-requests
BuildRequires:       python3-testrepository
BuildRequires:       python3-testresources
BuildRequires:       python3-testscenarios
BuildRequires:       python3-testtools
BuildRequires:       python3-psutil
BuildRequires:       python3-oslotest
BuildRequires:       python3-stestr
BuildRequires:       python3-doc8
BuildRequires:       python3-pygments
BuildRequires:       python3-boto3
BuildRequires:       python3-PyMySQL
BuildRequires:       python3-psycopg2
BuildRequires:       python3-pysendfile
BuildRequires:       python3-xattr
BuildRequires:       python3-swiftclient
BuildRequires:       python3-cinderclient
BuildRequires:       python3-os-brick
BuildRequires:       python3-oslo-privsep

Requires:       openstack-glance-api = %{version}-%{release}
Requires:       openstack-glance-registry = %{version}-%{release}
Requires:       openstack-glance-scrubber = %{version}-%{release}
BuildArch:      noarch

%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 api
Summary:        OpenStack Image service (Glance) - API

Requires:       openstack-glance-common = %{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.

%package registry
Summary:        OpenStack Image service (Glance) - Registry

Requires:       openstack-glance-common = %{version}-%{release}

%description registry
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} registry server.

%package scrubber
Summary:        OpenStack Image service (Glance) - Scrubber

Requires:       openstack-glance-common = %{version}-%{release}

%description scrubber
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} scrubber server.

%package common
Summary:          OpenStack Image service (Glance) - Common

Requires:         python3-glance = %{version}-%{release}

%description common
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 scripts, config and dependencies shared between all the ${name} services.

%package -n python3-glance
Summary:        OpenStack Image Service (Glance) - Python module

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-castellan
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-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-sqlalchemy-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:       python3-glance = %{version}-%{release}
Requires:       python3-hacking
Requires:       python3-babel
Requires:       python3-coverage
Requires:       python3-ddt
Requires:       python3-fixtures
Requires:       python3-requests
Requires:       python3-testrepository
Requires:       python3-testresources
Requires:       python3-testscenarios
Requires:       python3-testtools
Requires:       python3-psutil
Requires:       python3-oslotest
Requires:       python3-stestr
Requires:       python3-doc8
Requires:       python3-pygments
Requires:       python3-boto3
Requires:       python3-PyMySQL
Requires:       python3-psycopg2
Requires:       python3-pysendfile
Requires:       python3-xattr
Requires:       python3-swiftclient
Requires:       python3-cinderclient
Requires:       python3-os-brick
Requires:       python3-oslo-privsep

%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.

%prep
%autosetup -p1 -n glance-%{version} 
%py_req_cleanup

%build
%{py3_build}
# regenerate the sample config files
for service in api registry scrubber cache manage image-import; do
    PYTHONPATH=. oslo-config-generator --config-file etc/oslo-config-generator/glance-$service.conf
done

%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
# install sample configs
cp -pr etc/* %{buildroot}%{_sysconfdir}/glance
for service in api registry scrubber cache manage swift image-import; do
    mv %{buildroot}%{_sysconfdir}/glance/glance-$service.conf{.sample,}
done
rm -rf %{buildroot}%{_sysconfdir}/glance/oslo-config-generator

# systemd
install -p -D -m 444 %{SOURCE10} %{buildroot}%{_unitdir}/openstack-glance-api.service
install -p -D -m 444 %{SOURCE11} %{buildroot}%{_unitdir}/openstack-glance-registry.service
install -p -D -m 444 %{SOURCE12} %{buildroot}%{_unitdir}/openstack-glance-scrubber.service
# logrotate
install -p -D -m 644 %{SOURCE20} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-glance
# sudo
install -D -m 440 -p %{SOURCE30} %{buildroot}%{_sysconfdir}/sudoers.d/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

%check
stestr run --black-regex 'glance.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vdi'

%pre common
%openstack_pre_user_group_create glance glance /sbin/nologin

%post api
%systemd_post openstack-glance-api.service
%post registry
%systemd_post openstack-glance-registry.service
%post scrubber
%systemd_post openstack-glance-scrubber.service

%preun api
%systemd_preun openstack-glance-api.service
%preun registry
%systemd_preun openstack-glance-registry.service
%preun scrubber
%systemd_preun openstack-glance-scrubber.service

%postun api
%systemd_postun_with_restart openstack-glance-api.service
%postun registry
%systemd_postun_with_restart openstack-glance-registry.service
%postun scrubber
%systemd_postun_with_restart openstack-glance-scrubber.service

%files

%files api
%{_bindir}/glance-api
%{_bindir}/glance-wsgi-api
%{_unitdir}/openstack-glance-api.service
%config(noreplace) %attr(0640, glance, glance) %{_sysconfdir}/glance/glance-api.conf

%files registry
%{_bindir}/glance-registry
%{_unitdir}/openstack-glance-registry.service
%config(noreplace) %attr(0640, glance, glance) %{_sysconfdir}/glance/glance-registry.conf

%files scrubber
%{_bindir}/glance-scrubber
%{_unitdir}/openstack-glance-scrubber.service
%config(noreplace) %attr(0640, glance, glance) %{_sysconfdir}/glance/glance-scrubber.conf

%files common
%license LICENSE
%dir %attr(0750, glance, glance) %{_sysconfdir}/glance
%dir %attr(0750, glance, glance) %{_sysconfdir}/glance/glance.conf.d/
%dir %attr(0750, glance, glance) %{_sysconfdir}/glance/glance-api.conf.d/
%dir %attr(0750, glance, glance) %{_sysconfdir}/glance/metadefs
%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

%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-swift.conf
%config(noreplace) %attr(0640, root, glance) %{_sysconfdir}/glance/glance-manage.conf
%config(noreplace) %attr(0440, root, root) %{_sysconfdir}/sudoers.d/glance
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config %{_sysconfdir}/glance/glance-api-paste.ini
%config %{_sysconfdir}/glance/glance-registry-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
%config %{_sysconfdir}/glance/metadefs/*.json
%{_sysconfdir}/glance/metadefs/README

%{_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-status

%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

%changelog
* Thu Nov 25 2021 lijiawei <ljw1101.vip@gmail.com> - 19.0.4-3
- Update the spec structure

* Mon Nov 15 2021 lijiawei <ljw1101.vip@gmail.com> - 19.0.4-2
- Fix the bugs about how to generate the etc/policy.json

* Fri Nov 05 2021 lijiawei <ljw1101.vip@gmail.com> - 19.0.4-1
- Support OpenStack Train release
