def cert_action(module, iam, name, cpath, new_name, new_path, state, cert, key, cert_chain, orig_cert_names, orig_cert_bodies, dup_ok): if state == 'present': update = dup_check(module, iam, name, new_name, cert, orig_cert_names, orig_cert_bodies, dup_ok) if update: opath, ocert, ocert_id, upload_date, exp, arn = cert_meta(iam, name) changed = True if new_name and new_path: iam.update_server_cert(name, new_cert_name=new_name, new_path=new_path) module.exit_json(changed=changed, original_name=name, new_name=new_name, original_path=opath, new_path=new_path, cert_body=ocert, upload_date=upload_date, expiration_date=exp, arn=arn) elif new_name and not new_path: iam.update_server_cert(name, new_cert_name=new_name) module.exit_json(changed=changed, original_name=name, new_name=new_name, cert_path=opath, cert_body=ocert, upload_date=upload_date, expiration_date=exp, arn=arn) elif not new_name and new_path: iam.update_server_cert(name, new_path=new_path) module.exit_json(changed=changed, name=new_name, original_path=opath, new_path=new_path, cert_body=ocert, upload_date=upload_date, expiration_date=exp, arn=arn) else: changed = False module.exit_json(changed=changed, name=name, cert_path=opath, cert_body=ocert, upload_date=upload_date, expiration_date=exp, arn=arn, msg='No new path or name specified. No changes made') else: changed = True iam.upload_server_cert(name, cert, key, cert_chain=cert_chain, path=cpath) opath, ocert, ocert_id, upload_date, exp, arn = cert_meta(iam, name) module.exit_json(changed=changed, name=name, cert_path=opath, cert_body=ocert, upload_date=upload_date, expiration_date=exp, arn=arn) elif state == 'absent': if name in orig_cert_names: changed = True iam.delete_server_cert(name) module.exit_json(changed=changed, deleted_cert=name) else: changed = False module.exit_json(changed=changed, msg='Certificate with the name %s already absent' % name)