#
# -*- coding: utf-8 -*-
# Copyright 2025 Dell Inc. or its subsidiaries. All Rights Reserved
# GNU General Public License v3.0+
# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

#############################################
#                WARNING                    #
#############################################
#
# This file is auto generated by the resource
#   module builder playbook.
#
# Do not edit this file manually.
#
# Changes to this file will be over written
#   by the resource module builder.
#
# Changes should be made in the model used to
#   generate this file or in the resource module
#   builder template.
#
#############################################

"""
The arg spec for the sonic_aaa module
"""

from __future__ import absolute_import, division, print_function
__metaclass__ = type


class AaaArgs(object):  # pylint: disable=R0903
    """The arg spec for the sonic_aaa module
    """

    def __init__(self, **kwargs):
        pass

    argument_spec = {
        'config': {
            'options': {
                'authentication': {
                    'options': {
                        'auth_method': {
                            'choices': ['ldap', 'local', 'radius', 'tacacs+', 'cac-piv'],
                            'elements': 'str',
                            'type': 'list'
                        },
                        'console_auth_local': {'type': 'bool'},
                        'failthrough': {'type': 'bool'},
                        'mfa_auth_method': {
                            'choices': ['rsa-securid'],
                            'type': 'str'
                        },
                        'login_mfa_console': {'type': 'bool'}
                    },
                    'type': 'dict'
                },
                'authorization': {
                    'options': {
                        'commands_auth_method': {
                            'choices': ['local', 'tacacs+'],
                            'elements': 'str',
                            'type': 'list'
                        },
                        'login_auth_method': {
                            'choices': ['ldap', 'local'],
                            'elements': 'str',
                            'type': 'list'
                        }
                    },
                    'type': 'dict'
                },
                'accounting': {
                    'options': {
                        'commands_accounting': {
                            'options': {
                                'accounting_method': {
                                    'choices': ['tacacs+', 'logging'],
                                    'elements': 'str',
                                    'type': 'list'
                                },
                                'accounting_record_type': {
                                    'choices': ['start-stop', 'stop-only'],
                                    'type': 'str'
                                },
                                'accounting_console_exempt': {'type': 'bool'}
                            },
                            'type': 'dict'
                        },
                        'session_accounting': {
                            'options': {
                                'accounting_method': {
                                    'choices': ['tacacs+', 'logging'],
                                    'elements': 'str',
                                    'type': 'list'
                                },
                                'accounting_record_type': {
                                    'choices': ['start-stop', 'stop-only'],
                                    'type': 'str'
                                },
                                'accounting_console_exempt': {'type': 'bool'}
                            },
                            'type': 'dict'
                        }
                    },
                    'type': 'dict'
                },
                'name_service': {
                    'options': {
                        'group': {
                            'choices': ['ldap', 'local', 'login'],
                            'elements': 'str',
                            'type': 'list'
                        },
                        'netgroup': {
                            'choices': ['ldap', 'local'],
                            'elements': 'str',
                            'type': 'list'
                        },
                        'passwd': {
                            'choices': ['ldap', 'local', 'login'],
                            'elements': 'str',
                            'type': 'list'
                        },
                        'shadow': {
                            'choices': ['ldap', 'local', 'login'],
                            'elements': 'str',
                            'type': 'list'
                        },
                        'sudoers': {
                            'choices': ['ldap', 'local'],
                            'elements': 'str',
                            'type': 'list'
                        }
                    },
                    'type': 'dict'
                }
            },
            'type': 'dict'
        },
        'state': {
            'choices': ['merged', 'deleted', 'overridden', 'replaced'],
            'default': 'merged', 'type': 'str'
        }
    }  # pylint: disable=C0301
