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