gnu: Remove python2-oslo.log.
[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 ;; 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 python-oslo.serialization
524 (package
525 (name "python-oslo.serialization")
526 (version "2.24.0")
527 (source
528 (origin
529 (method url-fetch)
530 (uri (pypi-uri "oslo.serialization" version))
531 (sha256
532 (base32
533 "08bxkp98c617y58x630xq44iiffm7f0f3cwh6zbnlkgq0zgh7jk1"))))
534 (build-system python-build-system)
535 (propagated-inputs
536 `(("python-msgpack" ,python-msgpack)
537 ("python-netaddr" ,python-netaddr)
538 ("python-oslo.utils" ,python-oslo.utils)
539 ("python-six" ,python-six)
540 ("python-pytz" ,python-pytz)))
541 (native-inputs
542 `(("python-pbr" ,python-pbr)
543 ;; Tests.
544 ("python-mock" ,python-mock)
545 ("python-oslo.i18n" ,python-oslo.i18n)
546 ("python-oslotest" ,python-oslotest)))
547 (home-page "https://launchpad.net/oslo")
548 (synopsis "Oslo serialization library")
549 (description
550 "The oslo.serialization library provides support for representing objects
551 in transmittable and storable formats, such as JSON and MessagePack.")
552 (properties `((python2-variant . ,(delay python2-oslo.serialization))))
553 (license asl2.0)))
554
555 (define-public python2-oslo.serialization
556 (let ((base (package-with-python2 (strip-python2-variant
557 python-oslo.serialization))))
558 (package
559 (inherit base)
560 (native-inputs
561 `(("python2-ipaddress" ,python2-ipaddress)
562 ,@(package-native-inputs base))))))
563
564 (define-public python-reno
565 (package
566 (name "python-reno")
567 (version "2.7.0")
568 (source
569 (origin
570 (method url-fetch)
571 (uri (pypi-uri "reno" version))
572 (sha256
573 (base32 "0gwzi5dvacqx43smxl3rd1z33npn7gfhm50bvgmq90fib2q431wc"))))
574 (build-system python-build-system)
575 (arguments
576 `(#:phases
577 (modify-phases %standard-phases
578 (add-before 'check 'init-git
579 (lambda _
580 ;; reno expects a git repo
581 (invoke "git" "init"))))))
582 (propagated-inputs
583 `(("python-dulwich" ,python-dulwich)
584 ("python-pbr" ,python-pbr)
585 ("python-pyyaml" ,python-pyyaml)
586 ("python-six" ,python-six)))
587 (native-inputs
588 `(("python-testtools" ,python-testtools)
589 ("python-testscenarios" ,python-testscenarios)
590 ("python-testrepository" ,python-testrepository)
591 ("python-mock" ,python-mock)
592 ("python-docutils" ,python-docutils)
593 ("python-sphinx" ,python-sphinx)
594 ("gnupg" ,gnupg)
595 ("git" ,git-minimal)))
596 (home-page "https://docs.openstack.org/reno/latest/")
597 (synopsis "Release notes manager")
598 (description "Reno is a tool for storing release notes in a git repository
599 and building documentation from them.")
600 (license asl2.0)))
601
602 (define-public python2-reno
603 (package-with-python2 python-reno))
604
605 (define-public python-oslosphinx
606 (package
607 (name "python-oslosphinx")
608 (version "4.10.0")
609 (source
610 (origin
611 (method url-fetch)
612 (uri (pypi-uri "oslosphinx" version))
613 (sha256
614 (base32
615 "09mxqyabi68f3s3arvdhlhq0mn38vf74jbsfcg84151hcj6czhnl"))))
616 (build-system python-build-system)
617 (arguments
618 `(#:phases
619 (modify-phases %standard-phases
620 (replace 'check
621 (lambda _
622 ;; Note: Upstream tests would have also built the release notes.
623 ;; That only would work if we were in a git checkout.
624 ;; Therefore, we don't do it here.
625 (invoke "python" "setup.py" "build_sphinx"))))))
626 (propagated-inputs
627 `(("python-requests" ,python-requests)))
628 (native-inputs
629 `(("python-pbr" ,python-pbr)
630 ("python-docutils" ,python-docutils)
631 ("python-hacking" ,python-hacking)
632 ("python-sphinx" ,python-sphinx)))
633 (home-page "https://www.openstack.org/")
634 (synopsis "OpenStack sphinx extensions and theme")
635 (description
636 "This package provides themes and extensions for Sphinx documentation
637 from the OpenStack project.")
638 (license asl2.0)))
639
640 (define-public python2-oslosphinx
641 (package-with-python2 python-oslosphinx))
642
643 (define-public python-oslotest
644 (package
645 (name "python-oslotest")
646 (version "3.4.0")
647 (source
648 (origin
649 (method url-fetch)
650 (uri (pypi-uri "oslotest" version))
651 (sha256
652 (base32
653 "1pp8lq61d548cxcqi451czvrz5i5b3hyi2ry00wmngdgiswcqj1h"))))
654 (build-system python-build-system)
655 (propagated-inputs
656 `(("python-fixtures" ,python-fixtures)
657 ("python-mock" ,python-mock)
658 ("python-mox3" ,python-mox3)
659 ("python-os-client-config" ,python-os-client-config)
660 ("python-six" ,python-six)
661 ("python-subunit" ,python-subunit)
662 ("python-testrepository" ,python-testrepository)
663 ("python-testtools" ,python-testtools)))
664 (native-inputs
665 `(("python-pbr" ,python-pbr)
666 ("python-testscenarios" ,python-testscenarios)))
667 (home-page "https://launchpad.net/oslo")
668 (synopsis "Oslo test framework")
669 (description
670 "The Oslo Test framework provides common fixtures, support for debugging,
671 and better support for mocking results.")
672 (license asl2.0)))
673
674 (define-public python2-oslotest
675 (package-with-python2 python-oslotest))
676
677 (define-public python-oslo.utils
678 (package
679 (name "python-oslo.utils")
680 (version "3.36.2")
681 (source
682 (origin
683 (method url-fetch)
684 (uri (pypi-uri "oslo.utils" version))
685 (sha256
686 (base32
687 "1ipjcgg9z697wmibhcbg5lqpk5gafakdx4qkff3w255zr0mvw04r"))))
688 (build-system python-build-system)
689 (propagated-inputs
690 `(("python-debtcollector" ,python-debtcollector)
691 ("python-oslo.i18n" ,python-oslo.i18n)
692 ("python-iso8601" ,python-iso8601)
693 ("python-monotonic" ,python-monotonic)
694 ("python-netaddr" ,python-netaddr)
695 ("python-netifaces" ,python-netifaces)
696 ("python-pyparsing" ,python-pyparsing)
697 ("python-pytz" ,python-pytz)
698 ("python-six" ,python-six)))
699 (native-inputs
700 `(("python-pbr" ,python-pbr)
701 ;; Tests.
702 ("python-bandit" ,python-bandit)
703 ("python-ddt" ,python-ddt)
704 ("python-fixtures" ,python-fixtures)
705 ("python-oslo.config" ,python-oslo.config)
706 ("python-oslotest" ,python-oslotest)
707 ("python-mock" ,python-mock)
708 ("python-testrepository" ,python-testrepository)
709 ("python-testscenarios" ,python-testscenarios)
710 ("python-testtools" ,python-testtools)))
711 (home-page "https://launchpad.net/oslo")
712 (synopsis "Oslo utility library")
713 (description
714 "The @code{oslo.utils} library provides support for common utility type
715 functions, such as encoding, exception handling, string manipulation, and time
716 handling.")
717 (license asl2.0)))
718
719 (define-public python2-oslo.utils
720 (package-with-python2 python-oslo.utils))
721
722 (define-public python-keystoneclient
723 (package
724 (name "python-keystoneclient")
725 (version "1.8.1")
726 (source
727 (origin
728 (method url-fetch)
729 (uri (pypi-uri "python-keystoneclient" version))
730 (sha256
731 (base32
732 "1w4csvkah67rfpxylxnvs2s3594i0f9isy8pf4gnsqs5zirvjaa4"))))
733 (build-system python-build-system)
734 (arguments
735 '(#:tests? #f)) ; FIXME: Many tests are failing.
736 (native-inputs
737 `(("python-sphinx" ,python-sphinx)
738 ;; and some packages for the tests
739 ("openssl" ,openssl)
740 ("python-coverage" ,python-coverage)
741 ("python-discover" ,python-discover)
742 ("python-fixtures" ,python-fixtures)
743 ("python-hacking" ,python-hacking)
744 ("python-keyring" ,python-keyring)
745 ("python-lxml" ,python-lxml)
746 ("python-mock" ,python-mock)
747 ("python-mox3" ,python-mox3)
748 ("python-oauthlib" ,python-oauthlib)
749 ("python-oslosphinx" ,python-oslosphinx)
750 ("python-oslotest" ,python-oslotest)
751 ("python-pycrypto" ,python-pycrypto)
752 ("python-requests-mock" ,python-requests-mock)
753 ("python-temptest-lib" ,python-tempest-lib)
754 ("python-testrepository" ,python-testrepository)
755 ("python-testresources" ,python-testresources)
756 ("python-testtools" ,python-testtools)
757 ("python-webob" ,python-webob)))
758 (propagated-inputs
759 `(("python-babel" ,python-babel)
760 ("python-debtcollector" ,python-debtcollector)
761 ("python-iso8601" ,python-iso8601)
762 ("python-netaddr" ,python-netaddr)
763 ("python-oslo.config" ,python-oslo.config)
764 ("python-oslo.i18n" ,python-oslo.i18n)
765 ("python-oslo.serialization" ,python-oslo.serialization)
766 ("python-oslo.utils" ,python-oslo.utils)
767 ("python-pbr" ,python-pbr)
768 ("python-prettytable" ,python-prettytable)
769 ("python-requests" ,python-requests)
770 ("python-six" ,python-six)
771 ("python-stevedore" ,python-stevedore)))
772 (home-page "https://www.openstack.org/")
773 (synopsis "Client Library for OpenStack Identity")
774 (description
775 "Python-keystoneclient is the identity service used by OpenStack for
776 authentication (authN) and high-level authorization (authZ). It currently
777 supports token-based authN with user/service authZ, and is scalable to support
778 OAuth, SAML, and OpenID in future versions. Out of the box, Keystone uses
779 SQLite for its identity store database, with the option to connect to external
780 LDAP.")
781 (license asl2.0)))
782
783 (define-public python-swiftclient
784 (package
785 (name "python-swiftclient")
786 (version "2.6.0")
787 (source
788 (origin
789 (method url-fetch)
790 (uri (pypi-uri "python-swiftclient" version))
791 (sha256
792 (base32
793 "1j33l4z9vqh0scfncl4fxg01zr1hgqxhhai6gvcih1gccqm4nd7p"))))
794 (build-system python-build-system)
795 (native-inputs
796 `(("python-pbr" ,python-pbr)
797 ("python-sphinx" ,python-sphinx)
798 ;; The folloing packages are needed for the tests.
799 ("python-coverage" ,python-coverage)
800 ("python-discover" ,python-discover)
801 ("python-hacking" ,python-hacking)
802 ("python-mock" ,python-mock)
803 ("python-oslosphinx" ,python-oslosphinx)
804 ("python-keystoneclient" ,python-keystoneclient)
805 ("python-testrepository" ,python-testrepository)
806 ("python-testtools" ,python-testtools)))
807 (propagated-inputs
808 `(("python-requests" ,python-requests)
809 ("python-six" ,python-six)))
810 (home-page "https://www.openstack.org/")
811 (synopsis "OpenStack Object Storage API Client Library")
812 (description
813 "OpenStack Object Storage (code-named Swift) creates redundant, scalable
814 object storage using clusters of standardized servers to store petabytes of
815 accessible data. It is not a file system or real-time data storage system, but
816 rather a long-term storage system for a more permanent type of static data that
817 can be retrieved, leveraged, and then updated if necessary. Primary examples of
818 data that best fit this type of storage model are virtual machine images, photo
819 storage, email storage and backup archiving. Having no central \"brain\" or
820 master point of control provides greater scalability, redundancy and
821 permanence.")
822 (license asl2.0)))
823
824 (define-public python-git-review
825 (package
826 (name "python-git-review")
827 (version "1.28.0")
828 (source
829 (origin
830 (method url-fetch)
831 (uri (pypi-uri "git-review" version))
832 (sha256
833 (base32 "0nn17mfqvsa3ryjz53qjslmf60clc0vx2115kkj66h28p6vsnflf"))))
834 (build-system python-build-system)
835 (arguments
836 '(#:tests? #f ; tests require a running Gerrit server
837 #:phases
838 (modify-phases %standard-phases
839 (add-after 'install 'wrap-program
840 (lambda* (#:key inputs outputs #:allow-other-keys)
841 (let* ((out (assoc-ref outputs "out"))
842 (git (assoc-ref inputs "git"))
843 (openssh (assoc-ref inputs "openssh")))
844 (wrap-program (string-append out "/bin/git-review")
845 `("PATH" ":" prefix
846 ,(map (lambda (dir)
847 (string-append dir "/bin"))
848 (list git openssh)))))
849 #t)))))
850 (native-inputs
851 `(("python-pbr" ,python-pbr)))
852 (propagated-inputs
853 `(("python-requests" ,python-requests)))
854 (inputs
855 `(("git" ,git)
856 ("openssh" ,openssh)))
857 (home-page "https://docs.openstack.org/infra/git-review/")
858 (synopsis "Command-line tool for Gerrit")
859 (description
860 "Git-review is a command-line tool that helps submitting Git branches to
861 Gerrit for review, or fetching existing ones.")
862 (license asl2.0)))
863
864 (define-public python2-git-review
865 (package-with-python2 python-git-review))