projects/guix·blob perlssl · refs

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