diff options
author | Joshua Harlow <harlowja@yahoo-inc.com> | 2012-07-09 15:08:27 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2012-07-09 15:08:27 -0400 |
commit | 492dc7478e0ab3eb03eb3b0b5d0e47812339b83f (patch) | |
tree | 1e18f51424a4a72a2733af535cde770501af1f14 /cloudinit | |
parent | 285e127de45f0feed7170bafc79b502170d5b381 (diff) | |
download | vyos-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.
Diffstat (limited to 'cloudinit')
-rw-r--r-- | cloudinit/stages.py | 20 | ||||
-rw-r--r-- | cloudinit/util.py | 7 |
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 |