summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-30 21:48:12 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-30 21:50:23 +0200
commit0d3738cdcc48bd32a7eae9b914440b67c8db252e (patch)
tree0d26f5a0b694f98adf0acfc5edb29ccf5a3f9f37
parent184b7ba3c684c5be64c4908ac4973f71865acf4e (diff)
downloadnixpkgs-0d3738cdcc48bd32a7eae9b914440b67c8db252e.tar
nixpkgs-0d3738cdcc48bd32a7eae9b914440b67c8db252e.tar.gz
nixpkgs-0d3738cdcc48bd32a7eae9b914440b67c8db252e.tar.bz2
nixpkgs-0d3738cdcc48bd32a7eae9b914440b67c8db252e.tar.lz
nixpkgs-0d3738cdcc48bd32a7eae9b914440b67c8db252e.tar.xz
nixpkgs-0d3738cdcc48bd32a7eae9b914440b67c8db252e.tar.zst
nixpkgs-0d3738cdcc48bd32a7eae9b914440b67c8db252e.zip
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
-rw-r--r--nixos/lib/make-disk-image.nix6
-rw-r--r--nixos/maintainers/scripts/ec2/amazon-image.nix4
-rw-r--r--nixos/modules/virtualisation/amazon-image.nix3
-rw-r--r--nixos/tests/ec2.nix11
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 = [
           <nixpkgs/nixos/modules/virtualisation/amazon-image.nix>
           <nixpkgs/nixos/modules/testing/test-instrumentation.nix>
+          <nixpkgs/nixos/modules/profiles/qemu-guest.nix>
         ];
         environment.etc.testFile = {
           text = "whoa";