at 17.09-beta 2.7 kB view raw
1{ system ? builtins.currentSystem }: 2 3with import ../lib/testing.nix { inherit system; }; 4with pkgs.lib; 5 6let 7 glanceMysqlPassword = "glanceMysqlPassword"; 8 glanceAdminPassword = "glanceAdminPassword"; 9 10 createDb = pkgs.writeText "db-provisionning.sql" '' 11 create database keystone; 12 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone'; 13 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone'; 14 15 create database glance; 16 GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '${glanceMysqlPassword}'; 17 GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '${glanceMysqlPassword}'; 18 ''; 19 20 image = 21 (import ../lib/eval-config.nix { 22 inherit system; 23 modules = [ ../../nixos/modules/virtualisation/nova-image.nix ]; 24 }).config.system.build.novaImage; 25 26 # The admin keystone account 27 adminOpenstackCmd = "OS_TENANT_NAME=admin OS_USERNAME=admin OS_PASSWORD=keystone OS_AUTH_URL=http://localhost:5000/v3 OS_IDENTITY_API_VERSION=3 openstack"; 28 29in makeTest { 30 meta = with pkgs.stdenv.lib.maintainers; { 31 maintainers = [ lewo ]; 32 }; 33 machine = 34 { config, pkgs, ... }: 35 { 36 services.mysql.enable = true; 37 services.mysql.package = pkgs.mysql; 38 services.mysql.initialScript = createDb; 39 40 virtualisation = { 41 openstack.keystone = { 42 enable = true; 43 database.password = { value = "keystone"; storage = "fromNixStore"; }; 44 adminToken = { value = "adminToken"; storage = "fromNixStore"; }; 45 bootstrap.enable = true; 46 bootstrap.adminPassword = { value = "keystone"; storage = "fromNixStore"; }; 47 }; 48 49 openstack.glance = { 50 enable = true; 51 database.password = { value = glanceMysqlPassword; storage = "fromNixStore"; }; 52 servicePassword = { value = glanceAdminPassword; storage = "fromNixStore"; }; 53 54 bootstrap = { 55 enable = true; 56 keystoneAdminPassword = { value = "keystone"; storage = "fromNixStore"; }; 57 }; 58 }; 59 60 memorySize = 2096; 61 diskSize = 4 * 1024; 62 }; 63 64 environment.systemPackages = with pkgs.pythonPackages; with pkgs; [ 65 openstackclient 66 ]; 67 }; 68 69 testScript = 70 '' 71 $machine->waitForUnit("glance-api.service"); 72 73 # Since Glance api can take time to start, we retry until success 74 $machine->waitUntilSucceeds("${adminOpenstackCmd} image create nixos --file ${image}/nixos.img --disk-format qcow2 --container-format bare --public"); 75 $machine->succeed("${adminOpenstackCmd} image list") =~ /nixos/ or die; 76 ''; 77}