scripts/nixops: Propagate exit code in op_ssh.

Whenever the command failed nixops returned an exit signal != 0, but
that was because an exception was thrown. Now, we set check=False and
correctly propagate the exit signal.

Unfortunately, to get this working, so this fixes a related bug in
ssh_util as well, which tried to pass the check keyword argument to
subprocess.call().

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
nix/hetzner: Blacklist nvidiafb kernel module.

This caused issues on one test machine I was using and as most people
probably don't need framebuffer consoles on a dedicated server system,
this is now the default for Hetzner deployments.

Here is a traceback I got on one machine with kernel 3.10.0 and
NixOS/nixpkgs@f75f7e793b790b04c342dd348f432c946a9d6253:

CPU: 0 PID: 1653 Comm: modprobe Not tainted 3.10.0 #1
Hardware name: MSI MS-7522/MSI X58 Pro-E (MS-7522), BIOS V8.13 09/09/2010
task: ffff88061dabd640 ti: ffff88061b3b8000 task.ti: ffff88061b3b8000
RIP: 0010:[<ffffffffa0ecc8f3>]  [<ffffffffa0ecc8f3>] nvGetClocks+0x83/0x2e0 [nvidiafb]
RSP: 0018:ffff88061b3b9af0  EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffff88061b3b9b7c RDI: ffff88061cf06458
RBP: ffff88061b3b9af8 R08: ffff88061b3b9b80 R09: 0000000000000000
R10: 00000000000010c0 R11: 0000000000000000 R12: ffff88061cf06550
R13: 00000000000000fc R14: 0000000000006247 R15: 0000000000000000
FS:  00007ff4902fb700(0000) GS:ffff88063fc00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 00007f43f33d9015 CR3: 0000000617b3f000 CR4: 00000000000007f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Stack:
 ffff88061cf06458 ffff88061b3b9bb8 ffffffffa0ecd647 ffffffff81611740
 0000000000000280 000002801b3b9b98 0000000800000001 ffff88061dcc8000
 ffff88063fc52840 ffff88061dabd640 ffff88061b3b9fd8 ffff88061b3b9fd8
Call Trace:
 [<ffffffffa0ecd647>] NVCalcStateExt+0x697/0x970 [nvidiafb]
 [<ffffffffa0ecc171>] nvidiafb_set_par+0x571/0xb90 [nvidiafb]
 [<ffffffffa0ffc361>] fbcon_init+0x521/0x5a0 [fbcon]
 [<ffffffff812baccc>] visual_init+0xbc/0x120
 [<ffffffff812bd33a>] do_bind_con_driver+0x16a/0x320
 [<ffffffff812bd556>] take_over_console+0x66/0x70
 [<ffffffffa1005156>] fb_console_init+0x156/0x189 [fbcon]
 [<ffffffffa1005000>] ? 0xffffffffa1004fff
 [<ffffffff8100023f>] do_one_initcall+0x3f/0x160
 [<ffffffff8109a1b9>] load_module+0x1199/0x18a0
 [<ffffffff810974b0>] ? show_initstate+0x50/0x50
 [<ffffffff8109a999>] SyS_init_module+0xd9/0x110
 [<ffffffff813ee802>] system_call_fastpath+0x16/0x1b
Code: 90 02 00 00 0f 84 ee 01 00 00 41 89 d9 c1 eb 18 41 c1 e9 10 41 81 e1 ff
      00 00 00 0f af 87 ac 03 00 00 45 0f af cb 31 d2 0f af c3 <41> f7 f1 d3 e8
      89 06 48 8b 87 c8 0f 00 00 8b 88 00 40 00 00 8b
RIP  [<ffffffffa0ecc8f3>] nvGetClocks+0x83/0x2e0 [nvidiafb]
 RSP <ffff88061b3b9af0>
---[ end trace 4f3d3a7aa7789934 ]---

Unfortunately the rest of the dmesg output is lost right now, but I'll
keep it for reference here in case I (or someone else) might want to
pick it up and debug it later.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
ssh_util: Include exit code in exception object.

This not only allows to print the exit code on exception but also makes
it easier to react to specific exit codes.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
hetzner: Reboot when the partitioner requires it.

"nixpart" version 0.4.0 returns exit code 100 if the kernel is unable to
pick up the new partitioning layout. So let's reboot and continue
partitioning afterwards.

Optimally this shouldn't be done using the exception info and returning
a new "result info" object would be nicer, but for now this will do the
job (until we have fully refactored ssh_util in some future feature
branch).

Signed-off-by: aszlig <aszlig@redmoonstudios.org>