Merge branch 'staging' into core-updates
[jackhill/guix/guix.git] / gnu / packages / openstack.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
3 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
4 ;;; Copyright © 2016, 2017, 2019 Clément Lassieur <clement@lassieur.org>
5 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
6 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
7 ;;;
8 ;;; This file is part of GNU Guix.
9 ;;;
10 ;;; GNU Guix is free software; you can redistribute it and/or modify it
11 ;;; under the terms of the GNU General Public License as published by
12 ;;; the Free Software Foundation; either version 3 of the License, or (at
13 ;;; your option) any later version.
14 ;;;
15 ;;; GNU Guix is distributed in the hope that it will be useful, but
16 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;;; GNU General Public License for more details.
19 ;;;
20 ;;; You should have received a copy of the GNU General Public License
21 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23 (define-module (gnu packages openstack)
24 #:use-module (gnu packages)
25 #:use-module (gnu packages check)
26 #:use-module (gnu packages gnupg)
27 #:use-module (gnu packages python)
28 #:use-module (gnu packages python-crypto)
29 #:use-module (gnu packages python-web)
30 #:use-module (gnu packages python-xyz)
31 #:use-module (gnu packages sphinx)
32 #:use-module (gnu packages ssh)
33 #:use-module (gnu packages time)
34 #:use-module (gnu packages tls)
35 #:use-module (gnu packages version-control)
36 #:use-module (gnu packages xml)
37 #:use-module (guix build-system python)
38 #:use-module (guix download)
39 #:use-module ((guix licenses)
40 #:select (asl2.0))
41 #:use-module (guix packages)
42 #:use-module (srfi srfi-1))
43
44 (define-public python-bandit
45 (package
46 (name "python-bandit")
47 (version "1.4.0")
48 (source
49 (origin
50 (method url-fetch)
51 (uri (pypi-uri "bandit" version))
52 (sha256
53 (base32
54 "1m5bm42120zyazky4k0lp3d9r0jwhjmp6sb108xfr0vz952p15yb"))))
55 (build-system python-build-system)
56 (arguments
57 `(#:phases (modify-phases %standard-phases
58 (delete 'check)
59 (add-after 'install 'check
60 (lambda* (#:key inputs outputs #:allow-other-keys)
61 ;; Tests require the 'bandit' executable in PATH.
62 ;; It's only built during install time.
63 (add-installed-pythonpath inputs outputs)
64 (setenv "PATH" (string-append (assoc-ref outputs "out")
65 "/bin:" (getenv "PATH")))
66 (invoke "python" "setup.py" "testr"))))))
67 (propagated-inputs
68 `(("python-gitpython" ,python-gitpython)
69 ("python-pyyaml" ,python-pyyaml)
70 ("python-six" ,python-six)
71 ("python-stevedore" ,python-stevedore)))
72 (native-inputs
73 `(;; Tests.
74 ("python-beautifulsoup4" ,python-beautifulsoup4)
75 ("python-fixtures" ,python-fixtures)
76 ("python-mock" ,python-mock)
77 ("python-subunit" ,python-subunit)
78 ("python-testrepository" ,python-testrepository)
79 ("python-testscenarios" ,python-testscenarios)
80 ("python-testtools" ,python-testtools)))
81 (home-page "https://wiki.openstack.org/wiki/Security/Projects/Bandit")
82 (synopsis "Security oriented static analyser for python code")
83 (description
84 "Bandit is a tool designed to find common security issues in Python code.
85 To do this Bandit processes each file, builds an AST from it, and runs
86 appropriate plugins against the AST nodes. Once Bandit has finished scanning
87 all the files it generates a report.")
88 (license asl2.0)))
89
90 (define-public python2-bandit
91 (package-with-python2 python-bandit))
92
93 (define-public python-debtcollector
94 (package
95 (name "python-debtcollector")
96 (version "1.19.0")
97 (source
98 (origin
99 (method url-fetch)
100 (uri (pypi-uri "debtcollector" version))
101 (sha256
102 (base32
103 "06c7vyn184y9f0lsrwaz13aq63hdz5fjrd191b8nifx6acsni42f"))))
104 (build-system python-build-system)
105 (propagated-inputs
106 `(("python-pbr" ,python-pbr)
107 ("python-six" ,python-six)
108 ("python-wrapt" ,python-wrapt)))
109 (native-inputs
110 `(;; Tests.
111 ("python-subunit" ,python-subunit)
112 ("python-testrepository" ,python-testrepository)
113 ("python-testtools" ,python-testtools)))
114 (home-page "https://www.openstack.org/")
115 (synopsis
116 "Find deprecated patterns and strategies in Python code")
117 (description
118 "This package provides a collection of Python deprecation patterns and
119 strategies that help you collect your technical debt in a non-destructive
120 manner.")
121 (properties `((python2-variant . ,(delay python2-debtcollector))))
122 (license asl2.0)))
123
124 (define-public python2-debtcollector
125 (let ((base (package-with-python2 (strip-python2-variant
126 python-debtcollector))))
127 (package
128 (inherit base)
129 (propagated-inputs
130 `(("python2-funcsigs" ,python2-funcsigs)
131 ,@(package-propagated-inputs base))))))
132
133 (define-public python-hacking
134 (package
135 (name "python-hacking")
136 (version "1.0.0")
137 (source
138 (origin
139 (method url-fetch)
140 (uri (pypi-uri "hacking" version))
141 (sha256
142 (base32
143 "0s9l99s64jsyvm28fa4hzllbdi21sb7jn4gzdf1pd5ckvy7p4b0k"))))
144 (build-system python-build-system)
145 (propagated-inputs
146 `(("python-flake8" ,python-flake8-2.5)
147 ("python-mccabe-0.2.1" ,python-mccabe-0.2.1)
148 ("python-pbr" ,python-pbr)
149 ("python-pep8-1.5.7" ,python-pep8-1.5.7)
150 ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1)
151 ("python-six" ,python-six)))
152 (native-inputs
153 `( ;; Tests
154 ("python-eventlet" ,python-eventlet)
155 ("python-mock" ,python-mock)
156 ("python-reno" ,python-reno)
157 ("python-testrepository" ,python-testrepository)
158 ("python-testscenarios" ,python-testscenarios)))
159 (home-page "https://github.com/openstack-dev/hacking")
160 (synopsis "OpenStack hacking guideline enforcement")
161 (description
162 "Python-hacking is a set of flake8 plugins that test and enforce the
163 @uref{http://docs.openstack.org/developer/hacking/, OpenStack style
164 guidelines}.")
165 (license asl2.0)))
166
167 (define-public python2-hacking
168 (package-with-python2 python-hacking))
169
170 (define-public python-mox3
171 (package
172 (name "python-mox3")
173 (version "0.24.0")
174 (source
175 (origin
176 (method url-fetch)
177 (uri (pypi-uri "mox3" version))
178 (patches (search-patches "python-mox3-python3.6-compat.patch"))
179 (sha256
180 (base32
181 "0w58adwv7q9wzvmq9mlrk2asfk73myq9fpwy7mjkzsz3baa95zf5"))))
182 (build-system python-build-system)
183 (propagated-inputs
184 `(("python-fixtures" ,python-fixtures)
185 ("python-pbr" ,python-pbr)))
186 (native-inputs
187 `(("python-openstackdocstheme" ,python-openstackdocstheme)
188 ("python-sphinx" ,python-sphinx)
189 ("python-subunit" ,python-subunit)
190 ("python-testrepository" ,python-testrepository)
191 ("python-testtools" ,python-testtools)))
192 (home-page "https://www.openstack.org/")
193 (synopsis "Mock object framework for Python")
194 (description
195 "Mox3 is an unofficial port of the @uref{https://code.google.com/p/pymox/,
196 Google mox framework} to Python 3. It was meant to be as compatible
197 with mox as possible, but small enhancements have been made.")
198 (license asl2.0)))
199
200 (define-public python2-mox3
201 (package-with-python2 python-mox3))
202
203 (define-public python-openstackdocstheme
204 (package
205 (name "python-openstackdocstheme")
206 (version "1.18.1")
207 (source (origin
208 (method url-fetch)
209 (uri (pypi-uri "openstackdocstheme" version))
210 (sha256
211 (base32
212 "1ki5204rjdqjvr8xr9w2qc1z6b6d2i5jas0i70xzkf9njlzjzv2r"))))
213 (build-system python-build-system)
214 (arguments
215 ;; FIXME: Tests require an old version of python-hacking, which in
216 ;; turn depends on mox3 which depends on this package.
217 `(#:tests? #f))
218 (propagated-inputs
219 `(("python-dulwich" ,python-dulwich)
220 ("python-pbr" ,python-pbr)))
221 (native-inputs
222 `(("python-sphinx" ,python-sphinx)))
223 (home-page "https://docs.openstack.org/openstackdocstheme/latest/")
224 (synopsis "OpenStack Docs Theme")
225 (description
226 "This package provides themes and extensions for Sphinx for publishing
227 to docs.openstack.org and developer.openstack.org.")
228 (license asl2.0)))
229
230 (define-public python2-openstackdocstheme
231 (package-with-python2 python-openstackdocstheme))
232
233 (define-public python-os-client-config
234 (package
235 (name "python-os-client-config")
236 (version "1.12.0")
237 (source
238 (origin
239 (method url-fetch)
240 (uri (pypi-uri "os-client-config" version))
241 (sha256
242 (base32
243 "1vjn7667pswnmpqv6ngwyqm2xn46w90hi5b4pv2grwfz751cn1lf"))))
244 (build-system python-build-system)
245 (arguments
246 `(#:tests? #f)) ;; Circular dependency with python-oslotest
247 (propagated-inputs
248 `(("python-appdirs" ,python-appdirs)
249 ("python-pyyaml" ,python-pyyaml)))
250 (native-inputs
251 `(("python-pbr" ,python-pbr)
252 ("python-fixtures" ,python-fixtures)
253 ("python-mimeparse" ,python-mimeparse)
254 ("python-testrepository" ,python-testrepository)
255 ("python-testscenarios" ,python-testscenarios)
256 ("python-testtools" ,python-testtools)))
257 (home-page "https://www.openstack.org/")
258 (synopsis
259 "OpenStack Client Configuration Library")
260 (description
261 "The OpenStack Client Configuration Library is a library for collecting
262 client configuration for using an OpenStack cloud in a consistent and
263 comprehensive manner.")
264 (license asl2.0)))
265
266 (define-public python2-os-client-config
267 (package-with-python2 python-os-client-config))
268
269 (define-public python-os-testr
270 (package
271 (name "python-os-testr")
272 (version "0.8.0")
273 (source
274 (origin
275 (method url-fetch)
276 (uri (pypi-uri "os-testr" version))
277 (sha256
278 (base32
279 "0mknd9hlmxmihr755gjkxyjp180380jajq5i3zm34q7y7bi62lss"))))
280 (build-system python-build-system)
281 (arguments
282 ;; os-testr uses itself to run the tests. It seems like pbr writes the
283 ;; exectuable in the virtualenv when using tox. Not sure how to do this
284 ;; when building the package. Skip the tests for now.
285 `(#:tests? #f))
286 (propagated-inputs
287 `(("python-subunit" ,python-subunit)))
288 (native-inputs
289 `(("python-pbr" ,python-pbr)
290 ("python-testtools" ,python-testtools)
291 ("python-babel" ,python-babel)))
292 (home-page "https://www.openstack.org/")
293 (synopsis "Testr wrapper to provide functionality for OpenStack projects")
294 (description
295 "Os-testr provides developers with a testr wrapper and an output filter
296 for subunit.")
297 (license asl2.0)))
298
299 (define-public python2-os-testr
300 (package-with-python2 python-os-testr))
301
302 (define-public python-stevedore
303 (package
304 (name "python-stevedore")
305 (version "1.28.0")
306 (source
307 (origin
308 (method url-fetch)
309 (uri (pypi-uri "stevedore" version))
310 (sha256
311 (base32
312 "02ynfgwma84g59834dmvzr39mcppy5s229zf1w23c0qngf753izi"))))
313 (build-system python-build-system)
314 (propagated-inputs
315 `(("python-pbr" ,python-pbr)
316 ("python-six" ,python-six)))
317 (native-inputs
318 `(("python-mock" ,python-mock)
319 ("python-sphinx" ,python-sphinx)
320 ("python-testrepository" ,python-testrepository)))
321 (home-page "https://github.com/dreamhost/stevedore")
322 (synopsis "Manage dynamic plugins for Python applications")
323 (description
324 "Python makes loading code dynamically easy, allowing you to configure
325 and extend your application by discovering and loading extensions (\"plugins\")
326 at runtime. Many applications implement their own library for doing this,
327 using __import__ or importlib. Stevedore avoids creating yet another extension
328 mechanism by building on top of setuptools entry points. The code for managing
329 entry points tends to be repetitive, though, so stevedore provides manager
330 classes for implementing common patterns for using dynamically loaded
331 extensions.")
332 (license asl2.0)))
333
334 (define-public python2-stevedore
335 (package-with-python2 python-stevedore))
336
337 (define-public python-tempest-lib
338 (package
339 (name "python-tempest-lib")
340 (version "1.0.0")
341 (source
342 (origin
343 (method url-fetch)
344 (uri (pypi-uri "tempest-lib" version))
345 (sha256
346 (base32
347 "1cpp2vwmawpd29hjsklsps181lq2ah91cl412qvpnz228nf9sqn5"))))
348 (build-system python-build-system)
349 (arguments
350 `(#:tests? #f ; FIXME: Requires oslo.log >= 1.14.0.
351 #:phases
352 (modify-phases %standard-phases
353 (add-before
354 'check 'pre-check
355 (lambda _
356 (substitute* "tempest_lib/tests/cli/test_execute.py"
357 (("/bin/ls") (which "ls"))))))))
358 (propagated-inputs
359 `(("python-fixtures" ,python-fixtures)
360 ("python-httplib2" ,python-httplib2)
361 ("python-iso8601" ,python-iso8601)
362 ("python-jsonschema" ,python-jsonschema)
363 ("python-oslo.log" ,python-oslo.log)
364 ("python-paramiko" ,python-paramiko)
365 ("python-pbr" ,python-pbr)
366 ("python-six" ,python-six)))
367 (native-inputs
368 `(("python-babel" ,python-babel)
369 ("python-mock" ,python-mock)
370 ("python-os-testr" ,python-os-testr)
371 ("python-oslotest" ,python-oslotest)))
372 (home-page "https://www.openstack.org/")
373 (synopsis "OpenStack functional testing library")
374 (description
375 "Tempest-lib is a functional testing library for OpenStack. It provides
376 common features used in Tempest.")
377 (license asl2.0)))
378
379 (define-public python2-tempest-lib
380 (package-with-python2 python-tempest-lib))
381
382 ;; Packages from the Oslo library
383 (define-public python-oslo.config
384 (package
385 (name "python-oslo.config")
386 (version "5.2.0")
387 (source
388 (origin
389 (method url-fetch)
390 (uri (pypi-uri "oslo.config" version))
391 (sha256
392 (base32
393 "0ymf7jxbq29fifyvkwhfiys1qvljqfxdw8ajwzwaf3yiqidgpxqd"))))
394 (build-system python-build-system)
395 (propagated-inputs
396 `(("python-debtcollector" ,python-debtcollector)
397 ("python-netaddr" ,python-netaddr)
398 ("python-oslo.i18n" ,python-oslo.i18n)
399 ("python-pbr" ,python-pbr)
400 ("python-rfc3986" ,python-rfc3986)
401 ("python-six" ,python-six)
402 ("python-stevedore" ,python-stevedore)
403 ("python-pyyaml" ,python-pyyaml)))
404 (native-inputs
405 `(("python-bandit" ,python-bandit)
406 ("python-coverage" ,python-coverage)
407 ("python-mock" ,python-mock)
408 ("python-openstackdocstheme" ,python-openstackdocstheme)
409 ("python-oslotest" ,python-oslotest)
410 ("python-reno" ,python-reno)
411 ("python-sphinx" ,python-sphinx)
412 ("python-testrepository" ,python-testrepository)
413 ("python-testscenarios" ,python-testscenarios)
414 ("python-testtools" ,python-testtools)))
415 (home-page "https://launchpad.net/oslo")
416 (synopsis "Oslo Configuration API")
417 (description
418 "The Oslo configuration API supports parsing command line arguments and
419 .ini style configuration files.")
420 (license asl2.0)))
421
422 (define-public python2-oslo.config
423 (package-with-python2 python-oslo.config))
424
425 (define-public python-oslo.context
426 (package
427 (name "python-oslo.context")
428 (version "2.20.0")
429 (source
430 (origin
431 (method url-fetch)
432 (uri (pypi-uri "oslo.context" version))
433 (sha256
434 (base32
435 "0iiq9rpwg6wrdqnhf3d8z8g0g7fjhs5zn6qw6igvxplz2c3rbvvx"))))
436 (build-system python-build-system)
437 (propagated-inputs
438 `(("python-debtcollector" ,python-debtcollector)
439 ("python-pbr" ,python-pbr)))
440 (native-inputs
441 `(("python-fixtures" ,python-fixtures)
442 ("python-hacking" ,python-hacking)
443 ("python-oslotest" ,python-oslotest)))
444 (home-page "https://launchpad.net/oslo")
445 (synopsis "Oslo context library")
446 (description
447 "The Oslo context library has helpers to maintain useful information
448 about a request context. The request context is usually populated in the WSGI
449 pipeline and used by various modules such as logging.")
450 (license asl2.0)))
451
452 (define-public python2-oslo.context
453 (package-with-python2 python-oslo.context))
454
455 (define-public python-oslo.i18n
456 (package
457 (name "python-oslo.i18n")
458 (version "3.20.0")
459 (source
460 (origin
461 (method url-fetch)
462 (uri (pypi-uri "oslo.i18n" version))
463 (sha256
464 (base32
465 "0kjcdw4bk3mi4vqmqwhhq053kxbbbj05si6nwxd1pzx33z067ky3"))))
466 (build-system python-build-system)
467 (propagated-inputs
468 `(("python-babel" ,python-babel)
469 ("python-six" ,python-six)))
470 (native-inputs
471 `(("python-pbr" ,python-pbr)
472 ;; Tests
473 ("python-mock" ,python-mock)
474 ("python-mox3" ,python-mox3)
475 ("python-oslotest" ,python-oslotest)
476 ("python-testscenarios" ,python-testscenarios)))
477 (home-page "https://launchpad.net/oslo")
478 (synopsis "Oslo internationalization (i18n) library")
479 (description
480 "The oslo.i18n library contain utilities for working with
481 internationalization (i18n) features, especially translation for text strings
482 in an application or library.")
483 (license asl2.0)))
484
485 (define-public python2-oslo.i18n
486 (package-with-python2 python-oslo.i18n))
487
488 (define-public python-oslo.log
489 (package
490 (name "python-oslo.log")
491 (version "3.36.0")
492 (source
493 (origin
494 (method url-fetch)
495 (uri (pypi-uri "oslo.log" version))
496 (sha256
497 (base32
498 "0h7hplf1h8k24v75m3mq1jlrl74x5ynyr4hwgffsg5campxnza4x"))))
499 (build-system python-build-system)
500 (propagated-inputs
501 `(("python-dateutil" ,python-dateutil)
502 ("python-debtcollector" ,python-debtcollector)
503 ("python-monotonic" ,python-monotonic)
504 ("python-oslo.config" ,python-oslo.config)
505 ("python-oslo.context" ,python-oslo.context)
506 ("python-oslo.i18n" ,python-oslo.i18n)
507 ("python-oslo.utils" ,python-oslo.utils)
508 ("python-oslo.serialization" ,python-oslo.serialization)
509 ("python-pbr" ,python-pbr)
510 ("python-pyinotify" ,python-pyinotify)
511 ("python-six" ,python-six)))
512 (native-inputs
513 `(("python-mock" ,python-mock)
514 ("python-oslotest" ,python-oslotest)
515 ("python-subunit" ,python-subunit)
516 ("python-testrepository" ,python-testrepository)
517 ("python-testtools" ,python-testtools)))
518 (home-page "https://launchpad.net/oslo")
519 (synopsis "Python logging library of the Oslo project")
520 (description
521 "The oslo.log (logging) configuration library provides standardized
522 configuration for all OpenStack projects. It also provides custom formatters,
523 handlers and support for context specific logging (like resource id’s etc).")
524 (license asl2.0)))
525
526 (define-public python2-oslo.log
527 (package-with-python2 python-oslo.log))
528
529 (define-public python-oslo.serialization
530 (package
531 (name "python-oslo.serialization")
532 (version "2.24.0")
533 (source
534 (origin
535 (method url-fetch)
536 (uri (pypi-uri "oslo.serialization" version))
537 (sha256
538 (base32
539 "08bxkp98c617y58x630xq44iiffm7f0f3cwh6zbnlkgq0zgh7jk1"))))
540 (build-system python-build-system)
541 (propagated-inputs
542 `(("python-msgpack" ,python-msgpack)
543 ("python-netaddr" ,python-netaddr)
544 ("python-oslo.utils" ,python-oslo.utils)
545 ("python-six" ,python-six)
546 ("python-pytz" ,python-pytz)))
547 (native-inputs
548 `(("python-pbr" ,python-pbr)
549 ;; Tests.
550 ("python-mock" ,python-mock)
551 ("python-oslo.i18n" ,python-oslo.i18n)
552 ("python-oslotest" ,python-oslotest)))
553 (home-page "https://launchpad.net/oslo")
554 (synopsis "Oslo serialization library")
555 (description
556 "The oslo.serialization library provides support for representing objects
557 in transmittable and storable formats, such as JSON and MessagePack.")
558 (properties `((python2-variant . ,(delay python2-oslo.serialization))))
559 (license asl2.0)))
560
561 (define-public python2-oslo.serialization
562 (let ((base (package-with-python2 (strip-python2-variant
563 python-oslo.serialization))))
564 (package
565 (inherit base)
566 (native-inputs
567 `(("python2-ipaddress" ,python2-ipaddress)
568 ,@(package-native-inputs base))))))
569
570 (define-public python-reno
571 (package
572 (name "python-reno")
573 (version "2.7.0")
574 (source
575 (origin
576 (method url-fetch)
577 (uri (pypi-uri "reno" version))
578 (sha256
579 (base32 "0gwzi5dvacqx43smxl3rd1z33npn7gfhm50bvgmq90fib2q431wc"))))
580 (build-system python-build-system)
581 (arguments
582 `(#:phases
583 (modify-phases %standard-phases
584 (add-before 'check 'init-git
585 (lambda _
586 ;; reno expects a git repo
587 (invoke "git" "init"))))))
588 (propagated-inputs
589 `(("python-dulwich" ,python-dulwich)
590 ("python-pbr" ,python-pbr)
591 ("python-pyyaml" ,python-pyyaml)
592 ("python-six" ,python-six)))
593 (native-inputs
594 `(("python-testtools" ,python-testtools)
595 ("python-testscenarios" ,python-testscenarios)
596 ("python-testrepository" ,python-testrepository)
597 ("python-mock" ,python-mock)
598 ("python-docutils" ,python-docutils)
599 ("python-sphinx" ,python-sphinx)
600 ("gnupg" ,gnupg)
601 ("git" ,git-minimal)))
602 (home-page "http://docs.openstack.org/developer/reno/")
603 (synopsis "Release notes manager")
604 (description "Reno is a tool for storing release notes in a git repository
605 and building documentation from them.")
606 (license asl2.0)))
607
608 (define-public python2-reno
609 (package-with-python2 python-reno))
610
611 (define-public python-oslosphinx
612 (package
613 (name "python-oslosphinx")
614 (version "4.10.0")
615 (source
616 (origin
617 (method url-fetch)
618 (uri (pypi-uri "oslosphinx" version))
619 (sha256
620 (base32
621 "09mxqyabi68f3s3arvdhlhq0mn38vf74jbsfcg84151hcj6czhnl"))))
622 (build-system python-build-system)
623 (arguments
624 `(#:phases
625 (modify-phases %standard-phases
626 (replace 'check
627 (lambda _
628 ;; Note: Upstream tests would have also built the release notes.
629 ;; That only would work if we were in a git checkout.
630 ;; Therefore, we don't do it here.
631 (invoke "python" "setup.py" "build_sphinx"))))))
632 (propagated-inputs
633 `(("python-requests" ,python-requests)))
634 (native-inputs
635 `(("python-pbr" ,python-pbr)
636 ("python-docutils" ,python-docutils)
637 ("python-hacking" ,python-hacking)
638 ("python-sphinx" ,python-sphinx)))
639 (home-page "https://www.openstack.org/")
640 (synopsis "OpenStack sphinx extensions and theme")
641 (description
642 "This package provides themes and extensions for Sphinx documentation
643 from the OpenStack project.")
644 (license asl2.0)))
645
646 (define-public python2-oslosphinx
647 (package-with-python2 python-oslosphinx))
648
649 (define-public python-oslotest
650 (package
651 (name "python-oslotest")
652 (version "3.4.0")
653 (source
654 (origin
655 (method url-fetch)
656 (uri (pypi-uri "oslotest" version))
657 (sha256
658 (base32
659 "1pp8lq61d548cxcqi451czvrz5i5b3hyi2ry00wmngdgiswcqj1h"))))
660 (build-system python-build-system)
661 (propagated-inputs
662 `(("python-fixtures" ,python-fixtures)
663 ("python-mock" ,python-mock)
664 ("python-mox3" ,python-mox3)
665 ("python-os-client-config" ,python-os-client-config)
666 ("python-six" ,python-six)
667 ("python-subunit" ,python-subunit)
668 ("python-testrepository" ,python-testrepository)
669 ("python-testtools" ,python-testtools)))
670 (native-inputs
671 `(("python-pbr" ,python-pbr)
672 ("python-testscenarios" ,python-testscenarios)))
673 (home-page "https://launchpad.net/oslo")
674 (synopsis "Oslo test framework")
675 (description
676 "The Oslo Test framework provides common fixtures, support for debugging,
677 and better support for mocking results.")
678 (license asl2.0)))
679
680 (define-public python2-oslotest
681 (package-with-python2 python-oslotest))
682
683 (define-public python-oslo.utils
684 (package
685 (name "python-oslo.utils")
686 (version "3.36.2")
687 (source
688 (origin
689 (method url-fetch)
690 (uri (pypi-uri "oslo.utils" version))
691 (sha256
692 (base32
693 "1ipjcgg9z697wmibhcbg5lqpk5gafakdx4qkff3w255zr0mvw04r"))))
694 (build-system python-build-system)
695 (propagated-inputs
696 `(("python-debtcollector" ,python-debtcollector)
697 ("python-oslo.i18n" ,python-oslo.i18n)
698 ("python-iso8601" ,python-iso8601)
699 ("python-monotonic" ,python-monotonic)
700 ("python-netaddr" ,python-netaddr)
701 ("python-netifaces" ,python-netifaces)
702 ("python-pyparsing" ,python-pyparsing)
703 ("python-pytz" ,python-pytz)
704 ("python-six" ,python-six)))
705 (native-inputs
706 `(("python-pbr" ,python-pbr)
707 ;; Tests.
708 ("python-bandit" ,python-bandit)
709 ("python-ddt" ,python-ddt)
710 ("python-fixtures" ,python-fixtures)
711 ("python-oslo.config" ,python-oslo.config)
712 ("python-oslotest" ,python-oslotest)
713 ("python-mock" ,python-mock)
714 ("python-testrepository" ,python-testrepository)
715 ("python-testscenarios" ,python-testscenarios)
716 ("python-testtools" ,python-testtools)))
717 (home-page "https://launchpad.net/oslo")
718 (synopsis "Oslo utility library")
719 (description
720 "The @code{oslo.utils} library provides support for common utility type
721 functions, such as encoding, exception handling, string manipulation, and time
722 handling.")
723 (license asl2.0)))
724
725 (define-public python2-oslo.utils
726 (package-with-python2 python-oslo.utils))
727
728 (define-public python-keystoneclient
729 (package
730 (name "python-keystoneclient")
731 (version "1.8.1")
732 (source
733 (origin
734 (method url-fetch)
735 (uri (pypi-uri "python-keystoneclient" version))
736 (sha256
737 (base32
738 "1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4"))))
739 (build-system python-build-system)
740 (arguments
741 '(#:tests? #f)) ; FIXME: Many tests are failing.
742 (native-inputs
743 `(("python-sphinx" ,python-sphinx)
744 ;; and some packages for the tests
745 ("openssl" ,openssl)
746 ("python-coverage" ,python-coverage)
747 ("python-discover" ,python-discover)
748 ("python-fixtures" ,python-fixtures)
749 ("python-hacking" ,python-hacking)
750 ("python-keyring" ,python-keyring)
751 ("python-lxml" ,python-lxml)
752 ("python-mock" ,python-mock)
753 ("python-mox3" ,python-mox3)
754 ("python-oauthlib" ,python-oauthlib)
755 ("python-oslosphinx" ,python-oslosphinx)
756 ("python-oslotest" ,python-oslotest)
757 ("python-pycrypto" ,python-pycrypto)
758 ("python-requests-mock" ,python-requests-mock)
759 ("python-temptest-lib" ,python-tempest-lib)
760 ("python-testrepository" ,python-testrepository)
761 ("python-testresources" ,python-testresources)
762 ("python-testtools" ,python-testtools)
763 ("python-webob" ,python-webob)))
764 (propagated-inputs
765 `(("python-babel" ,python-babel)
766 ("python-debtcollector" ,python-debtcollector)
767 ("python-iso8601" ,python-iso8601)
768 ("python-netaddr" ,python-netaddr)
769 ("python-oslo.config" ,python-oslo.config)
770 ("python-oslo.i18n" ,python-oslo.i18n)
771 ("python-oslo.serialization" ,python-oslo.serialization)
772 ("python-oslo.utils" ,python-oslo.utils)
773 ("python-pbr" ,python-pbr)
774 ("python-prettytable" ,python-prettytable)
775 ("python-requests" ,python-requests)
776 ("python-six" ,python-six)
777 ("python-stevedore" ,python-stevedore)))
778 (home-page "https://www.openstack.org/")
779 (synopsis "Client Library for OpenStack Identity")
780 (description
781 "Python-keystoneclient is the identity service used by OpenStack for
782 authentication (authN) and high-level authorization (authZ). It currently
783 supports token-based authN with user/service authZ, and is scalable to support
784 OAuth, SAML, and OpenID in future versions. Out of the box, Keystone uses
785 SQLite for its identity store database, with the option to connect to external
786 LDAP.")
787 (license asl2.0)))
788
789 (define-public python2-keystoneclient
790 (let ((keystoneclient (package-with-python2 python-keystoneclient)))
791 (package (inherit keystoneclient)
792 (propagated-inputs
793 `(("python2-requests" ,python2-requests)
794 ,@(alist-delete "python-requests"
795 (package-propagated-inputs keystoneclient))))
796 (native-inputs
797 `(("python2-oauthlib" ,python2-oauthlib)
798 ("python2-oslosphinx" ,python2-oslosphinx)
799 ("python2-requests-mock" ,python2-requests-mock)
800 ("python2-tempest-lib" ,python2-tempest-lib)
801 ,@(fold alist-delete (package-native-inputs keystoneclient)
802 '("python-oauthlib" "python-oslosphinx" "python-requests-mock" "python-tempest-lib")))))))
803
804 (define-public python-swiftclient
805 (package
806 (name "python-swiftclient")
807 (version "2.6.0")
808 (source
809 (origin
810 (method url-fetch)
811 (uri (pypi-uri "python-swiftclient" version))
812 (sha256
813 (base32
814 "1j33l4z9vqh0scfncl4fxg01zr1hgqxhhai6gvcih1gccqm4nd7p"))))
815 (build-system python-build-system)
816 (native-inputs
817 `(("python-pbr" ,python-pbr)
818 ("python-sphinx" ,python-sphinx)
819 ;; The folloing packages are needed for the tests.
820 ("python-coverage" ,python-coverage)
821 ("python-discover" ,python-discover)
822 ("python-hacking" ,python-hacking)
823 ("python-mock" ,python-mock)
824 ("python-oslosphinx" ,python-oslosphinx)
825 ("python-keystoneclient" ,python-keystoneclient)
826 ("python-testrepository" ,python-testrepository)
827 ("python-testtools" ,python-testtools)))
828 (propagated-inputs
829 `(("python-requests" ,python-requests)
830 ("python-six" ,python-six)))
831 (home-page "https://www.openstack.org/")
832 (synopsis "OpenStack Object Storage API Client Library")
833 (description
834 "OpenStack Object Storage (code-named Swift) creates redundant, scalable
835 object storage using clusters of standardized servers to store petabytes of
836 accessible data. It is not a file system or real-time data storage system, but
837 rather a long-term storage system for a more permanent type of static data that
838 can be retrieved, leveraged, and then updated if necessary. Primary examples of
839 data that best fit this type of storage model are virtual machine images, photo
840 storage, email storage and backup archiving. Having no central \"brain\" or
841 master point of control provides greater scalability, redundancy and
842 permanence.")
843 (properties `((python2-variant . ,(delay python2-swiftclient))))
844 (license asl2.0)))
845
846 (define-public python2-swiftclient
847 (let ((swiftclient (package-with-python2
848 (strip-python2-variant python-swiftclient))))
849 (package (inherit swiftclient)
850 (propagated-inputs
851 `(("python2-futures" ,python2-futures)
852 ,@(package-propagated-inputs swiftclient))))))
853
854 (define-public python-git-review
855 (package
856 (name "python-git-review")
857 (version "1.28.0")
858 (source
859 (origin
860 (method url-fetch)
861 (uri (pypi-uri "git-review" version))
862 (sha256
863 (base32 "0nn17mfqvsa3ryjz53qjslmf60clc0vx2115kkj66h28p6vsnflf"))))
864 (build-system python-build-system)
865 (arguments
866 '(#:tests? #f ; tests require a running Gerrit server
867 #:phases
868 (modify-phases %standard-phases
869 (add-after 'install 'wrap-program
870 (lambda* (#:key inputs outputs #:allow-other-keys)
871 (let* ((out (assoc-ref outputs "out"))
872 (git (assoc-ref inputs "git"))
873 (openssh (assoc-ref inputs "openssh")))
874 (wrap-program (string-append out "/bin/git-review")
875 `("PATH" ":" prefix
876 ,(map (lambda (dir)
877 (string-append dir "/bin"))
878 (list git openssh)))))
879 #t)))))
880 (native-inputs
881 `(("python-pbr" ,python-pbr)))
882 (propagated-inputs
883 `(("python-requests" ,python-requests)))
884 (inputs
885 `(("git" ,git)
886 ("openssh" ,openssh)))
887 (home-page "https://docs.openstack.org/infra/git-review/")
888 (synopsis "Command-line tool for Gerrit")
889 (description
890 "Git-review is a command-line tool that helps submitting Git branches to
891 Gerrit for review, or fetching existing ones.")
892 (license asl2.0)))
893
894 (define-public python2-git-review
895 (package-with-python2 python-git-review))