# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: walters@verbum.org-20140809132424-iex89fgd4j6qbeuy # target_branch: http://bazaar.launchpad.net/~cloud-init-dev/cloud-\ # init/trunk/ # testament_sha1: cb9750c003f3221ab62d9282ea635e1764278443 # timestamp: 2014-08-09 09:39:57 -0400 # base_revision_id: smoser@ubuntu.com-20140327140657-c5ekt3vemwbmcyzm # # Begin patch === modified file 'cloudinit/distros/__init__.py' --- cloudinit/distros/__init__.py 2014-02-12 19:56:55 +0000 +++ cloudinit/distros/__init__.py 2014-08-09 13:24:24 +0000 @@ -328,11 +328,17 @@ } redact_opts = ['passwd'] + # Options that are comma separated lists which we need to parse + list_stripped_opts = ['groups'] # Check the values and create the command for key, val in kwargs.iteritems(): if key in adduser_opts and val and isinstance(val, str): + if key in list_stripped_opts: + values = [x.strip() for x in val.split(',')] + val = ','.join(values) + adduser_cmd.extend([adduser_opts[key], val]) # Redact certain fields from the logs @@ -612,6 +618,9 @@ raise TypeError("Bad group member type %s" % type_utils.obj_name(v)) elif isinstance(i, (str, basestring)): + # Common to have leading whitespace in string lists, + # but not all useradd tools will support it. + i = i.strip() if i not in c_grp_cfg: c_grp_cfg[i] = [] else: # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWRiPozYAAdP/gEQUQABY5//3 ewCIir////BQBG2tWNLehO3OgzhJJGgExNMptNAEaYk2miGQ0BtQZKYCnqejQTU8oyGgDIAGgaAE iQQJhDSaTaQPUAAAA0AOYBNMAmQwABMEwAAASSmmlPJmqeU9NQxHtUeo9QaAAyAAepvz7WauUsUH 37Pgww10P9NF9cdMhUVQ1SQJGGqiDTsr1xPe2SC1gKBHPGXL22NsPt8z8zslpESDLdLbOkyOP3Yb pil9ExhSGOxglGHvvbdEdi3n9y+ytvwuuh6DXnc1klyCH3uLMd1DdTOsX1d+Ep8Ox3ZrGLerlnHV GvBQ0efzvl6ucUe9ucfa+PzbpBlcRb9zD6zmF4rlyWKreLTpl754sI/6G3JLsW/dz1x3m2Ofm9VU Q10P86a81RiKqcUIUJqxpZxeScRsykkHSK4c0wRM3KdcePhcaaOx0E6kaDhkyA7A51rwOEyoB1Fk +R9kO3XGRgl4jXiMLoGirCV6gTDIbAMrFJhc9EsBxYDHcVYvlKGIbdKukB4bEB2RcAwvClU3QBxa YEZRaJQW4RxpM1jjOmb22tRYKKUQL3NK0zJjlOR09QTnN1MNTeLPGyedLuNNxpc1MWuvLAzMZTQS QLpYVo9yGuowwP0DMZC42zoEUqEYlsWgvFMikNIL3QaMwCwuk2VxykDO5grebqKEMs1xM94N79Lc oF4g1d9mg7I3vZa6ZwThOrmVCMI3M0PmZUZpKDIbm0+vdrCxKeRmTHvtxQtCyOHpxVihBp3VvTgr IdEwcljgvj/R5wmKQtvqlChj9NMXX4ZKEyGOP5YpGSxWWNEzuOrcZOA7uXcX9odRWqFbqUugWHaL xWVc1OZezG5S542gajxCh2O9TG1mmq102cuQqa1GmwPCFUFir1Dl3tC/2qzc9a7dLyHLZPaRw487 uDVd5vdPOG9wZq4orj/YsMJs9LSw+Sm9GxNs93FywGTLMbd2pwnpNIMMllwI2yq00CpB4pV4PdpI ZS1xfjE2B4vnQ/OwYkiVYmGnFgh/f8YLMFz8mLmYZVIeuhrBLFKtXeUYgL8BXYUEg0R5kI6M4E+C otiiCk0+19stwUzCtNoUFDIruB618ZougvFc9BNaGhYSHecpNeJ4BOAorA5QfaSOV0x8b9ls0F7N ZBRLZu6F415C0fViVuTtCtDaq1aGxhoelVmEpwIiwOdMhzKASLC9V6/ye4UmSygNpqKDMUl0oZ0p LpJKtwdzLpmsFTist/GGmTMC51ZYtSxr+1O0tF1i2dqhHmTFDGG4spNJiv69CxKnRagknGce1USL isMKbys9scHwrSVjq7CjSjWsm9mtoMzYzrzwB3rpnQL1welpEwwVC4iiHOuD2f3HK3a/Gu3bJT+B VOc92qCFkQwnjjka0C8MF9SF/miTewNHAp2CgOoZaKTZs0JFA9VLRjfgLq9vld6+qsWNKQOEt59h sXlwT0F/8lFnTLYaHWwwjELmbpsVspcYXf4u5IpwoSAxH0Zs