python310Packages.pydeconz: 104 -> 105
[NixPkgs.git] / nixos / tests / lxd-image-server.nix
blobe5a292b61bd9769e12cc82e498cd3065aec5bfc1
1 import ./make-test-python.nix ({ pkgs, lib, ... } :
3 let
4   lxd-image = import ../release.nix {
5     configuration = {
6       # Building documentation makes the test unnecessarily take a longer time:
7       documentation.enable = lib.mkForce false;
8     };
9   };
11   lxd-image-metadata = lxd-image.lxdMeta.${pkgs.stdenv.hostPlatform.system};
12   lxd-image-rootfs = lxd-image.lxdImage.${pkgs.stdenv.hostPlatform.system};
14 in {
15   name = "lxd-image-server";
17   meta = with pkgs.lib.maintainers; {
18     maintainers = [ mkg20001 patryk27 ];
19   };
21   nodes.machine = { lib, ... }: {
22     virtualisation = {
23       cores = 2;
25       memorySize = 2048;
26       diskSize = 4096;
28       lxc.lxcfs.enable = true;
29       lxd.enable = true;
30     };
32     security.pki.certificates = [
33       (builtins.readFile ./common/acme/server/ca.cert.pem)
34     ];
36     services.nginx = {
37       enable = true;
38     };
40     services.lxd-image-server = {
41       enable = true;
42       nginx = {
43         enable = true;
44         domain = "acme.test";
45       };
46     };
48     services.nginx.virtualHosts."acme.test" = {
49       enableACME = false;
50       sslCertificate = ./common/acme/server/acme.test.cert.pem;
51       sslCertificateKey = ./common/acme/server/acme.test.key.pem;
52     };
54     networking.hosts = {
55       "::1" = [ "acme.test" ];
56     };
57   };
59   testScript = ''
60     machine.wait_for_unit("sockets.target")
61     machine.wait_for_unit("lxd.service")
62     machine.wait_for_file("/var/lib/lxd/unix.socket")
64     # It takes additional second for lxd to settle
65     machine.sleep(1)
67     # lxd expects the pool's directory to already exist
68     machine.succeed("mkdir /var/lxd-pool")
70     machine.succeed(
71         "cat ${./common/lxd/config.yaml} | lxd init --preseed"
72     )
74     machine.succeed(
75         "lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs}/*/*.tar.xz --alias nixos"
76     )
78     loc = "/var/www/simplestreams/images/iats/nixos/amd64/default/v1"
80     with subtest("push image to server"):
81         machine.succeed("lxc launch nixos test")
82         machine.sleep(5)
83         machine.succeed("lxc stop -f test")
84         machine.succeed("lxc publish --public test --alias=testimg")
85         machine.succeed("lxc image export testimg")
86         machine.succeed("ls >&2")
87         machine.succeed("mkdir -p " + loc)
88         machine.succeed("mv *.tar.gz " + loc)
90     with subtest("pull image from server"):
91         machine.succeed("lxc remote add img https://acme.test --protocol=simplestreams")
92         machine.succeed("lxc image list img: >&2")
93   '';