projects/guix·blob dexed · refs

1281 lines · 44.6 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Cyril Roelandt <[email protected]>
3;;; Copyright © 2015, 2016, 2023 Efraim Flashner <[email protected]>
4;;; Copyright © 2016, 2017, 2019, 2021 Clément Lassieur <[email protected]>
5;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <[email protected]>
6;;; Copyright © 2018, 2022 Marius Bakke <[email protected]>
7;;; Copyright © 2020, 2021, 2025 Ricardo Wurmus <[email protected]>
8;;; Copyright © 2020 Maxim Cournoyer <[email protected]>
9;;; Copyright © 2022 Tanguy Le Carrour <[email protected]>
10;;; Copyright © 2022 Hartmut Goebel <[email protected]>
11;;; Copyright © 2025 Nicolas Graves <[email protected]>
12;;; Copyright © 2025 Sharlatan Hellseher <[email protected]>
13;;;
14;;; This file is part of GNU Guix.
15;;;
16;;; GNU Guix is free software; you can redistribute it and/or modify it
17;;; under the terms of the GNU General Public License as published by
18;;; the Free Software Foundation; either version 3 of the License, or (at
19;;; your option) any later version.
20;;;
21;;; GNU Guix is distributed in the hope that it will be useful, but
22;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;;; GNU General Public License for more details.
25;;;
26;;; You should have received a copy of the GNU General Public License
27;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
28
29(define-module (gnu packages openstack)
30 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (gnu packages)
32 #:use-module (gnu packages bash)
33 #:use-module (gnu packages check)
34 #:use-module (gnu packages databases)
35 #:use-module (gnu packages gnupg)
36 #:use-module (gnu packages monitoring)
37 #:use-module (gnu packages python)
38 #:use-module (gnu packages python-build)
39 #:use-module (gnu packages python-check)
40 #:use-module (gnu packages python-crypto)
41 #:use-module (gnu packages python-web)
42 #:use-module (gnu packages python-xyz)
43 #:use-module (gnu packages sphinx)
44 #:use-module (gnu packages ssh)
45 #:use-module (gnu packages time)
46 #:use-module (gnu packages tls)
47 #:use-module (gnu packages version-control)
48 #:use-module (gnu packages virtualization)
49 #:use-module (gnu packages xml)
50 #:use-module (guix gexp)
51 #:use-module ((guix build-system python) #:select (pypi-uri))
52 #:use-module (guix build-system pyproject)
53 #:use-module (guix download)
54 #:use-module (guix git-download)
55 #:use-module (guix utils)
56 #:use-module (guix packages)
57 #:use-module (srfi srfi-1))
58
59(define-public python-cliff
60 (package
61 (name "python-cliff")
62 (version "4.10.0")
63 (source
64 (origin
65 (method url-fetch)
66 (uri (pypi-uri "cliff" version))
67 (sha256
68 (base32 "0vd8b4lypkc65xb4cih2b4l9qkhxyj52xj078q63p8214xl5n7wc"))))
69 (build-system pyproject-build-system)
70 (native-inputs
71 (list python-setuptools
72 python-sphinx
73 python-stestr
74 python-testscenarios))
75 (propagated-inputs
76 (list python-autopage
77 python-cmd2
78 python-prettytable
79 python-pyyaml
80 python-stevedore))
81 (home-page "https://opendev.org/openstack/cliff")
82 (synopsis "Framework for building command line programs")
83 (description "The @code{cliff} framework allows creating multi-level
84commands such as those of @command{subversion} and @command{git}, where the
85main program handles some basic argument parsing and then invokes a
86sub-command to do the work. It uses plugins to define sub-commands, output
87formatters, and other extensions.")
88 (license license:asl2.0)))
89
90(define-public python-cliff-bootstrap
91 (hidden-package
92 (package/inherit python-cliff
93 (arguments
94 (substitute-keyword-arguments (package-arguments python-cliff)
95 ((#:tests? t? #t)
96 #f)
97 ((#:phases phases #~%standard-phases)
98 #~(modify-phases #$phases
99 (delete 'sanity-check)))))
100 (native-inputs
101 (list python-setuptools python-wheel))
102 (propagated-inputs
103 (modify-inputs (package-propagated-inputs python-cliff)
104 (replace "python-stevedore" python-stevedore-bootstrap))))))
105
106(define-public python-debtcollector
107 (package
108 (name "python-debtcollector")
109 (version "3.0.0")
110 (source
111 (origin
112 (method url-fetch)
113 (uri (pypi-uri "debtcollector" version))
114 (sha256
115 (base32 "0vzarkvjclci98d8lvkix6qj59f7rxp1qg2x6q6is7qfbg91g29a"))))
116 (build-system pyproject-build-system)
117 (arguments
118 (list
119 #:phases
120 #~(modify-phases %standard-phases
121 (add-after 'unpack 'relax-requirements
122 (lambda _
123 (substitute* "test-requirements.txt"
124 (("^(coverage|hacking|pre-commit|reno).*")
125 "")
126 (("^(doc8|sphinx|openstackdocstheme).*")
127 "")))))))
128 (propagated-inputs
129 (list python-pbr python-wrapt))
130 (native-inputs
131 (list python-fixtures
132 python-setuptools
133 python-stestr
134 python-testtools
135 python-wheel))
136 (home-page "https://www.openstack.org/")
137 (synopsis
138 "Find deprecated patterns and strategies in Python code")
139 (description
140 "This package provides a collection of Python deprecation patterns and
141strategies that help you collect your technical debt in a non-destructive
142manner.")
143 (license license:asl2.0)))
144
145(define-public python-hacking
146 (package
147 (name "python-hacking")
148 (version "7.0.0")
149 (source
150 (origin
151 (method url-fetch)
152 (uri (pypi-uri "hacking" version))
153 (sha256
154 (base32
155 "1dya2mbnm8cbkwrzmhsacdpmp37nhfcy13y5hbx58z8g53jw5dmr"))))
156 (build-system pyproject-build-system)
157 (propagated-inputs
158 (list python-flake8))
159 (native-inputs
160 (list python-coverage
161 python-ddt
162 python-eventlet
163 python-fixtures
164 python-setuptools
165 python-stestr
166 python-subunit
167 python-testscenarios
168 python-testtools
169 python-wheel))
170 (home-page "https://github.com/openstack-dev/hacking")
171 (synopsis "OpenStack hacking guideline enforcement")
172 (description
173 "Python-hacking is a set of flake8 plugins that test and enforce the
174@uref{http://docs.openstack.org/developer/hacking/, OpenStack style
175guidelines}.")
176 (license license:asl2.0)))
177
178(define-public python-openstackdocstheme
179 (package
180 (name "python-openstackdocstheme")
181 (version "3.4.1")
182 (source
183 (origin
184 (method url-fetch)
185 (uri (pypi-uri "openstackdocstheme" version))
186 (sha256
187 (base32 "0f8vk9556cx3h2z2dwqqkylv3rijd1p15qjy4xjv9sxxcfngdx1q"))))
188 (build-system pyproject-build-system)
189 (arguments
190 (list
191 #:tests? #f)) ; no tests in PyPI archive or git checkout
192 (native-inputs
193 (list python-setuptools
194 python-wheel))
195 (propagated-inputs
196 (list python-dulwich
197 python-pbr
198 python-sphinx))
199 (home-page "https://docs.openstack.org/openstackdocstheme/latest/")
200 (synopsis "OpenStack Docs Theme")
201 (description
202 "This package provides themes and extensions for Sphinx for publishing
203to docs.openstack.org and developer.openstack.org.")
204 (license license:asl2.0)))
205
206(define-public python-os-service-types
207 (package
208 (name "python-os-service-types")
209 (version "1.8.0")
210 (source
211 (origin
212 (method url-fetch)
213 (uri (pypi-uri "os_service_types" version))
214 (sha256
215 (base32 "0gk0lgg862pwpisjz36jlrnr5ij75c8ja01znb1398rc2d7yf349"))))
216 (build-system pyproject-build-system)
217 (arguments
218 (list
219 #:phases
220 #~(modify-phases %standard-phases
221 (add-after 'unpack 'relax-requirements
222 (lambda _
223 (substitute* "test-requirements.txt"
224 (("(coverage|hacking).*")
225 ""))))
226 (replace 'check
227 (lambda* (#:key tests? test-flags #:allow-other-keys)
228 (when tests?
229 (apply invoke "stestr" "run" test-flags)))))))
230 (native-inputs
231 (list python-keystoneauth1
232 python-oslotest
233 python-pbr
234 python-requests-mock
235 python-setuptools
236 python-stestr
237 python-testscenarios
238 python-wheel))
239 (home-page "https://docs.openstack.org/os-service-types/latest/")
240 (synopsis "Library for consuming OpenStack Service Types Authority data")
241 (description "The @emph{OpenStack Service Types Authority} contains
242information about officiag OpenStack services and their historical
243service-type aliases. The data is in JSON and the latest data should always
244be used. This simple library exists to allow for easy consumption of the
245data, along with a built-in version of the data to use in case network access
246is for some reason not possible and local caching of the fetched data.")
247 (license license:asl2.0)))
248
249(define-public python-os-service-types-bootstrap
250 (hidden-package
251 (package/inherit python-os-service-types
252 (arguments
253 (substitute-keyword-arguments (package-arguments python-os-service-types)
254 ((#:tests? t? #t)
255 #f)
256 ((#:phases phases #~%standard-phases)
257 #~(modify-phases #$phases
258 (delete 'sanity-check)))))
259 (native-inputs
260 (list python-pbr python-setuptools python-wheel)))))
261
262(define-public python-os-testr
263 (let ((commit "0ba674d8c5d34890698e4e8ff9f71b24c389e109")
264 (revision "0"))
265 (package
266 (name "python-os-testr")
267 (version (git-version "3.0.0" revision commit))
268 (source
269 (origin
270 (method git-fetch)
271 (uri (git-reference
272 (url "https://github.com/openstack/os-testr")
273 (commit commit)))
274 (file-name (git-file-name name version))
275 (sha256
276 (base32 "1fd8n5fsq35ikak8by4z45sya2m1pmxpc4440579rfk3jjsq4vgc"))))
277 (build-system pyproject-build-system)
278 (arguments
279 (list
280 #:phases
281 #~(modify-phases %standard-phases
282 (add-after 'unpack 'relax-requirements
283 (lambda _
284 (substitute* "test-requirements.txt"
285 (("(coverage|hacking).*")
286 ""))))
287 (add-after 'unpack 'set-version
288 (lambda _
289 (setenv "PBR_VERSION" "3.0.0"))))))
290 (propagated-inputs (list python-stestr))
291 (native-inputs
292 (list python-babel
293 python-ddt
294 python-oslotest
295 python-pbr
296 python-setuptools
297 python-testrepository
298 python-testscenarios
299 python-testtools))
300 (home-page "https://github.com/openstack/os-testr")
301 (synopsis "Testr wrapper to provide functionality for OpenStack projects")
302 (description
303 "Os-testr provides developers with a testr wrapper and an output filter
304 for subunit.")
305 (license license:asl2.0))))
306
307(define-public python-stevedore
308 (package
309 (name "python-stevedore")
310 (version "5.4.1")
311 (source
312 (origin
313 (method url-fetch)
314 (uri (pypi-uri "stevedore" version))
315 (sha256
316 (base32
317 "0jvgrn2mk7psrgly61k16p6pywnb191gzfliy9p824pya2pbad9i"))))
318 (build-system pyproject-build-system)
319 (arguments
320 (list
321 #:phases
322 #~(modify-phases %standard-phases
323 (add-after 'unpack 'relax-requirements
324 (lambda _
325 (substitute* "test-requirements.txt"
326 (("sphinx.*")
327 "sphinx\n"))))
328 (replace 'check
329 (lambda* (#:key tests? test-flags #:allow-other-keys)
330 (when tests?
331 (apply invoke "stestr" "run" test-flags)))))))
332 (propagated-inputs (list python-pbr))
333 (native-inputs
334 (list python-coverage
335 python-setuptools
336 python-sphinx
337 python-stestr
338 python-wheel))
339 (home-page "https://github.com/dreamhost/stevedore")
340 (synopsis "Manage dynamic plugins for Python applications")
341 (description
342 "Python makes loading code dynamically easy, allowing you to configure
343and extend your application by discovering and loading extensions (\"plugins\")
344at runtime. Many applications implement their own library for doing this,
345using __import__ or importlib. Stevedore avoids creating yet another extension
346mechanism by building on top of setuptools entry points. The code for managing
347entry points tends to be repetitive, though, so stevedore provides manager
348classes for implementing common patterns for using dynamically loaded
349extensions.")
350 (license license:asl2.0)))
351
352(define-public python-stevedore-bootstrap
353 (hidden-package
354 (package/inherit python-stevedore
355 (arguments
356 (substitute-keyword-arguments (package-arguments python-stevedore)
357 ((#:tests? t? #t)
358 #f)
359 ((#:phases phases #~%standard-phases)
360 #~(modify-phases #$phases
361 (delete 'sanity-check)))))
362 (native-inputs
363 (list python-setuptools python-wheel)))))
364
365(define-public python-tempest
366 (package
367 (name "python-tempest")
368 (version "42.0.0")
369 (source
370 (origin
371 (method url-fetch)
372 (uri (pypi-uri "tempest" version))
373 (sha256
374 (base32 "03jc474y57k4c2ydlzw8qx327am9ag15s8j4r4jadrs2x149qvlx"))))
375 (build-system pyproject-build-system)
376 (arguments
377 (list
378 #:test-flags
379 #~(list "--test-path" "./tempest/tests"
380 ;; XXX: Probably requires some setup.
381 "--exclude-regex" (string-join
382 (list "test_load_json_resource_list"
383 "test_load_json_saved_state"
384 "test_take_action_got_exception"
385 "test_hacking")
386 "|"))
387 #:phases
388 #~(modify-phases %standard-phases
389 (add-after 'unpack 'remove-failing-tests
390 (lambda _
391 ;; XXX: Most of those tests require network connection.
392 (delete-file-recursively "tempest/tests/lib/services/volume")
393 (delete-file "tempest/tests/test_hacking.py")))
394 (add-after 'unpack 'relax-requirements
395 (lambda _
396 (substitute* "test-requirements.txt"
397 ;; unused, code-quality checks only
398 (("(hacking|flake8-.*|pycodestyle|coverage)[<>!=]" line)
399 (string-append "# " line)))))
400 (add-before 'check 'setup-check
401 (lambda* (#:key inputs #:allow-other-keys)
402 (substitute* "tempest/tests/lib/cli/test_execute.py"
403 (("cli_base.execute\\(\"env\",")
404 (string-append "cli_base.execute('"
405 (search-input-file inputs "bin/env") "',")))))
406 (replace 'check
407 (lambda* (#:key tests? test-flags #:allow-other-keys)
408 (when tests?
409 (apply invoke "stestr" "run" test-flags)))))))
410 (propagated-inputs (list python-cliff
411 python-cryptography
412 python-defusedxml
413 python-fasteners
414 python-fixtures
415 python-jsonschema
416 python-netaddr
417 python-oslo-concurrency
418 python-oslo-config
419 python-oslo-log
420 python-oslo-serialization
421 python-oslo-utils
422 python-paramiko
423 python-prettytable
424 python-pyyaml
425 python-stevedore
426 python-subunit
427 python-testtools
428 python-urllib3))
429 (native-inputs (list python-oslotest
430 python-pbr
431 python-setuptools
432 python-stestr
433 python-testscenarios
434 python-wheel))
435 (home-page "https://docs.openstack.org/tempest/latest/")
436 (synopsis "OpenStack Integration Testing")
437 (description "This is a set of integration tests to be run against a live
438OpenStack cluster. Tempest has batteries of tests for OpenStack API
439validation, scenarios, and other specific tests useful in validating an
440OpenStack deployment.")
441 (license license:asl2.0)))
442
443(define-public python-tempest-lib
444 (package
445 (name "python-tempest-lib")
446 (version "1.0.0")
447 (source
448 (origin
449 (method url-fetch)
450 (uri (pypi-uri "tempest-lib" version))
451 (sha256
452 (base32 "1cpp2vwmawpd29hjsklsps181lq2ah91cl412qvpnz228nf9sqn5"))))
453 (build-system pyproject-build-system)
454 (arguments
455 (list
456 #:tests? #f ; FIXME: Requires a lot of ancient packages.
457 #:phases
458 #~(modify-phases %standard-phases
459 (add-after 'unpack 'relax-requirements
460 (lambda _
461 (substitute* "requirements.txt"
462 (("jsonschema[<>!=].*") "jsonschema\n"))))
463 (add-before 'check 'pre-check
464 (lambda* (#:key inputs #:allow-other-keys)
465 (substitute* "tempest_lib/tests/cli/test_execute.py"
466 (("/bin/ls")
467 (search-input-file inputs "bin/ls"))))))))
468 (propagated-inputs
469 (list python-fixtures
470 python-httplib2
471 python-iso8601
472 python-jsonschema
473 python-oslo-log
474 python-paramiko))
475 (native-inputs
476 (list python-babel
477 python-mock
478 python-os-testr
479 python-oslotest
480 python-pbr
481 python-setuptools
482 python-wheel))
483 (home-page "https://www.openstack.org/")
484 (synopsis "OpenStack functional testing library")
485 (description
486 "Tempest-lib is a functional testing library for OpenStack. It provides
487common features used in Tempest.")
488 (license license:asl2.0)))
489
490
491;;;
492;;; Packages from the Oslo library
493;;;
494
495(define-public python-oslo-concurrency
496 (package
497 (name "python-oslo-concurrency")
498 (version "7.1.0")
499 (source
500 (origin
501 (method url-fetch)
502 (uri (pypi-uri "oslo_concurrency" version))
503 (sha256
504 (base32 "1jqlshynn8ddix3jx9ma969d6829xyy0vryhy5lpvc02h1zqg2nz"))))
505 (build-system pyproject-build-system)
506 (arguments
507 (list
508 ;; XXX: At least another test is failing, but blocks the rest.
509 #:tests? #f
510 ;; XXX: Disable failing tests.
511 #:test-flags
512 #~(list "--exclude-regex" (string-join
513 (list "test_fair_lock_with_spawn"
514 "test_fair_lock_with_spawn_n"
515 "test_with_stdout")
516 "|"))
517 #:phases
518 #~(modify-phases %standard-phases
519 (add-after 'unpack 'relax-requirements
520 (lambda _
521 (substitute* "test-requirements.txt"
522 (("(hacking|coverage|bandit|pre-commit)[<>!=]" line)
523 (string-append "# " line)))))
524 (add-before 'check 'fix-tests
525 (lambda* (#:key inputs #:allow-other-keys)
526 (define (cross-which bin)
527 (search-input-file inputs (string-append "bin/" bin)))
528 (substitute* "oslo_concurrency/tests/unit/test_processutils.py"
529 (("#!/bin/(bash|sh)" all sh)
530 (string-append "#!" (cross-which sh)))
531 (("'/usr/bin/env('| )" all rest)
532 (string-append "'" (cross-which "env") rest))
533 (("'/bin/true'")
534 (string-append "'" (cross-which "true") "'")))))
535 (replace 'check
536 (lambda* (#:key tests? test-flags #:allow-other-keys)
537 (when tests?
538 (apply invoke "stestr" "run" test-flags)))))))
539 (native-inputs
540 (list python-coverage
541 python-eventlet
542 python-fixtures
543 python-oslotest
544 python-pbr
545 python-setuptools
546 python-stestr
547 python-wheel))
548 (propagated-inputs
549 (list python-fasteners
550 python-oslo-config
551 python-oslo-i18n
552 python-oslo-utils))
553 (home-page "https://docs.openstack.org/oslo.concurrency/latest/")
554 (synopsis "Oslo Concurrency library")
555 (description "The Oslo Concurrency Library provides utilities for safely
556running multi-thread, multi-process applications using locking mechanisms and
557for running external processes.")
558 (license license:asl2.0)))
559
560(define-public python-oslo-config
561 (package
562 (name "python-oslo-config")
563 (version "9.8.0")
564 (source
565 (origin
566 (method url-fetch)
567 (uri (pypi-uri "oslo_config" version))
568 (sha256
569 (base32 "1ah8knzcxkg28v9av19wp6bg91d1mfyxm2y56whngvmb0jah1a7f"))))
570 (build-system pyproject-build-system)
571 (arguments
572 (list
573 ;; XXX: Disable failing tests.
574 #:test-flags
575 #~(list "--exclude-regex" (string-join
576 (list "test_print_help"
577 "test_print_strOpt_with_choices_help")
578 "|"))
579 #:phases
580 #~(modify-phases %standard-phases
581 (replace 'check
582 (lambda* (#:key tests? test-flags #:allow-other-keys)
583 (when tests?
584 (apply invoke "stestr" "run" test-flags)))))))
585 (propagated-inputs
586 (list python-netaddr
587 python-oslo-i18n-bootstrap
588 python-pyyaml
589 python-requests
590 python-rfc3986
591 python-stevedore))
592 (native-inputs
593 (list python-coverage
594 python-docutils
595 python-fixtures
596 python-oslo-log-bootstrap
597 python-oslotest-bootstrap
598 python-pbr
599 python-requests-mock
600 python-setuptools
601 python-sphinx
602 python-stestr
603 python-testscenarios
604 python-testtools))
605 (home-page "https://launchpad.net/oslo")
606 (synopsis "Oslo Configuration API")
607 (description
608 "The Oslo configuration API supports parsing command line arguments and
609.ini style configuration files.")
610 (license license:asl2.0)))
611
612(define-public python-oslo-context
613 (package
614 (name "python-oslo-context")
615 (version "5.0.0")
616 (source
617 (origin
618 (method url-fetch)
619 (uri (pypi-uri "oslo.context" version))
620 (sha256
621 (base32
622 "091j2cjh1b60nx6s0a4amb2idh9awijnbmppc3an0738fv8cdh48"))))
623 (build-system pyproject-build-system)
624 (arguments
625 (list
626 #:phases
627 #~(modify-phases %standard-phases
628 (add-after 'unpack 'relax-requirements
629 (lambda _
630 (substitute* "test-requirements.txt"
631 ;; unused, code-quality checks only
632 (("(bandit|hacking|pre-commit)[<>!=]" line)
633 (string-append "# " line))))))))
634 (propagated-inputs
635 (list python-debtcollector))
636 (native-inputs
637 (list python-coverage
638 python-fixtures
639 python-mypy
640 python-oslotest-bootstrap
641 python-pbr
642 python-setuptools
643 python-stestr
644 python-wheel))
645 (home-page "https://launchpad.net/oslo")
646 (synopsis "Oslo context library")
647 (description
648 "The Oslo context library has helpers to maintain useful information
649about a request context. The request context is usually populated in the WSGI
650pipeline and used by various modules such as logging.")
651 (license license:asl2.0)))
652
653(define-public python-oslo-i18n
654 (package
655 (name "python-oslo-i18n")
656 (version "6.5.1")
657 (source
658 (origin
659 (method url-fetch)
660 (uri (pypi-uri "oslo_i18n" version))
661 (sha256
662 (base32 "178h7grww0brsdcp2iz87giappl928ir82arnvppcz5gqmq6m1ga"))))
663 (build-system pyproject-build-system)
664 (native-inputs
665 (list python-coverage
666 python-debtcollector
667 python-oslo-config
668 python-oslotest
669 python-pbr
670 python-setuptools
671 python-stestr
672 python-testscenarios
673 python-wheel))
674 (home-page "https://launchpad.net/oslo")
675 (synopsis "Oslo internationalization (i18n) library")
676 (description
677 "The oslo.i18n library contain utilities for working with
678internationalization (i18n) features, especially translation for text strings
679in an application or library.")
680 (license license:asl2.0)))
681
682(define-public python-oslo-i18n-bootstrap
683 (hidden-package
684 (package/inherit python-oslo-i18n
685 (arguments
686 (substitute-keyword-arguments (package-arguments python-oslo-i18n)
687 ((#:tests? t? #t)
688 #f)
689 ((#:phases phases #~%standard-phases)
690 #~(modify-phases #$phases
691 (delete 'sanity-check)))))
692 (native-inputs
693 (list python-pbr python-setuptools python-wheel)))))
694
695(define-public python-oslo-log
696 (package
697 (name "python-oslo-log")
698 (version "7.2.0")
699 (source
700 (origin
701 (method url-fetch)
702 (uri (pypi-uri "oslo_log" version))
703 (sha256
704 (base32 "1siw60x15ysfbf88hiisdn556y4anixj3clciky4xcwsiz8a6gwn"))))
705 (build-system pyproject-build-system)
706 (arguments
707 (list
708 #:phases
709 #~(modify-phases %standard-phases
710 (replace 'check
711 (lambda* (#:key tests? test-flags #:allow-other-keys)
712 (when tests?
713 (apply invoke "stestr" "run" test-flags)))))))
714 (propagated-inputs
715 (list python-dateutil
716 python-oslo-config
717 python-oslo-context
718 python-oslo-i18n-bootstrap
719 python-oslo-serialization
720 python-oslo-utils))
721 (native-inputs
722 (list python-coverage
723 python-eventlet
724 python-fixtures
725 python-oslotest-bootstrap
726 python-pbr
727 python-setuptools
728 python-stestr
729 python-testtools
730 python-wheel))
731 (home-page "https://launchpad.net/oslo")
732 (synopsis "Python logging library of the Oslo project")
733 (description
734 "The oslo.log (logging) configuration library provides standardized
735configuration for all OpenStack projects. It also provides custom formatters,
736handlers and support for context specific logging (like resource id’s etc).")
737 (license license:asl2.0)))
738
739(define-public python-oslo-log-bootstrap
740 (hidden-package
741 (package/inherit python-oslo-log
742 (arguments
743 (substitute-keyword-arguments (package-arguments python-oslo-log)
744 ((#:tests? t? #t)
745 #f)
746 ((#:phases phases #~%standard-phases)
747 #~(modify-phases #$phases
748 (delete 'sanity-check)))))
749 (propagated-inputs
750 (modify-inputs (package-propagated-inputs python-oslo-log)
751 (delete "python-oslo-config"))))))
752
753(define-public python-oslo-serialization
754 (package
755 (name "python-oslo-serialization")
756 (version "5.7.0")
757 (source
758 (origin
759 (method url-fetch)
760 (uri (pypi-uri "oslo_serialization" version))
761 (sha256
762 (base32 "1rrvdhv82gklj45z6xs1h4l51jcz8fmdjijya2rkj1mqjzfx7i5x"))))
763 (build-system pyproject-build-system)
764 (arguments
765 (list
766 #:phases
767 #~(modify-phases %standard-phases
768 (replace 'check
769 (lambda* (#:key tests? test-flags #:allow-other-keys)
770 (when tests?
771 (apply invoke "stestr" "run" test-flags)))))))
772 (propagated-inputs
773 (list python-msgpack python-oslo-utils python-tzdata))
774 (native-inputs
775 (list python-netaddr
776 python-oslo-i18n-bootstrap
777 python-oslotest-bootstrap
778 python-setuptools
779 python-stestr
780 python-wheel))
781 (home-page "https://launchpad.net/oslo")
782 (synopsis "Oslo serialization library")
783 (description
784 "The oslo.serialization library provides support for representing objects
785in transmittable and storable formats, such as JSON and MessagePack.")
786 (license license:asl2.0)))
787
788(define-public python-reno
789 (package
790 (name "python-reno")
791 (version "4.1.0")
792 (source
793 (origin
794 (method url-fetch)
795 (uri (pypi-uri "reno" version))
796 (sha256
797 (base32 "0w2kc9znm3ffcfsrwhvqkq6878jk3l9hibs7vv4mw88nppyz34pr"))))
798 (build-system pyproject-build-system)
799 (arguments
800 (list
801 #:phases
802 #~(modify-phases %standard-phases
803 (add-before 'check 'pre-check
804 (lambda _
805 (setenv "HOME" "/tmp")
806 ;; reno expects a git repo
807 (invoke "git" "init"))))))
808 (native-inputs
809 (list git-minimal/pinned
810 gnupg
811 python-docutils
812 python-pbr
813 python-pytest
814 python-setuptools
815 python-sphinx
816 python-stestr
817 python-subunit
818 python-testscenarios
819 python-testtools
820 python-wheel))
821 (propagated-inputs
822 (list python-dulwich
823 python-pyyaml))
824 (home-page "https://docs.openstack.org/reno/latest/")
825 (synopsis "Release notes manager")
826 (description "Reno is a tool for storing release notes in a git repository
827and building documentation from them.")
828 (license license:asl2.0)))
829
830(define-public python-oslotest
831 (package
832 (name "python-oslotest")
833 (version "5.0.1")
834 (source
835 (origin
836 (method url-fetch)
837 (uri (pypi-uri "oslotest" version))
838 (sha256
839 (base32 "1vp85v81p2vx66j973hc7fa65shp0ilhaypyyny01jwcip94152s"))))
840 (build-system pyproject-build-system)
841 (arguments
842 (list
843 #:phases
844 #~(modify-phases %standard-phases
845 (add-after 'unpack 'remove-sub-package
846 ;; error: Multiple top-level packages discovered in a flat-layout:
847 ;; ['oslotest', 'releasenotes'].
848 (lambda _
849 (delete-file-recursively "releasenotes"))))))
850 (native-inputs
851 (list python-debtcollector
852 python-oslo-config
853 python-stestr
854 python-setuptools))
855 (propagated-inputs
856 (list python-fixtures
857 python-subunit
858 python-testtools))
859 (home-page "https://launchpad.net/oslo")
860 (synopsis "Oslo test framework")
861 (description "The Oslo Test framework provides common fixtures, support
862for debugging, and better support for mocking results.")
863 (license license:asl2.0)))
864
865(define-public python-oslotest-bootstrap
866 (hidden-package
867 (package/inherit python-oslotest
868 (arguments
869 (substitute-keyword-arguments (package-arguments python-oslotest)
870 ((#:tests? t? #t)
871 #f)
872 ((#:phases phases #~%standard-phases)
873 #~(modify-phases #$phases
874 (delete 'sanity-check)))))
875 (native-inputs
876 (list python-setuptools python-wheel)))))
877
878(define-public python-oslo-utils
879 (package
880 (name "python-oslo-utils")
881 (version "7.4.0")
882 (source
883 (origin
884 (method url-fetch)
885 (uri (pypi-uri "oslo.utils" version))
886 (sha256
887 (base32 "1kiynw1xhw88iimazjzmjrf4h8bzdyjyvkgj6jsz9p85m9fwnpda"))))
888 (build-system pyproject-build-system)
889 (arguments
890 (list
891 ;; XXX: Disable failing test.
892 #:test-flags
893 #~(list "--exclude-regex" "test_format_6_luks")
894 #:phases
895 #~(modify-phases %standard-phases
896 (replace 'check
897 (lambda* (#:key tests? test-flags #:allow-other-keys)
898 (when tests?
899 (apply invoke "stestr" "run" test-flags)))))))
900 (propagated-inputs
901 (list python-debtcollector
902 python-iso8601
903 python-netaddr
904 python-netifaces
905 python-oslo-i18n-bootstrap
906 python-packaging
907 python-pbr
908 python-psutil
909 python-pyparsing
910 python-pyyaml
911 python-tzdata))
912 (native-inputs
913 (list python-ddt
914 python-eventlet
915 python-fixtures
916 python-oslotest-bootstrap
917 python-setuptools
918 python-stestr
919 python-testscenarios
920 python-testtools
921 python-wheel
922 qemu-minimal))
923 (home-page "https://launchpad.net/oslo")
924 (synopsis "Oslo utility library")
925 (description
926 "The @code{oslo.utils} library provides support for common utility type
927functions, such as encoding, exception handling, string manipulation, and time
928handling.")
929 (license license:asl2.0)))
930
931(define-public python-keystoneauth1
932 (package
933 (name "python-keystoneauth1")
934 (version "5.11.1")
935 (source
936 (origin
937 (method url-fetch)
938 (uri (pypi-uri "keystoneauth1" version))
939 (sha256
940 (base32 "1wwicmgmga7ylyb2a15nh5y29r41vmxhyijs7ynjqjvzkg214vw0"))))
941 (build-system pyproject-build-system)
942 (arguments
943 (list
944 ;; XXX: Disable failing test.
945 #:test-flags
946 #~(list "--exclude-regex" "test_keystoneauth_betamax_fixture")
947 #:phases
948 #~(modify-phases %standard-phases
949 (add-after 'unpack 'relax-requirements
950 (lambda _
951 (substitute* "test-requirements.txt"
952 ;; unused, code-quality checks only
953 (("(hacking|coverage|bandit|reno)[<>!=]"
954 line)
955 (string-append "# " line)))))
956 (add-before 'check 'check-setup
957 (lambda _
958 ;; remove code-quality checks
959 (delete-file "keystoneauth1/tests/unit/test_hacking_checks.py")))
960 (replace 'check
961 (lambda* (#:key tests? test-flags #:allow-other-keys)
962 (when tests?
963 (apply invoke "stestr" "run" test-flags)))))))
964 (propagated-inputs
965 (list python-iso8601
966 python-os-service-types-bootstrap
967 python-pbr
968 python-requests
969 python-stevedore
970 python-typing-extensions))
971 (native-inputs
972 (list python-betamax
973 python-fixtures
974 python-lxml
975 python-oauthlib
976 python-oslo-config
977 python-oslo-utils
978 python-oslotest
979 python-pyyaml
980 python-requests-kerberos
981 python-requests-mock
982 python-setuptools
983 python-stestr
984 python-testresources
985 python-testtools
986 python-wheel))
987 (home-page "https://docs.openstack.org/keystoneauth/latest/")
988 (synopsis "Authentication Library for OpenStack Identity")
989 (description "Keystoneauth provides a standard way to do authentication
990and service requests within the OpenStack ecosystem. It is designed for use
991in conjunction with the existing OpenStack clients and for simplifying the
992process of writing new clients.")
993 (license license:asl2.0)))
994
995(define-public python-keystoneclient
996 (package
997 (name "python-keystoneclient")
998 (version "5.6.0")
999 (source
1000 (origin
1001 (method url-fetch)
1002 (uri (pypi-uri "python_keystoneclient" version))
1003 (sha256
1004 (base32
1005 "1rqhxvych2a41dxlizz0qy37vs8jcxxy4kk7khw7c03iqypf47bj"))))
1006 (build-system pyproject-build-system)
1007 (arguments
1008 (list
1009 #:phases
1010 #~(modify-phases %standard-phases
1011 (add-after 'unpack 'remove-failing-tests
1012 (lambda _
1013 ;; XXX: Mostly tests for outdated os-client-config.
1014 (delete-file-recursively "keystoneclient/tests/functional/v3")))
1015 (replace 'check
1016 (lambda* (#:key tests? test-flags #:allow-other-keys)
1017 (when tests?
1018 (apply invoke "stestr" "run" test-flags))))
1019 (add-after 'unpack 'relax-requirements
1020 (lambda _
1021 (substitute* "test-requirements.txt"
1022 ;; XXX: Outdated/discontinued.
1023 (("os-client-config[<>!=]" line) (string-append "# " line))
1024 ;; unused, code-quality checks only
1025 (("(hacking|flake8-.*|pycodestyle|coverage|bandit|reno)[<>!=]"
1026 line)
1027 (string-append "# " line))))))))
1028 (native-inputs
1029 (list openssl
1030 python-bandit
1031 python-fixtures
1032 python-keyring
1033 python-lxml
1034 python-mock
1035 python-oauthlib
1036 python-oslotest
1037 python-pbr
1038 python-requests-mock
1039 python-setuptools
1040 python-stestr
1041 python-tempest
1042 python-tempest-lib
1043 python-testresources
1044 python-testscenarios
1045 python-testtools
1046 python-wheel))
1047 (propagated-inputs
1048 (list python-keystoneauth1
1049 python-oslo-config
1050 python-oslo-i18n
1051 python-oslo-serialization
1052 python-oslo-utils
1053 python-packaging
1054 python-pbr
1055 python-requests
1056 python-stevedore))
1057 (home-page "https://www.openstack.org/")
1058 (synopsis "Client Library for OpenStack Identity")
1059 (description
1060 "Python-keystoneclient is the identity service used by OpenStack for
1061authentication (authN) and high-level authorization (authZ). It currently
1062supports token-based authN with user/service authZ, and is scalable to support
1063OAuth, SAML, and OpenID in future versions. Out of the box, Keystone uses
1064SQLite for its identity store database, with the option to connect to external
1065LDAP.")
1066 (license license:asl2.0)))
1067
1068(define-public python-swiftclient
1069 (package
1070 (name "python-swiftclient")
1071 (version "4.8.0")
1072 (source
1073 (origin
1074 (method url-fetch)
1075 (uri (pypi-uri "python_swiftclient" version))
1076 (sha256
1077 (base32 "0qrq9fdcmqhg1374hsj58hddpfd2jm78q32yqbywls4k8smjq5j4"))))
1078 (build-system pyproject-build-system)
1079 (arguments
1080 (list
1081 #:phases
1082 #~(modify-phases %standard-phases
1083 (add-before 'check 'relax-requirements
1084 (lambda _
1085 (delete-file "test-requirements.txt")))
1086 (replace 'check
1087 (lambda* (#:key tests? test-flags #:allow-other-keys)
1088 (when tests?
1089 (apply invoke "stestr" "run" test-flags)))))))
1090 (native-inputs
1091 (list python-keystoneauth1
1092 python-keystoneclient
1093 python-openstacksdk
1094 python-pbr
1095 python-setuptools
1096 python-stestr
1097 python-wheel))
1098 (propagated-inputs
1099 (list python-requests))
1100 (home-page "https://www.openstack.org/")
1101 (synopsis "OpenStack Object Storage API Client Library")
1102 (description
1103 "OpenStack Object Storage (code-named Swift) creates redundant, scalable
1104object storage using clusters of standardized servers to store petabytes of
1105accessible data. It is not a file system or real-time data storage system, but
1106rather a long-term storage system for a more permanent type of static data that
1107can be retrieved, leveraged, and then updated if necessary. Primary examples of
1108data that best fit this type of storage model are virtual machine images, photo
1109storage, email storage and backup archiving. Having no central \"brain\" or
1110master point of control provides greater scalability, redundancy and
1111permanence.")
1112 (license license:asl2.0)))
1113
1114(define-public python-git-review
1115 (package
1116 (name "python-git-review")
1117 (version "2.5.0")
1118 (source
1119 (origin
1120 (method url-fetch)
1121 (uri (pypi-uri "git_review" version))
1122 (sha256
1123 (base32 "1a7h3i1wsq0gsclb2mififypr9q0sz3ni0kf0qxmm2l40bpzmkqv"))))
1124 (build-system pyproject-build-system)
1125 (arguments
1126 (list
1127 #:tests? #f ; tests require a running Gerrit server
1128 #:phases
1129 #~(modify-phases %standard-phases
1130 (add-after 'wrap 'wrap-program
1131 (lambda* (#:key inputs #:allow-other-keys)
1132 (wrap-program (string-append #$output "/bin/git-review")
1133 `("PATH" ":" prefix
1134 ,(map (lambda (bin)
1135 (search-input-file inputs
1136 (string-append "bin/" bin)))
1137 (list "git" "ssh")))))))))
1138 (native-inputs (list python-pbr python-setuptools python-wheel))
1139 (propagated-inputs (list python-requests))
1140 (inputs (list bash-minimal git-minimal openssh-sans-x))
1141 (home-page "https://docs.openstack.org/infra/git-review/")
1142 (synopsis "Command-line tool for Gerrit")
1143 (description
1144 "Git-review is a command-line tool that helps submitting Git branches to
1145Gerrit for review, or fetching existing ones.")
1146 (license license:asl2.0)))
1147
1148(define-public python-requestsexceptions
1149 (package
1150 (name "python-requestsexceptions")
1151 (version "1.4.0")
1152 (source
1153 (origin
1154 (method git-fetch)
1155 (uri (git-reference
1156 (url "https://github.com/openstack/requestsexceptions")
1157 (commit version)))
1158 (file-name (git-file-name name version))
1159 (sha256
1160 (base32 "12c4bi2vm337sgbbl08i01v794glnk1fzgxdc11545dqdl57rslz"))))
1161 (build-system pyproject-build-system)
1162 (arguments
1163 (list
1164 ;; XXX: There are some tests in tox.ini, but it leads nowhere.
1165 #:tests? #f
1166 #:phases
1167 #~(modify-phases %standard-phases
1168 (add-after 'unpack 'relax-requirements
1169 (lambda _
1170 (substitute* "test-requirements.txt"
1171 (("hacking.*")
1172 ""))))
1173 (add-after 'unpack 'set-version
1174 (lambda _
1175 (setenv "PBR_VERSION" #$version))))))
1176 (native-inputs (list python-os-testr python-pbr python-setuptools))
1177 (home-page "https://github.com/openstack/requestsexceptions")
1178 (synopsis
1179 "Import exceptions from potentially bundled packages in requests")
1180 (description
1181 "The Python requests library bundles the urllib3 library, however, some
1182software distributions modify requests to remove the bundled library. This
1183makes some operations difficult, such as suppressing the “insecure platform
1184warning” messages that urllib emits. This package is a simple library to find
1185the correct path to exceptions in the requests library regardless of whether
1186they are bundled or not.")
1187 (license license:asl2.0)))
1188
1189(define-public python-openstacksdk
1190 (package
1191 (name "python-openstacksdk")
1192 (version "4.6.0")
1193 (source
1194 (origin
1195 (method url-fetch)
1196 (uri (pypi-uri "openstacksdk" version))
1197 (sha256
1198 (base32 "0gbxjz8dg5ar5mgbk896cpq5vgp4j3a1iri8aakaxs9j8xn1czp4"))))
1199 (build-system pyproject-build-system)
1200 (arguments
1201 (list
1202 #:test-flags
1203 #~(list "--exclude-regex"
1204 (string-join
1205 (list
1206 ;; tests timing out
1207 "test_create_dynamic_large_object"
1208 "test_create_object_index_rax"
1209 "test_create_object_skip_checksum"
1210 "test_inspect_machine_inspect_failed"
1211 "test_inspect_machine_wait"
1212 "test_status_fails_different_attribute"
1213 "test_status_match"
1214 "test_status_match_different_attribute"
1215 "test_status_match_with_none"
1216 "test_wait_for_baremetal_node_lock_locked"
1217 "test_wait_for_task_error_396"
1218 "test_wait_for_task_wait"
1219 ;; XXX: Most fail due to network issues.
1220 "test_callback"
1221 "test_callback_without_progress"
1222 "test_create_data"
1223 "test_create_image_task"
1224 "test_create_no_data"
1225 "test_delete_autocreated_image_objects"
1226 "test_delete_firewall_policy"
1227 "test_delete_firewall_policy_filters"
1228 "test_delete_firewall_rule"
1229 "test_delete_firewall_rule_filters"
1230 "test_delete_image_task"
1231 "test_delete_volume_backup_wait"
1232 "test_get_object"
1233 "test_ost_version"
1234 "test_slo_manifest_fail"
1235 "test_status"
1236 "test_stream_object"
1237 "test_success_not_found")
1238 "|"))
1239 #:phases
1240 #~(modify-phases %standard-phases
1241 (replace 'check
1242 (lambda* (#:key tests? test-flags #:allow-other-keys)
1243 (when tests?
1244 (apply invoke "stestr" "run" test-flags)))))))
1245 (native-inputs
1246 (list python-debtcollector
1247 python-ddt
1248 python-hacking
1249 python-jsonschema
1250 python-oslo-config
1251 python-oslotest
1252 python-pbr
1253 python-prometheus-client
1254 python-requests-mock
1255 python-setuptools
1256 python-statsd
1257 python-stestr
1258 python-testscenarios
1259 python-wheel))
1260 (propagated-inputs
1261 (list python-cryptography
1262 python-decorator
1263 python-dogpile-cache
1264 python-iso8601
1265 python-jmespath
1266 python-jsonpatch
1267 python-keystoneauth1
1268 python-os-service-types
1269 python-pbr
1270 python-platformdirs
1271 python-psutil
1272 python-pyyaml
1273 python-requestsexceptions
1274 python-typing-extensions))
1275 (home-page "https://docs.openstack.org/openstacksdk/latest/")
1276 (synopsis "SDK for building applications to work with OpenStack")
1277 (description "This package provides a client library for building
1278applications to work with OpenStack clouds. The SDK aims to provide a
1279consistent and complete set of interactions with OpenStack’s many services,
1280along with complete documentation, examples, and tools.")
1281 (license license:asl2.0)))