1{ stdenv, fetchurl, pythonPackages, openssl, openssh }:
2
3pythonPackages.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
20 # https://github.com/openstack/nova/blob/stable/liberty/requirements.txt
21 propagatedBuildInputs = with pythonPackages; [
22 pbr sqlalchemy boto decorator eventlet jinja2 lxml routes cryptography
23 webob greenlet PasteDeploy paste prettytable sqlalchemy_migrate netaddr
24 netifaces paramiko Babel iso8601 jsonschema keystoneclient requests2 six
25 stevedore websockify rfc3986 os-brick psutil_1 alembic psycopg2 pymysql
26 keystonemiddleware MySQL_python
27
28 # oslo components
29 oslo-rootwrap oslo-reports oslo-utils oslo-i18n oslo-config oslo-context
30 oslo-log oslo-serialization oslo-middleware oslo-db oslo-service oslo-messaging
31 oslo-concurrency oslo-versionedobjects
32
33 # clients
34 cinderclient neutronclient glanceclient
35 ];
36
37 buildInputs = with pythonPackages; [
38 coverage fixtures mock mox3 subunit requests-mock pillow oslosphinx
39 oslotest testrepository testresources testtools tempest-lib bandit
40 oslo-vmware pep8 barbicanclient ironicclient openssl openssh
41 ];
42
43 postInstall = ''
44 cp -prvd etc $out/etc
45
46 # check all binaries don't crash
47 for i in $out/bin/*; do
48 case "$i" in
49 *nova-dhcpbridge*)
50 :
51 ;;
52 *nova-rootwrap*)
53 :
54 ;;
55 *)
56 $i --help
57 ;;
58 esac
59 done
60 '';
61
62 meta = with stdenv.lib; {
63 homepage = http://nova.openstack.org/;
64 description = "OpenStack Compute (a.k.a. Nova), a cloud computing fabric controller";
65 license = stdenv.lib.licenses.asl20;
66 platforms = stdenv.lib.platforms.linux;
67 };
68}