diff --git a/test/ganeti.utils_unittest.py b/test/ganeti.utils_unittest.py
index cb565f49fb9b59b7f7d23001017f41b80ba1f32b..a2707452a072db01c00b726506c3c45baa26b644 100755
--- a/test/ganeti.utils_unittest.py
+++ b/test/ganeti.utils_unittest.py
@@ -354,171 +354,138 @@ class TestSshKeys(GanetiTestCase):
   KEY_B = ('command="/usr/bin/fooserver -t --verbose",from="1.2.3.4" '
            'ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b')
 
-  def writeTestFile(self):
-    (fd, tmpname) = tempfile.mkstemp(prefix = 'ganeti-test')
-    f = os.fdopen(fd, 'w')
+  def setUp(self):
+    (fd, self.tmpname) = tempfile.mkstemp(prefix='ganeti-test')
     try:
-      f.write(TestSshKeys.KEY_A)
-      f.write("\n")
-      f.write(TestSshKeys.KEY_B)
-      f.write("\n")
-    finally:
-      f.close()
+      handle = os.fdopen(fd, 'w')
+      try:
+        handle.write("%s\n" % TestSshKeys.KEY_A)
+        handle.write("%s\n" % TestSshKeys.KEY_B)
+      finally:
+        handle.close()
+    except:
+      utils.RemoveFile(self.tmpname)
+      raise
 
-    return tmpname
+  def tearDown(self):
+    utils.RemoveFile(self.tmpname)
+    del self.tmpname
 
   def testAddingNewKey(self):
-    tmpname = self.writeTestFile()
-    try:
-      AddAuthorizedKey(tmpname, 'ssh-dss AAAAB3NzaC1kc3MAAACB root@test')
+    AddAuthorizedKey(self.tmpname, 'ssh-dss AAAAB3NzaC1kc3MAAACB root@test')
 
-      self.assertFileContent(tmpname,
-        "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
-        'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
-        " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n"
-        "ssh-dss AAAAB3NzaC1kc3MAAACB root@test\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
+      'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
+      " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n"
+      "ssh-dss AAAAB3NzaC1kc3MAAACB root@test\n")
 
   def testAddingAlmostButNotCompletlyTheSameKey(self):
-    tmpname = self.writeTestFile()
-    try:
-      AddAuthorizedKey(tmpname,
-          'ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@test')
-
-      self.assertFileContent(tmpname,
-        "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
-        'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
-        " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n"
-        "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@test\n")
-    finally:
-      os.unlink(tmpname)
+    AddAuthorizedKey(self.tmpname,
+        'ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@test')
+
+    self.assertFileContent(self.tmpname,
+      "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
+      'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
+      " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n"
+      "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@test\n")
 
   def testAddingExistingKeyWithSomeMoreSpaces(self):
-    tmpname = self.writeTestFile()
-    try:
-      AddAuthorizedKey(tmpname,
-          'ssh-dss  AAAAB3NzaC1w5256closdj32mZaQU   root@key-a')
+    AddAuthorizedKey(self.tmpname,
+        'ssh-dss  AAAAB3NzaC1w5256closdj32mZaQU   root@key-a')
 
-      self.assertFileContent(tmpname,
-        "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
-        'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
-        " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
+      'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
+      " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n")
 
   def testRemovingExistingKeyWithSomeMoreSpaces(self):
-    tmpname = self.writeTestFile()
-    try:
-      RemoveAuthorizedKey(tmpname,
-          'ssh-dss  AAAAB3NzaC1w5256closdj32mZaQU   root@key-a')
+    RemoveAuthorizedKey(self.tmpname,
+        'ssh-dss  AAAAB3NzaC1w5256closdj32mZaQU   root@key-a')
 
-      self.assertFileContent(tmpname,
-        'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
-        " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
+      " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n")
 
   def testRemovingNonExistingKey(self):
-    tmpname = self.writeTestFile()
-    try:
-      RemoveAuthorizedKey(tmpname,
-          'ssh-dss  AAAAB3Nsdfj230xxjxJjsjwjsjdjU   root@test')
+    RemoveAuthorizedKey(self.tmpname,
+        'ssh-dss  AAAAB3Nsdfj230xxjxJjsjwjsjdjU   root@test')
 
-      self.assertFileContent(tmpname,
-        "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
-        'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
-        " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n"
+      'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"'
+      " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n")
 
 
 class TestEtcHosts(GanetiTestCase):
   """Test functions modifying /etc/hosts"""
 
-  def writeTestFile(self):
-    (fd, tmpname) = tempfile.mkstemp(prefix = 'ganeti-test')
-    f = os.fdopen(fd, 'w')
+  def setUp(self):
+    (fd, self.tmpname) = tempfile.mkstemp(prefix='ganeti-test')
     try:
-      f.write('# This is a test file for /etc/hosts\n')
-      f.write('127.0.0.1\tlocalhost\n')
-      f.write('192.168.1.1 router gw\n')
-    finally:
-      f.close()
+      handle = os.fdopen(fd, 'w')
+      try:
+        handle.write('# This is a test file for /etc/hosts\n')
+        handle.write('127.0.0.1\tlocalhost\n')
+        handle.write('192.168.1.1 router gw\n')
+      finally:
+        handle.close()
+    except:
+      utils.RemoveFile(self.tmpname)
+      raise
 
-    return tmpname
+  def tearDown(self):
+    utils.RemoveFile(self.tmpname)
+    del self.tmpname
 
   def testSettingNewIp(self):
-    tmpname = self.writeTestFile()
-    try:
-      SetEtcHostsEntry(tmpname, '1.2.3.4', 'myhost.domain.tld', ['myhost'])
+    SetEtcHostsEntry(self.tmpname, '1.2.3.4', 'myhost.domain.tld', ['myhost'])
 
-      self.assertFileContent(tmpname,
-        "# This is a test file for /etc/hosts\n"
-        "127.0.0.1\tlocalhost\n"
-        "192.168.1.1 router gw\n"
-        "1.2.3.4\tmyhost.domain.tld myhost\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "# This is a test file for /etc/hosts\n"
+      "127.0.0.1\tlocalhost\n"
+      "192.168.1.1 router gw\n"
+      "1.2.3.4\tmyhost.domain.tld myhost\n")
 
   def testSettingExistingIp(self):
-    tmpname = self.writeTestFile()
-    try:
-      SetEtcHostsEntry(tmpname, '192.168.1.1', 'myhost.domain.tld', ['myhost'])
+    SetEtcHostsEntry(self.tmpname, '192.168.1.1', 'myhost.domain.tld',
+                     ['myhost'])
 
-      self.assertFileContent(tmpname,
-        "# This is a test file for /etc/hosts\n"
-        "127.0.0.1\tlocalhost\n"
-        "192.168.1.1\tmyhost.domain.tld myhost\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "# This is a test file for /etc/hosts\n"
+      "127.0.0.1\tlocalhost\n"
+      "192.168.1.1\tmyhost.domain.tld myhost\n")
 
   def testRemovingExistingHost(self):
-    tmpname = self.writeTestFile()
-    try:
-      RemoveEtcHostsEntry(tmpname, 'router')
+    RemoveEtcHostsEntry(self.tmpname, 'router')
 
-      self.assertFileContent(tmpname,
-        "# This is a test file for /etc/hosts\n"
-        "127.0.0.1\tlocalhost\n"
-        "192.168.1.1 gw\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "# This is a test file for /etc/hosts\n"
+      "127.0.0.1\tlocalhost\n"
+      "192.168.1.1 gw\n")
 
   def testRemovingSingleExistingHost(self):
-    tmpname = self.writeTestFile()
-    try:
-      RemoveEtcHostsEntry(tmpname, 'localhost')
+    RemoveEtcHostsEntry(self.tmpname, 'localhost')
 
-      self.assertFileContent(tmpname,
-        "# This is a test file for /etc/hosts\n"
-        "192.168.1.1 router gw\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "# This is a test file for /etc/hosts\n"
+      "192.168.1.1 router gw\n")
 
   def testRemovingNonExistingHost(self):
-    tmpname = self.writeTestFile()
-    try:
-      RemoveEtcHostsEntry(tmpname, 'myhost')
+    RemoveEtcHostsEntry(self.tmpname, 'myhost')
 
-      self.assertFileContent(tmpname,
-        "# This is a test file for /etc/hosts\n"
-        "127.0.0.1\tlocalhost\n"
-        "192.168.1.1 router gw\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "# This is a test file for /etc/hosts\n"
+      "127.0.0.1\tlocalhost\n"
+      "192.168.1.1 router gw\n")
 
   def testRemovingAlias(self):
-    tmpname = self.writeTestFile()
-    try:
-      RemoveEtcHostsEntry(tmpname, 'gw')
+    RemoveEtcHostsEntry(self.tmpname, 'gw')
 
-      self.assertFileContent(tmpname,
-        "# This is a test file for /etc/hosts\n"
-        "127.0.0.1\tlocalhost\n"
-        "192.168.1.1 router\n")
-    finally:
-      os.unlink(tmpname)
+    self.assertFileContent(self.tmpname,
+      "# This is a test file for /etc/hosts\n"
+      "127.0.0.1\tlocalhost\n"
+      "192.168.1.1 router\n")
 
 
 class TestShellQuoting(unittest.TestCase):