vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / lxd / virtual-machine.nix
blob14c5e8a82aa8feb08b204678a8e50d6dce1d4b6f
1 import ../make-test-python.nix ({ pkgs, lib, ... }:
3 let
4   releases = import ../../release.nix {
5     configuration = {
6       # Building documentation makes the test unnecessarily take a longer time:
7       documentation.enable = lib.mkForce false;
9       # Our tests require `grep` & friends:
10       environment.systemPackages = with pkgs; [busybox];
11     };
12   };
14   lxd-image-metadata = releases.lxdVirtualMachineImageMeta.${pkgs.stdenv.hostPlatform.system};
15   lxd-image-disk = releases.lxdVirtualMachineImage.${pkgs.stdenv.hostPlatform.system};
17   instance-name = "instance1";
18 in {
19   name = "lxd-virtual-machine";
21   nodes.machine = {lib, ...}: {
22     virtualisation = {
23       diskSize = 4096;
25       cores = 2;
27       # Ensure we have enough memory for the nested virtual machine
28       memorySize = 1024;
30       lxc.lxcfs.enable = true;
31       lxd.enable = true;
32     };
33   };
35   testScript = ''
36     def instance_is_up(_) -> bool:
37       status, _ = machine.execute("lxc exec ${instance-name} --disable-stdin --force-interactive /run/current-system/sw/bin/true")
38       return status == 0
40     machine.wait_for_unit("sockets.target")
41     machine.wait_for_unit("lxd.service")
42     machine.wait_for_file("/var/lib/lxd/unix.socket")
44     # Wait for lxd to settle
45     machine.succeed("lxd waitready")
47     machine.succeed("lxd init --minimal")
49     with subtest("virtual-machine image can be imported"):
50         machine.succeed("lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-disk}/nixos.qcow2 --alias nixos")
52     with subtest("virtual-machine can be launched and become available"):
53         machine.succeed("lxc launch nixos ${instance-name} --vm --config limits.memory=512MB --config security.secureboot=false")
54         with machine.nested("Waiting for instance to start and be usable"):
55           retry(instance_is_up)
57     with subtest("lxd-agent is started"):
58         machine.succeed("lxc exec ${instance-name} systemctl is-active lxd-agent")
59   '';