git.iko.soy/typeable/nixpkgs
on master help sign in
nixos/glance: add test
165089fAntoine Eiche
nixos/release.nix+1
@@ -242,6 +242,7 @@ in rec {
242 tests.firewall = callTest tests/firewall.nix {};
242 tests.firewall = callTest tests/firewall.nix {};
243 tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
243 tests.fleet = hydraJob (import tests/fleet.nix { system = "x86_64-linux"; });
244 #tests.gitlab = callTest tests/gitlab.nix {};
244 #tests.gitlab = callTest tests/gitlab.nix {};
245+ tests.glance = callTest tests/glance.nix {};
245 tests.gocd-agent = callTest tests/gocd-agent.nix {};
246 tests.gocd-agent = callTest tests/gocd-agent.nix {};
246 tests.gocd-server = callTest tests/gocd-server.nix {};
247 tests.gocd-server = callTest tests/gocd-server.nix {};
247 tests.gnome3 = callTest tests/gnome3.nix {};
248 tests.gnome3 = callTest tests/gnome3.nix {};
nixos/tests/glance.nixnew file+77
@@ -0,0 +1,77 @@
1+{ system ? builtins.currentSystem }:
2+
3+with import ../lib/testing.nix { inherit system; };
4+with pkgs.lib;
5+
6+let
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+
29+in 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+}