Unverified Commit f3b392af authored by Philip Taron's avatar Philip Taron
Browse files

nixos/ec2-metadata-fetcher: add zstd user-data decompression

Support decompressing Zstandard-compressed EC2 user data via zstdcat.
Includes a corresponding NixOS test.
parent e3789300
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ in
        gzip
        mktemp
        xz
        zstd
      ];
      script = builtins.readFile ./ec2-metadata-fetcher.sh;
      serviceConfig.Type = "oneshot";
+5 −4
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ try_decompress() {
    gzip*)       decompress_cmd=zcat ;;
    bzip2*)      decompress_cmd=bzcat ;;
    XZ*)         decompress_cmd=xzcat ;;
    Zstandard*)  decompress_cmd=zstdcat ;;
    *)           return ;;
  esac
  echo "decompressing: $1"
+8 −0
Original line number Diff line number Diff line
@@ -283,6 +283,14 @@ in
            test_data = b"#!/bin/bash\necho xz-decompression-test\n"
            test_userdata_decompression(machine, user_data_path, lzma.compress(test_data), "xz")

        with subtest("Decompression of zstd-compressed user-data"):
            test_data = b"#!/bin/bash\necho zstd-decompression-test\n"
            proc = subprocess.run(
                ["${hostPkgs.zstd}/bin/zstd", "-c"],
                input=test_data, capture_output=True, check=True,
            )
            test_userdata_decompression(machine, user_data_path, proc.stdout, "zstd")

    finally:
        machine.shutdown()
        temp_dir.cleanup()