summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2012-07-09 15:08:27 -0400
committerScott Moser <smoser@ubuntu.com>2012-07-09 15:08:27 -0400
commit492dc7478e0ab3eb03eb3b0b5d0e47812339b83f (patch)
tree1e18f51424a4a72a2733af535cde770501af1f14
parent285e127de45f0feed7170bafc79b502170d5b381 (diff)
downloadvyos-cloud-init-492dc7478e0ab3eb03eb3b0b5d0e47812339b83f.tar.gz
vyos-cloud-init-492dc7478e0ab3eb03eb3b0b5d0e47812339b83f.zip
Update chownbyname to catch the key error when users/groups that are not known
are provided and rethrow it as a OSError (which seems reasonable) and adjust its usage in the log file touching/permission modification stage to catch this error and log it.
-rw-r--r--cloudinit/stages.py20
-rw-r--r--cloudinit/util.py7
2 files changed, 18 insertions, 9 deletions
diff --git a/cloudinit/stages.py b/cloudinit/stages.py
index 8fd6aa5d..3beeb36e 100644
--- a/cloudinit/stages.py
+++ b/cloudinit/stages.py
@@ -133,12 +133,24 @@ class Init(object):
if log_file:
util.ensure_file(log_file)
if perms:
- (u, g) = perms.split(':', 1)
- if u == "-1" or u == "None":
+ perms_parted = perms.split(':', 1)
+ u = perms_parted[0]
+ if len(perms_parted) == 2:
+ g = perms_parted[1]
+ else:
+ g = ''
+ u = u.strip()
+ g = g.strip()
+ if u == "-1" or u.lower() == "none":
u = None
- if g == "-1" or g == "None":
+ if g == "-1" or g.lower() == "none":
g = None
- util.chownbyname(log_file, u, g)
+ try:
+ util.chownbyname(log_file, u, g)
+ except OSError:
+ util.logexc(LOG, ("Unable to change the ownership"
+ " of %s to user %s, group %s"),
+ log_file, u, g)
def read_cfg(self, extra_fns=None):
# None check so that we don't keep on re-loading if empty
diff --git a/cloudinit/util.py b/cloudinit/util.py
index 44ce9770..e591e306 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -937,12 +937,9 @@ def chownbyname(fname, user=None, group=None):
uid = pwd.getpwnam(user).pw_uid
if group:
gid = grp.getgrnam(group).gr_gid
- except KeyError:
- logexc(LOG, ("Failed changing the ownership of %s using username %s "
- "and groupname %s (do they exist?)"), fname, user, group)
- return False
+ except KeyError as e:
+ raise OSError("Unknown user or group: %s" % (e))
chownbyid(fname, uid, gid)
- return True
# Always returns well formated values