1{ system ? builtins.currentSystem }:
2
3with import ../lib/testing.nix { inherit system; };
4with import ../lib/qemu-flags.nix;
5with pkgs.lib;
6
7let
8 metadataDrive = pkgs.stdenv.mkDerivation {
9 name = "metadata";
10 buildCommand = ''
11 mkdir -p $out/iso
12
13 cat << EOF > $out/iso/user-data
14 #cloud-config
15 write_files:
16 - content: |
17 cloudinit
18 path: /tmp/cloudinit-write-file
19 EOF
20
21 cat << EOF > $out/iso/meta-data
22 instance-id: iid-local01
23 local-hostname: "test"
24 public-keys:
25 - "should be a key!"
26 EOF
27 ${pkgs.cdrkit}/bin/genisoimage -volid cidata -joliet -rock -o $out/metadata.iso $out/iso
28 '';
29 };
30in makeTest {
31 meta = with pkgs.stdenv.lib.maintainers; {
32 maintainers = [ lewo ];
33 };
34 machine =
35 { config, pkgs, ... }:
36 {
37 virtualisation.qemu.options = [ "-cdrom" "${metadataDrive}/metadata.iso" ];
38 services.cloud-init.enable = true;
39 };
40 testScript = ''
41 $machine->start;
42 $machine->waitForUnit("cloud-init.service");
43 $machine->succeed("cat /tmp/cloudinit-write-file | grep -q 'cloudinit'");
44
45 $machine->waitUntilSucceeds("cat /root/.ssh/authorized_keys | grep -q 'should be a key!'");
46 '';
47}