diff --git a/cloud/amazon/iam_policy.py b/cloud/amazon/iam_policy.py index 44a708c9a66..2054a331c60 100644 --- a/cloud/amazon/iam_policy.py +++ b/cloud/amazon/iam_policy.py @@ -146,9 +146,7 @@ def user_action(module, iam, name, policy_name, skip, pdoc, state): if urllib.unquote(iam.get_user_policy(name, pol). get_user_policy_result.policy_document) == pdoc: policy_match = True - if policy_match: - msg=("The policy document you specified already exists " - "under the name %s." % pol) + if state == 'present' and skip: if policy_name not in current_policies and not policy_match: changed = True @@ -189,15 +187,12 @@ def role_action(module, iam, name, policy_name, skip, pdoc, state): module.exit_json(changed=False) else: module.fail_json(msg=e.message) - - try: + + try: for pol in current_policies: if urllib.unquote(iam.get_role_policy(name, pol). get_role_policy_result.policy_document) == pdoc: policy_match = True - if policy_match: - msg=("The policy document you specified already exists " - "under the name %s." % pol) if state == 'present' and skip: if policy_name not in current_policies and not policy_match: changed = True @@ -305,10 +300,12 @@ def main(): pdoc = json.dumps(json.load(json_data)) json_data.close() elif module.params.get('policy_json') != None: - try: - pdoc = json.dumps(module.params.get('policy_json')) - except Exception as e: - module.fail_json(msg=str(e) + '\n' + module.params.get('policy_json')) + # if its a string, assume it is already JSON + if not isinstance(pdoc, basestring): + try: + pdoc = json.dumps(module.params.get('policy_json')) + except Exception as e: + module.fail_json(msg='Failed to convert the policy into valid JSON: %s' % str(e)) else: pdoc=None