From 0d3738cdcc48bd32a7eae9b914440b67c8db252e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 30 Mar 2016 21:48:12 +0200 Subject: [PATCH] Fix the EC2 test We now generate a qcow2 image to prevent hitting Hydra's output size limit. Also updated /root/user-data -> /etc/ec2-metadata/user-data. http://hydra.nixos.org/build/33843133 --- nixos/lib/make-disk-image.nix | 6 ++++-- nixos/maintainers/scripts/ec2/amazon-image.nix | 4 +++- nixos/modules/virtualisation/amazon-image.nix | 3 +-- nixos/tests/ec2.nix | 11 +++++------ 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index 7387bf14738..caf0ab4c07b 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -23,6 +23,8 @@ postVM ? "" , name ? "nixos-disk-image" + +, format ? "raw" }: with lib; @@ -32,8 +34,8 @@ pkgs.vmTools.runInLinuxVM ( { preVM = '' mkdir $out - diskImage=$out/nixos.img - ${pkgs.vmTools.qemu}/bin/qemu-img create -f raw $diskImage "${toString diskSize}M" + diskImage=$out/nixos.${if format == "qcow2" then "qcow2" else "img"} + ${pkgs.vmTools.qemu}/bin/qemu-img create -f ${format} $diskImage "${toString diskSize}M" mv closure xchg/ ''; buildInputs = [ pkgs.utillinux pkgs.perl pkgs.e2fsprogs pkgs.parted ]; diff --git a/nixos/maintainers/scripts/ec2/amazon-image.nix b/nixos/maintainers/scripts/ec2/amazon-image.nix index ef8646c66d1..bfa4f4b3ca5 100644 --- a/nixos/maintainers/scripts/ec2/amazon-image.nix +++ b/nixos/maintainers/scripts/ec2/amazon-image.nix @@ -10,9 +10,11 @@ with lib; ]; system.build.amazonImage = import ../../../lib/make-disk-image.nix { - inherit pkgs lib config; + inherit lib config; + pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package partitioned = config.ec2.hvm; diskSize = if config.ec2.hvm then 2048 else 8192; + format = "qcow2"; configFile = pkgs.writeText "configuration.nix" '' { diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix index 35af905bc62..5d99bccb0e9 100644 --- a/nixos/modules/virtualisation/amazon-image.nix +++ b/nixos/modules/virtualisation/amazon-image.nix @@ -65,8 +65,7 @@ let cfg = config.ec2; in fi if ! [ -e "$metaDir/user-data" ]; then - wget -q -O "$metaDir/user-data" http://169.254.169.254/1.0/user-data - chmod 600 "$metaDir/user-data" + wget -q -O "$metaDir/user-data" http://169.254.169.254/1.0/user-data && chmod 600 "$metaDir/user-data" fi if ! [ -e "$metaDir/hostname" ]; then diff --git a/nixos/tests/ec2.nix b/nixos/tests/ec2.nix index 0a95d6cfeff..597bfe89fb0 100644 --- a/nixos/tests/ec2.nix +++ b/nixos/tests/ec2.nix @@ -11,7 +11,6 @@ let modules = [ ../maintainers/scripts/ec2/amazon-image.nix ../modules/testing/test-instrumentation.nix - ../modules/profiles/minimal.nix ../modules/profiles/qemu-guest.nix { ec2.hvm = true; @@ -30,9 +29,8 @@ let metaData = pkgs.stdenv.mkDerivation { name = "metadata"; buildCommand = '' - mkdir -p $out/2011-01-01 - ln -s ${pkgs.writeText "userData" userData} $out/2011-01-01/user-data mkdir -p $out/1.0/meta-data + ln -s ${pkgs.writeText "userData" userData} $out/1.0/user-data echo "${hostname}" > $out/1.0/meta-data/hostname echo "(unknown)" > $out/1.0/meta-data/ami-manifest-path '' + optionalString (sshPublicKey != null) '' @@ -48,7 +46,7 @@ let my $imageDir = ($ENV{'TMPDIR'} // "/tmp") . "/vm-state-machine"; mkdir $imageDir, 0700; my $diskImage = "$imageDir/machine.qcow2"; - system("qemu-img create -f qcow2 -o backing_file=${image}/nixos.img $diskImage") == 0 or die; + system("qemu-img create -f qcow2 -o backing_file=${image}/nixos.qcow2 $diskImage") == 0 or die; system("qemu-img resize $diskImage 10G") == 0 or die; # Note: we use net=169.0.0.0/8 rather than @@ -91,7 +89,7 @@ in { ''; script = '' $machine->start; - $machine->waitForFile("/root/user-data"); + $machine->waitForFile("/etc/ec2-metadata/user-data"); $machine->waitForUnit("sshd.service"); $machine->succeed("grep unknown /etc/ec2-metadata/ami-manifest-path"); @@ -121,7 +119,7 @@ in { # Just to make sure resizing is idempotent. $machine->shutdown; $machine->start; - $machine->waitForFile("/root/user-data"); + $machine->waitForFile("/etc/ec2-metadata/user-data"); ''; }; @@ -135,6 +133,7 @@ in { imports = [ + ]; environment.etc.testFile = { text = "whoa";