summary refs log tree commit diff
path: root/nixos/tests
diff options
context:
space:
mode:
authorAntoine Eiche <lewo@abesis.fr>2016-12-29 15:29:51 +0100
committerAntoine Eiche <lewo@abesis.fr>2016-12-31 09:36:57 +0100
commit165089f9d7419df1bda1d33ebc8b08a4a9be1c20 (patch)
tree91815e97d3cddd2f93b0774b49dbec5d0ac8fc8c /nixos/tests
parent6c94d6437daa5d9d46ea3b4fc8cb4b4e6eb145cf (diff)
downloadnixlib-165089f9d7419df1bda1d33ebc8b08a4a9be1c20.tar
nixlib-165089f9d7419df1bda1d33ebc8b08a4a9be1c20.tar.gz
nixlib-165089f9d7419df1bda1d33ebc8b08a4a9be1c20.tar.bz2
nixlib-165089f9d7419df1bda1d33ebc8b08a4a9be1c20.tar.lz
nixlib-165089f9d7419df1bda1d33ebc8b08a4a9be1c20.tar.xz
nixlib-165089f9d7419df1bda1d33ebc8b08a4a9be1c20.tar.zst
nixlib-165089f9d7419df1bda1d33ebc8b08a4a9be1c20.zip
nixos/glance: add test
The test starts the glance service, creates a nixos image and ensures Glance
list it.

Note the test also starts the Keystone service since it is required
by Glance.
Diffstat (limited to 'nixos/tests')
-rw-r--r--nixos/tests/glance.nix77
1 files changed, 77 insertions, 0 deletions
diff --git a/nixos/tests/glance.nix b/nixos/tests/glance.nix
new file mode 100644
index 000000000000..992b77227a4b
--- /dev/null
+++ b/nixos/tests/glance.nix
@@ -0,0 +1,77 @@
+{ system ? builtins.currentSystem }:
+
+with import ../lib/testing.nix { inherit system; };
+with pkgs.lib;
+
+let
+  glanceMysqlPassword = "glanceMysqlPassword";
+  glanceAdminPassword = "glanceAdminPassword";
+
+  createDb = pkgs.writeText "db-provisionning.sql" ''
+    create database keystone;
+    GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
+    GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
+
+    create database glance;
+    GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '${glanceMysqlPassword}';
+    GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '${glanceMysqlPassword}';
+  '';
+
+  image =
+    (import ../lib/eval-config.nix {
+      inherit system;
+      modules = [ ../../nixos/modules/virtualisation/nova-image.nix ];
+    }).config.system.build.novaImage;
+
+  # The admin keystone account
+  adminOpenstackCmd = "OS_TENANT_NAME=admin OS_USERNAME=admin OS_PASSWORD=keystone OS_AUTH_URL=http://localhost:5000/v3 OS_IDENTITY_API_VERSION=3 openstack";
+
+in makeTest {
+  meta = with pkgs.stdenv.lib.maintainers; {
+    maintainers = [ lewo ];
+  };
+  machine =
+    { config, pkgs, ... }:
+    {
+      services.mysql.enable = true;
+      services.mysql.package = pkgs.mysql;
+      services.mysql.initialScript = createDb;
+
+      virtualisation = {
+        openstack.keystone = {
+          enable = true;
+          database.password = { value = "keystone"; storage = "fromNixStore"; };
+          adminToken = { value = "adminToken"; storage = "fromNixStore"; };
+          bootstrap.enable = true;
+          bootstrap.adminPassword = { value = "keystone"; storage = "fromNixStore"; };
+        };
+
+        openstack.glance = {
+          enable = true;
+          database.password = { value = glanceMysqlPassword; storage = "fromNixStore"; };
+          servicePassword = { value = glanceAdminPassword; storage = "fromNixStore"; };
+
+          bootstrap = {
+            enable = true;
+            keystoneAdminPassword = { value = "keystone"; storage = "fromNixStore"; };
+          };
+        };
+
+        memorySize = 2096;
+        diskSize = 4 * 1024;
+        };
+
+      environment.systemPackages = with pkgs.pythonPackages; with pkgs; [
+        openstackclient
+      ];
+    };
+
+  testScript =
+    ''
+     $machine->waitForUnit("glance-api.service");
+
+     # Since Glance api can take time to start, we retry until success
+     $machine->waitUntilSucceeds("${adminOpenstackCmd} image create nixos --file ${image}/nixos.img --disk-format qcow2 --container-format bare --public");
+     $machine->succeed("${adminOpenstackCmd} image list") =~ /nixos/ or die;
+    '';
+}