From cd55d3b6ab44d34d39f2830654e8a9f47cd9c301 Mon Sep 17 00:00:00 2001 From: Piffey Parlance Date: Sat, 2 Feb 2013 18:07:10 -0600 Subject: [PATCH] * Added support for multi-line key files. --- authorized_key | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/authorized_key b/authorized_key index f65d8bfca65..51515444fa4 100644 --- a/authorized_key +++ b/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():