at 23.05-pre 2.5 kB view raw
1import ./make-test-python.nix ({ pkgs, lib, ... } : 2 3let 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 }; 10 11 lxd-image-metadata = lxd-image.lxdMeta.${pkgs.stdenv.hostPlatform.system}; 12 lxd-image-rootfs = lxd-image.lxdImage.${pkgs.stdenv.hostPlatform.system}; 13 14in { 15 name = "lxd-image-server"; 16 17 meta = with pkgs.lib.maintainers; { 18 maintainers = [ mkg20001 patryk27 ]; 19 }; 20 21 nodes.machine = { lib, ... }: { 22 virtualisation = { 23 cores = 2; 24 25 memorySize = 2048; 26 diskSize = 4096; 27 28 lxc.lxcfs.enable = true; 29 lxd.enable = true; 30 }; 31 32 security.pki.certificates = [ 33 (builtins.readFile ./common/acme/server/ca.cert.pem) 34 ]; 35 36 services.nginx = { 37 enable = true; 38 }; 39 40 services.lxd-image-server = { 41 enable = true; 42 nginx = { 43 enable = true; 44 domain = "acme.test"; 45 }; 46 }; 47 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 }; 53 54 networking.hosts = { 55 "::1" = [ "acme.test" ]; 56 }; 57 }; 58 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") 63 64 # It takes additional second for lxd to settle 65 machine.sleep(1) 66 67 # lxd expects the pool's directory to already exist 68 machine.succeed("mkdir /var/lxd-pool") 69 70 machine.succeed( 71 "cat ${./common/lxd/config.yaml} | lxd init --preseed" 72 ) 73 74 machine.succeed( 75 "lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs}/*/*.tar.xz --alias nixos" 76 ) 77 78 loc = "/var/www/simplestreams/images/iats/nixos/amd64/default/v1" 79 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) 89 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 ''; 94})