1{ stdenv, fetchurl, python2Packages, openssl, openssh }:
2
3python2Packages.buildPythonApplication rec {
4 name = "nova-${version}";
5 version = "12.0.0";
6 namePrefix = "";
7
8 PBR_VERSION = "${version}";
9
10 src = fetchurl {
11 url = "https://github.com/openstack/nova/archive/${version}.tar.gz";
12 sha256 = "175n1znvmy8f5vqvabc2fa4qy8y17685z4gzpq8984mdsdnpv21w";
13 };
14
15 # otherwise migrate.cfg is not installed
16 patchPhase = ''
17 echo "graft nova" >> MANIFEST.in
18
19 # remove transient error test, see http://hydra.nixos.org/build/40203534
20 rm nova/tests/unit/compute/test_{shelve,compute_utils}.py
21 '';
22
23 # https://github.com/openstack/nova/blob/stable/liberty/requirements.txt
24 propagatedBuildInputs = with python2Packages; [
25 pbr sqlalchemy boto decorator eventlet jinja2 lxml routes cryptography
26 webob greenlet PasteDeploy paste prettytable sqlalchemy_migrate netaddr
27 netifaces paramiko Babel iso8601 jsonschema keystoneclient requests six
28 stevedore websockify rfc3986 os-brick psutil_1 alembic psycopg2 pymysql
29 keystonemiddleware MySQL_python
30
31 # oslo components
32 oslo-rootwrap oslo-reports oslo-utils oslo-i18n oslo-config oslo-context
33 oslo-log oslo-serialization oslo-middleware oslo-db oslo-service oslo-messaging
34 oslo-concurrency oslo-versionedobjects
35
36 # clients
37 cinderclient neutronclient glanceclient
38 ];
39
40 buildInputs = with python2Packages; [
41 coverage fixtures mock mox3 subunit requests-mock pillow oslosphinx
42 oslotest testrepository testresources testtools tempest-lib bandit
43 oslo-vmware pep8 barbicanclient ironicclient openssl openssh
44 ];
45
46 postInstall = ''
47 cp -prvd etc $out/etc
48
49 # check all binaries don't crash
50 for i in $out/bin/*; do
51 case "$i" in
52 *nova-dhcpbridge*)
53 :
54 ;;
55 *nova-rootwrap*)
56 :
57 ;;
58 *)
59 $i --help
60 ;;
61 esac
62 done
63 '';
64
65 meta = with stdenv.lib; {
66 homepage = http://nova.openstack.org/;
67 description = "OpenStack Compute (a.k.a. Nova), a cloud computing fabric controller";
68 license = stdenv.lib.licenses.asl20;
69 platforms = stdenv.lib.platforms.linux;
70 };
71}