From 39c8becfc87012f9241a6c0a83aaeb4bf73e73c5 Mon Sep 17 00:00:00 2001 From: Piffey Parlance <piffey@piffey.net> Date: Sat, 2 Feb 2013 18:07:10 -0600 Subject: [PATCH 1/2] * Added support for multi-line key files. --- library/authorized_key | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/library/authorized_key b/library/authorized_key index f65d8bfca65..51515444fa4 100644 --- a/library/authorized_key +++ b/library/authorized_key @@ -143,28 +143,32 @@ def enforce_state(module, params): key = params["key"] state = params.get("state", "present") + # If multiple keys split on the newline if '\n' in key: - module.fail_json(msg="key= can only contain a single key") + new_keys = key.split('\n') # check current state -- just get the filename, don't create file params["keyfile"] = keyfile(module, user, write=False) keys = readkeys(params["keyfile"]) - present = key in keys - # handle idempotent state=present - if state=="present": - if present: - module.exit_json(changed=False) - keys.append(key) - writekeys(module, keyfile(module, user,write=True), keys) + # Check our new keys, if any of them exist we'll continue. + for new_key in new_keys: + present = new_key in keys + # handle idempotent state=present + if state=="present": + if present: + continue + keys.append(new_key) + writekeys(module, keyfile(module, user,write=True), keys) + params['changed'] = True - elif state=="absent": - if not present: - module.exit_json(changed=False) - keys.remove(key) - writekeys(module, keyfile(module, user,write=True), keys) + elif state=="absent": + if not present: + continue + keys.remove(new_key) + writekeys(module, keyfile(module, user,write=True), keys) + params['changed'] = True - params['changed'] = True return params def main(): From 0f44ba5a5ad999cba9e9d9170bc7a01b44b81d47 Mon Sep 17 00:00:00 2001 From: Piffey Parlance <piffey@piffey.net> Date: Sat, 2 Feb 2013 18:17:18 -0600 Subject: [PATCH 2/2] * Minor removal of some dumb I did. --- library/authorized_key | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/library/authorized_key b/library/authorized_key index 51515444fa4..f936e20c81d 100644 --- a/library/authorized_key +++ b/library/authorized_key @@ -143,16 +143,14 @@ def enforce_state(module, params): key = params["key"] state = params.get("state", "present") - # If multiple keys split on the newline - if '\n' in key: - new_keys = key.split('\n') + key = key.split('\n') # check current state -- just get the filename, don't create file params["keyfile"] = keyfile(module, user, write=False) keys = readkeys(params["keyfile"]) # Check our new keys, if any of them exist we'll continue. - for new_key in new_keys: + for new_key in key: present = new_key in keys # handle idempotent state=present if state=="present":