openstack.scm 32 KB

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