*/*: Clean PYTHON_COMPAT of obsolete impls
[gentoo.git] / sys-cluster / cinder / cinder-14.0.1.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=7
5
6 PYTHON_COMPAT=( python3_{6,7} )
7 inherit distutils-r1 eutils linux-info user
8
9 DESCRIPTION="Cinder is the OpenStack Block storage service, a spin out of nova-volumes"
10 HOMEPAGE="https://launchpad.net/cinder"
11
12 if [[ ${PV} == *9999 ]];then
13         inherit git-r3
14         SRC_URI="https://dev.gentoo.org/~prometheanfire/dist/openstack/cinder/rocky/cinder.conf.sample -> cinder.conf.sample-${PV}"
15         EGIT_REPO_URI="https://github.com/openstack/cinder.git"
16         EGIT_BRANCH="stable/stein"
17 else
18         SRC_URI="https://dev.gentoo.org/~prometheanfire/dist/openstack/cinder/rocky/cinder.conf.sample -> cinder.conf.sample-${PV}
19         https://tarballs.openstack.org/${PN}/${P}.tar.gz"
20         KEYWORDS="amd64 ~arm64 x86"
21 fi
22
23 LICENSE="Apache-2.0"
24 SLOT="0"
25 IUSE="+api +scheduler +volume infiniband iscsi lvm mysql +memcached postgres rdma sqlite +tcp test +tgt"
26 RESTRICT="!test? ( test )"
27 REQUIRED_USE="|| ( mysql postgres sqlite ) iscsi? ( tgt ) infiniband? ( rdma )"
28
29 CDEPEND=">=dev-python/pbr-2.0.0[${PYTHON_USEDEP}]
30         !~dev-python/pbr-2.1.0"
31 DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
32         ${CDEPEND}
33         app-admin/sudo"
34
35 RDEPEND="
36         ${CDEPEND}
37         >=dev-python/decorator-3.4.0[${PYTHON_USEDEP}]
38         >=dev-python/defusedxml-0.5.0[${PYTHON_USEDEP}]
39         >=dev-python/eventlet-0.18.4[${PYTHON_USEDEP}]
40         !~dev-python/eventlet-0.20.1[${PYTHON_USEDEP}]
41         >=dev-python/greenlet-0.4.1[${PYTHON_USEDEP}]
42         >=dev-python/httplib2-0.9.1[${PYTHON_USEDEP}]
43         >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
44         >=dev-python/jsonschema-2.6.0[${PYTHON_USEDEP}]
45         <dev-python/jsonschema-3.0.0[${PYTHON_USEDEP}]
46         virtual/python-ipaddress[${PYTHON_USEDEP}]
47         >=dev-python/keystoneauth-3.7.0[${PYTHON_USEDEP}]
48         >=dev-python/keystonemiddleware-4.21.0[${PYTHON_USEDEP}]
49         >=dev-python/lxml-3.4.1[${PYTHON_USEDEP}]
50         !~dev-python/lxml-3.7.0[${PYTHON_USEDEP}]
51         >=dev-python/oauth2client-1.5.0[${PYTHON_USEDEP}]
52         >=dev-python/oslo-config-5.2.0[${PYTHON_USEDEP}]
53         >=dev-python/oslo-concurrency-3.26.0[${PYTHON_USEDEP}]
54         >=dev-python/oslo-context-2.19.2[${PYTHON_USEDEP}]
55         >=dev-python/oslo-db-4.27.0[${PYTHON_USEDEP}]
56         >=dev-python/oslo-log-3.36.0[${PYTHON_USEDEP}]
57         >=dev-python/oslo-messaging-6.4.0[${PYTHON_USEDEP}]
58         >=dev-python/oslo-middleware-3.31.0[${PYTHON_USEDEP}]
59         >=dev-python/oslo-policy-1.44.1[${PYTHON_USEDEP}]
60         >=dev-python/oslo-privsep-1.32.0[${PYTHON_USEDEP}]
61         >=dev-python/oslo-reports-1.18.0[${PYTHON_USEDEP}]
62         >=dev-python/oslo-rootwrap-5.8.0[${PYTHON_USEDEP}]
63         >=dev-python/oslo-serialization-2.18.0[${PYTHON_USEDEP}]
64         !~dev-python/oslo-serialization-2.19.1[${PYTHON_USEDEP}]
65         >=dev-python/oslo-service-1.24.0[${PYTHON_USEDEP}]
66         !~dev-python/oslo-service-1.28.1[${PYTHON_USEDEP}]
67         >=dev-python/oslo-upgradecheck-0.1.0[${PYTHON_USEDEP}]
68         >=dev-python/oslo-utils-3.34.0[${PYTHON_USEDEP}]
69         >=dev-python/oslo-versionedobjects-1.31.2[${PYTHON_USEDEP}]
70         >=dev-python/osprofiler-1.4.0[${PYTHON_USEDEP}]
71         >=dev-python/paramiko-2.0.0[${PYTHON_USEDEP}]
72         >=dev-python/paste-2.0.2[${PYTHON_USEDEP}]
73         >=dev-python/pastedeploy-1.5.0[${PYTHON_USEDEP}]
74         >=dev-python/prettytable-0.7.1[${PYTHON_USEDEP}]
75         <dev-python/prettytable-0.8[${PYTHON_USEDEP}]
76         >=dev-python/psutil-3.2.2[${PYTHON_USEDEP}]
77         >=dev-python/pyparsing-2.1.0[${PYTHON_USEDEP}]
78         >=dev-python/python-barbicanclient-4.5.2[${PYTHON_USEDEP}]
79         >=dev-python/python-glanceclient-2.15.0[${PYTHON_USEDEP}]
80         >=dev-python/python-keystoneclient-3.15.0[${PYTHON_USEDEP}]
81         >=dev-python/python-novaclient-9.1.0[${PYTHON_USEDEP}]
82         >=dev-python/python-swiftclient-3.2.0[${PYTHON_USEDEP}]
83         >=dev-python/pytz-2013.6[${PYTHON_USEDEP}]
84         >=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
85         !~dev-python/requests-2.20.0[${PYTHON_USEDEP}]
86         >=dev-python/retrying-1.2.3[${PYTHON_USEDEP}]
87         !~dev-python/retrying-1.3.0[${PYTHON_USEDEP}]
88         >=dev-python/routes-2.3.1[${PYTHON_USEDEP}]
89         >=dev-python/taskflow-3.2.0[${PYTHON_USEDEP}]
90         >=dev-python/rtslib-fb-2.1.65[${PYTHON_USEDEP}]
91         >=dev-python/six-1.10.0[${PYTHON_USEDEP}]
92         sqlite? (
93                 >=dev-python/sqlalchemy-1.0.10[sqlite,${PYTHON_USEDEP}]
94                 !~dev-python/sqlalchemy-1.1.5[sqlite,${PYTHON_USEDEP}]
95                 !~dev-python/sqlalchemy-1.1.6[sqlite,${PYTHON_USEDEP}]
96                 !~dev-python/sqlalchemy-1.1.7[sqlite,${PYTHON_USEDEP}]
97                 !~dev-python/sqlalchemy-1.1.8[sqlite,${PYTHON_USEDEP}]
98         )
99         mysql? (
100                 >=dev-python/pymysql-0.7.6[${PYTHON_USEDEP}]
101                 !~dev-python/pymysql-0.7.7[${PYTHON_USEDEP}]
102                 >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
103                 !~dev-python/sqlalchemy-1.1.5[${PYTHON_USEDEP}]
104                 !~dev-python/sqlalchemy-1.1.6[${PYTHON_USEDEP}]
105                 !~dev-python/sqlalchemy-1.1.7[${PYTHON_USEDEP}]
106                 !~dev-python/sqlalchemy-1.1.8[${PYTHON_USEDEP}]
107         )
108         postgres? (
109                 >=dev-python/psycopg-2.5.0[${PYTHON_USEDEP}]
110                 >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
111                 !~dev-python/sqlalchemy-1.1.5[${PYTHON_USEDEP}]
112                 !~dev-python/sqlalchemy-1.1.6[${PYTHON_USEDEP}]
113                 !~dev-python/sqlalchemy-1.1.7[${PYTHON_USEDEP}]
114                 !~dev-python/sqlalchemy-1.1.8[${PYTHON_USEDEP}]
115         )
116         >=dev-python/sqlalchemy-migrate-0.11.0[${PYTHON_USEDEP}]
117         >=dev-python/stevedore-1.20.0[${PYTHON_USEDEP}]
118         ~dev-python/suds-0.6[${PYTHON_USEDEP}]
119         >=dev-python/webob-1.7.1[${PYTHON_USEDEP}]
120         >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
121         >=dev-python/oslo-vmware-2.17.0[${PYTHON_USEDEP}]
122         >=dev-python/os-brick-2.2.0[${PYTHON_USEDEP}]
123         >=dev-python/os-win-3.0.0[${PYTHON_USEDEP}]
124         >=dev-python/tooz-1.58.0[${PYTHON_USEDEP}]
125         >=dev-python/google-api-python-client-1.4.2[${PYTHON_USEDEP}]
126         >=dev-python/castellan-0.16.0[${PYTHON_USEDEP}]
127         >=dev-python/cryptography-2.1[${PYTHON_USEDEP}]
128         >=dev-python/cursive-0.2.1[${PYTHON_USEDEP}]
129         iscsi? (
130                 tgt? ( sys-block/tgt )
131                 sys-block/open-iscsi
132         )
133         lvm? ( sys-fs/lvm2 )
134         memcached? ( net-misc/memcached )
135         app-emulation/qemu
136         sys-fs/sysfsutils"
137 # qemu is needed for image conversion
138
139 #PATCHES=(
140 #)
141
142 pkg_pretend() {
143         linux-info_pkg_setup
144         CONFIG_CHECK_MODULES=""
145         if use tcp; then
146                 CONFIG_CHECK_MODULES+="SCSI_ISCSI_ATTRS ISCSI_TCP "
147         fi
148         if use rdma; then
149                 CONFIG_CHECK_MODULES+="INFINIBAND_ISER "
150         fi
151         if use infiniband; then
152                 CONFIG_CHECK_MODULES+="INFINIBAND_IPOIB INFINIBAND_USER_MAD INFINIBAND_USER_ACCESS"
153         fi
154         if linux_config_exists; then
155                 for module in ${CONFIG_CHECK_MODULES}; do
156                         linux_chkconfig_present ${module} || ewarn "${module} needs to be enabled"
157                 done
158         fi
159 }
160
161 pkg_setup() {
162         enewgroup cinder
163         enewuser cinder -1 -1 /var/lib/cinder cinder
164 }
165
166 python_prepare_all() {
167         sed -i '/^hacking/d' test-requirements.txt || die
168         # only used for docs
169         sed -i '/^sphinx-feature-classification/d' requirements.txt || die
170         distutils-r1_python_prepare_all
171 }
172
173 python_test() {
174         # Let's track progress of this # https://bugs.launchpad.net/swift/+bug/1249727
175         nosetests -I test_wsgi.py cinder/tests/ || die "tests failed under python2.7"
176 }
177
178 python_install_all() {
179         distutils-r1_python_install_all
180         keepdir /etc/cinder
181         dodir /etc/cinder/rootwrap.d
182
183         for svc in api scheduler volume; do
184                 newinitd "${FILESDIR}/cinder.initd" cinder-${svc}
185         done
186
187         insinto /etc/cinder
188         insopts -m0640 -o cinder -g cinder
189         doins "etc/cinder/api-httpd.conf"
190         doins "etc/cinder/logging_sample.conf"
191         doins "etc/cinder/rootwrap.conf"
192         doins "etc/cinder/api-paste.ini"
193         doins "etc/cinder/resource_filters.json"
194         newins "${DISTDIR}/cinder.conf.sample-${PV}" "cinder.conf.sample"
195         insinto /etc/cinder/rootwrap.d
196         doins "etc/cinder/rootwrap.d/volume.filters"
197
198         dodir /var/log/cinder
199         fowners cinder:cinder /var/log/cinder
200
201         #add sudoers definitions for user nova
202         insinto /etc/sudoers.d/
203         insopts -m 0440 -o root -g root
204         newins "${FILESDIR}/cinder.sudoersd" cinder
205         # stupid python
206         rm -r "${ED}"/usr/etc
207 }
208
209 pkg_postinst() {
210         if use iscsi ; then
211                 elog "Cinder needs tgtd to be installed and running to work with iscsi"
212                 elog "it also needs 'include /var/lib/cinder/volumes/*' in /etc/tgt/targets.conf"
213         fi
214 }