from lib import common, language
from lib import level_const as level
import botocore.exceptions
import logging, traceback

def check_iam_password_policy(session, selected_language) -> common.CheckResult:

    translator = language.translation("iam_password_policy", selected_language)

    print(translator.checking())
    client = session.client('iam')

    ret = common.CheckResult()

    ret.title = translator.title()
    ret.result_cols = ["Password Policy"]

    try:
        client.get_account_password_policy()
    except client.exceptions.NoSuchEntityException:
        ret.level = level.warning
        ret.msg = translator.warning()
        ret.result_rows.append(["Not Set"])
        return ret
    except client.exceptions.ServiceFailureException:
        logging.error(traceback.format_exc())
        ret.level = level.error
        ret.msg = "Service Failure"
        ret.result_rows.append(["ERR"])
        return ret
    except botocore.exceptions.ClientError:
        logging.error(traceback.format_exc())
        ret.level = level.error
        ret.msg = "Unexpected Error"
        ret.result_rows.append(["ERR"])
        return ret
    else:
        ret.level = level.success
        ret.msg = translator.success()

    return ret