at 25.11-pre 2.7 kB view raw
1import ./make-test-python.nix ( 2 { pkgs, lib, ... }: 3 4 let 5 lxd-image = import ../release.nix { 6 configuration = { 7 # Building documentation makes the test unnecessarily take a longer time: 8 documentation.enable = lib.mkForce false; 9 }; 10 }; 11 12 lxd-image-metadata = lxd-image.lxdContainerMeta.${pkgs.stdenv.hostPlatform.system}; 13 lxd-image-rootfs = lxd-image.lxdContainerImage.${pkgs.stdenv.hostPlatform.system}; 14 15 in 16 { 17 name = "lxd-image-server"; 18 19 meta = with pkgs.lib.maintainers; { 20 maintainers = [ 21 mkg20001 22 patryk27 23 ]; 24 }; 25 26 nodes.machine = 27 { lib, ... }: 28 { 29 virtualisation = { 30 cores = 2; 31 32 memorySize = 2048; 33 diskSize = 4096; 34 35 lxc.lxcfs.enable = true; 36 lxd.enable = true; 37 }; 38 39 security.pki.certificates = [ 40 (builtins.readFile ./common/acme/server/ca.cert.pem) 41 ]; 42 43 services.nginx = { 44 enable = true; 45 }; 46 47 services.lxd-image-server = { 48 enable = true; 49 nginx = { 50 enable = true; 51 domain = "acme.test"; 52 }; 53 }; 54 55 services.nginx.virtualHosts."acme.test" = { 56 enableACME = false; 57 sslCertificate = ./common/acme/server/acme.test.cert.pem; 58 sslCertificateKey = ./common/acme/server/acme.test.key.pem; 59 }; 60 61 networking.hosts = { 62 "::1" = [ "acme.test" ]; 63 }; 64 }; 65 66 testScript = '' 67 machine.wait_for_unit("sockets.target") 68 machine.wait_for_unit("lxd.service") 69 machine.wait_for_file("/var/lib/lxd/unix.socket") 70 71 # Wait for lxd to settle 72 machine.succeed("lxd waitready") 73 74 # lxd expects the pool's directory to already exist 75 machine.succeed("mkdir /var/lxd-pool") 76 77 machine.succeed( 78 "lxd init --minimal" 79 ) 80 81 machine.succeed( 82 "lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs}/*/*.tar.xz --alias nixos" 83 ) 84 85 loc = "/var/www/simplestreams/images/iats/nixos/amd64/default/v1" 86 87 with subtest("push image to server"): 88 machine.succeed("lxc launch nixos test") 89 machine.sleep(5) 90 machine.succeed("lxc stop -f test") 91 machine.succeed("lxc publish --public test --alias=testimg") 92 machine.succeed("lxc image export testimg") 93 machine.succeed("ls >&2") 94 machine.succeed("mkdir -p " + loc) 95 machine.succeed("mv *.tar.gz " + loc) 96 97 with subtest("pull image from server"): 98 machine.succeed("lxc remote add img https://acme.test --protocol=simplestreams") 99 machine.succeed("lxc image list img: >&2") 100 ''; 101 } 102)