From eea3b5723dc62fa06942cde174e7462b31a78ae1 Mon Sep 17 00:00:00 2001
From: Bernardo Dal Seno <bdalseno@google.com>
Date: Tue, 13 Dec 2011 16:01:24 +0100
Subject: [PATCH] noded: Fix /etc/hosts group ownership

When Ganeti was compiled with the option of running as a different
user/group, the group ownership of /etc/hosts was set to gnt-daemons.  Now
permissions for /etc/hosts are preserved (or set correctly).

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 lib/utils/nodesetup.py                  | 6 ++++--
 test/ganeti.utils.nodesetup_unittest.py | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/utils/nodesetup.py b/lib/utils/nodesetup.py
index 0931ee320..5dfc62187 100644
--- a/lib/utils/nodesetup.py
+++ b/lib/utils/nodesetup.py
@@ -62,7 +62,8 @@ def SetEtcHostsEntry(file_name, ip, hostname, aliases):
       out.write(line)
   _write_entry(written)
 
-  io.WriteFile(file_name, data=out.getvalue(), mode=0644)
+  io.WriteFile(file_name, data=out.getvalue(), uid=0, gid=0, mode=0644,
+               keep_perms=io.KP_IF_EXISTS)
 
 
 def AddHostToEtcHosts(hostname, ip):
@@ -104,7 +105,8 @@ def RemoveEtcHostsEntry(file_name, hostname):
 
     out.write(line)
 
-  io.WriteFile(file_name, data=out.getvalue(), mode=0644)
+  io.WriteFile(file_name, data=out.getvalue(), uid=0, gid=0, mode=0644,
+               keep_perms=io.KP_IF_EXISTS)
 
 
 def RemoveHostFromEtcHosts(hostname):
diff --git a/test/ganeti.utils.nodesetup_unittest.py b/test/ganeti.utils.nodesetup_unittest.py
index c3480c2e0..2c6148921 100755
--- a/test/ganeti.utils.nodesetup_unittest.py
+++ b/test/ganeti.utils.nodesetup_unittest.py
@@ -44,6 +44,7 @@ class TestEtcHosts(testutils.GanetiTestCase):
       handle.write("192.0.2.1 router gw\n")
     finally:
       handle.close()
+    os.chmod(self.tmpname, 0644)
 
   def testSettingNewIp(self):
     utils.SetEtcHostsEntry(self.tmpname, "198.51.100.4", "myhost.example.com",
-- 
GitLab