summaryrefslogtreecommitdiffstats
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)
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;
+ '';
+}