#
# -*- coding: utf-8 -*-
# Copyright 2019 Red Hat
# 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 junos_bgp_address_family module
"""
from __future__ import absolute_import, division, print_function


__metaclass__ = type


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

    def __init__(self, **kwargs):
        pass

    argument_spec = {
        "config": {
            "options": {
                "address_family": {
                    "elements": "dict",
                    "options": {
                        "af_type": {
                            "elements": "dict",
                            "options": {
                                "accepted_prefix_limit": {
                                    "options": {
                                        "forever": {"type": "bool"},
                                        "idle_timeout": {"type": "bool"},
                                        "idle_timeout_value": {"type": "int"},
                                        "limit_threshold": {"type": "int"},
                                        "maximum": {"type": "int"},
                                        "teardown": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "add_path": {
                                    "options": {
                                        "receive": {"type": "bool"},
                                        "send": {
                                            "options": {
                                                "include_backup_path": {
                                                    "type": "int",
                                                },
                                                "multipath": {"type": "bool"},
                                                "path_count": {
                                                    "required": True,
                                                    "type": "int",
                                                },
                                                "path_selection_mode": {
                                                    "options": {
                                                        "all_paths": {
                                                            "type": "bool",
                                                        },
                                                        "equal_cost_paths": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "prefix_policy": {
                                                    "type": "str",
                                                },
                                            },
                                            "type": "dict",
                                        },
                                    },
                                    "type": "dict",
                                },
                                "aggregate_label": {
                                    "options": {
                                        "community": {"type": "str"},
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "aigp": {
                                    "options": {
                                        "disable": {"type": "bool"},
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "damping": {"type": "bool"},
                                "defer_initial_multipath_build": {
                                    "options": {
                                        "maximum_delay": {"type": "int"},
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "delay_route_advertisements": {
                                    "options": {
                                        "max_delay_route_age": {"type": "int"},
                                        "max_delay_routing_uptime": {
                                            "type": "int",
                                        },
                                        "min_delay_inbound_convergence": {
                                            "type": "int",
                                        },
                                        "min_delay_routing_uptime": {
                                            "type": "int",
                                        },
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "entropy_label": {
                                    "options": {
                                        "import": {"type": "str"},
                                        "no_next_hop_validation": {
                                            "type": "bool",
                                        },
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "explicit_null": {
                                    "options": {
                                        "connected_only": {"type": "bool"},
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "extended_nexthop": {"type": "bool"},
                                "extended_nexthop_color": {"type": "bool"},
                                "graceful_restart_forwarding_state_bit": {
                                    "choices": ["from-fib", "set"],
                                    "type": "str",
                                },
                                "legacy_redirect_ip_action": {
                                    "options": {
                                        "receive": {"type": "bool"},
                                        "send": {"type": "bool"},
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "local_ipv4_address": {"type": "str"},
                                "loops": {"type": "int"},
                                "no_install": {"type": "bool"},
                                "no_validate": {"type": "str"},
                                "output_queue_priority_expedited": {
                                    "type": "bool",
                                },
                                "output_queue_priority_priority": {
                                    "type": "int",
                                },
                                "per_group_label": {"type": "bool"},
                                "per_prefix_label": {"type": "bool"},
                                "prefix_limit": {
                                    "options": {
                                        "forever": {"type": "bool"},
                                        "idle_timeout": {"type": "bool"},
                                        "idle_timeout_value": {"type": "int"},
                                        "limit_threshold": {"type": "int"},
                                        "maximum": {"type": "int"},
                                        "teardown": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "resolve_vpn": {"type": "bool"},
                                "rib": {"choices": ["inet.3"], "type": "str"},
                                "ribgroup_name": {"type": "str"},
                                "route_refresh_priority_expedited": {
                                    "type": "bool",
                                },
                                "route_refresh_priority_priority": {
                                    "type": "int",
                                },
                                "secondary_independent_resolution": {
                                    "type": "bool",
                                },
                                "set": {"type": "bool"},
                                "strip_nexthop": {"type": "bool"},
                                "topology": {
                                    "elements": "dict",
                                    "options": {
                                        "community": {
                                            "elements": "str",
                                            "type": "list",
                                        },
                                        "name": {"type": "str"},
                                    },
                                    "type": "list",
                                },
                                "traffic_statistics": {
                                    "options": {
                                        "file": {
                                            "options": {
                                                "filename": {"type": "str"},
                                                "files": {"type": "int"},
                                                "no_world_readable": {
                                                    "type": "bool",
                                                },
                                                "size": {"type": "int"},
                                                "world_readable": {
                                                    "type": "bool",
                                                },
                                            },
                                            "type": "dict",
                                        },
                                        "interval": {"type": "int"},
                                        "labeled_path": {"type": "bool"},
                                        "set": {"type": "bool"},
                                    },
                                    "type": "dict",
                                },
                                "type": {
                                    "choices": [
                                        "any",
                                        "flow",
                                        "labeled-unicast",
                                        "multicast",
                                        "segment-routing-te",
                                        "unicast",
                                        "signaling",
                                        "auto-discovery-mspw",
                                        "auto-discovery-only",
                                    ],
                                    "type": "str",
                                },
                                "withdraw_priority_expedited": {
                                    "type": "bool",
                                },
                                "withdraw_priority_priority": {"type": "int"},
                            },
                            "type": "list",
                        },
                        "afi": {
                            "choices": [
                                "evpn",
                                "inet",
                                "inet-mdt",
                                "inet-mvpn",
                                "inet-vpn",
                                "inet6",
                                "inet6-mvpn",
                                "inet6-vpn",
                                "iso-vpn",
                                "l2vpn",
                                "route-target",
                                "traffic-engineering",
                            ],
                            "type": "str",
                        },
                    },
                    "type": "list",
                },
                "groups": {
                    "elements": "dict",
                    "options": {
                        "address_family": {
                            "elements": "dict",
                            "options": {
                                "af_type": {
                                    "elements": "dict",
                                    "options": {
                                        "accepted_prefix_limit": {
                                            "options": {
                                                "forever": {"type": "bool"},
                                                "idle_timeout": {
                                                    "type": "bool",
                                                },
                                                "idle_timeout_value": {
                                                    "type": "int",
                                                },
                                                "limit_threshold": {
                                                    "type": "int",
                                                },
                                                "maximum": {"type": "int"},
                                                "teardown": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "add_path": {
                                            "options": {
                                                "receive": {"type": "bool"},
                                                "send": {
                                                    "options": {
                                                        "include_backup_path": {
                                                            "type": "int",
                                                        },
                                                        "multipath": {
                                                            "type": "bool",
                                                        },
                                                        "path_count": {
                                                            "required": True,
                                                            "type": "int",
                                                        },
                                                        "path_selection_mode": {
                                                            "options": {
                                                                "all_paths": {
                                                                    "type": "bool",
                                                                },
                                                                "equal_cost_paths": {
                                                                    "type": "bool",
                                                                },
                                                            },
                                                            "type": "dict",
                                                        },
                                                        "prefix_policy": {
                                                            "type": "str",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                            },
                                            "type": "dict",
                                        },
                                        "aggregate_label": {
                                            "options": {
                                                "community": {"type": "str"},
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "aigp": {
                                            "options": {
                                                "disable": {"type": "bool"},
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "damping": {"type": "bool"},
                                        "defer_initial_multipath_build": {
                                            "options": {
                                                "maximum_delay": {
                                                    "type": "int",
                                                },
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "delay_route_advertisements": {
                                            "options": {
                                                "max_delay_route_age": {
                                                    "type": "int",
                                                },
                                                "max_delay_routing_uptime": {
                                                    "type": "int",
                                                },
                                                "min_delay_inbound_convergence": {
                                                    "type": "int",
                                                },
                                                "min_delay_routing_uptime": {
                                                    "type": "int",
                                                },
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "entropy_label": {
                                            "options": {
                                                "import": {"type": "str"},
                                                "no_next_hop_validation": {
                                                    "type": "bool",
                                                },
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "explicit_null": {
                                            "options": {
                                                "connected_only": {
                                                    "type": "bool",
                                                },
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "extended_nexthop": {"type": "bool"},
                                        "extended_nexthop_color": {
                                            "type": "bool",
                                        },
                                        "graceful_restart_forwarding_state_bit": {
                                            "choices": ["from-fib", "set"],
                                            "type": "str",
                                        },
                                        "legacy_redirect_ip_action": {
                                            "options": {
                                                "receive": {"type": "bool"},
                                                "send": {"type": "bool"},
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "local_ipv4_address": {"type": "str"},
                                        "loops": {"type": "int"},
                                        "no_install": {"type": "bool"},
                                        "no_validate": {"type": "str"},
                                        "output_queue_priority_expedited": {
                                            "type": "bool",
                                        },
                                        "output_queue_priority_priority": {
                                            "type": "int",
                                        },
                                        "per_group_label": {"type": "bool"},
                                        "per_prefix_label": {"type": "bool"},
                                        "prefix_limit": {
                                            "options": {
                                                "forever": {"type": "bool"},
                                                "idle_timeout": {
                                                    "type": "bool",
                                                },
                                                "idle_timeout_value": {
                                                    "type": "int",
                                                },
                                                "limit_threshold": {
                                                    "type": "int",
                                                },
                                                "maximum": {"type": "int"},
                                                "teardown": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "resolve_vpn": {"type": "bool"},
                                        "rib": {
                                            "choices": ["inet.3"],
                                            "type": "str",
                                        },
                                        "ribgroup_name": {"type": "str"},
                                        "route_refresh_priority_expedited": {
                                            "type": "bool",
                                        },
                                        "route_refresh_priority_priority": {
                                            "type": "int",
                                        },
                                        "secondary_independent_resolution": {
                                            "type": "bool",
                                        },
                                        "set": {"type": "bool"},
                                        "strip_nexthop": {"type": "bool"},
                                        "topology": {
                                            "elements": "dict",
                                            "options": {
                                                "community": {
                                                    "elements": "str",
                                                    "type": "list",
                                                },
                                                "name": {"type": "str"},
                                            },
                                            "type": "list",
                                        },
                                        "traffic_statistics": {
                                            "options": {
                                                "file": {
                                                    "options": {
                                                        "filename": {
                                                            "type": "str",
                                                        },
                                                        "files": {
                                                            "type": "int",
                                                        },
                                                        "no_world_readable": {
                                                            "type": "bool",
                                                        },
                                                        "size": {
                                                            "type": "int",
                                                        },
                                                        "world_readable": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "interval": {"type": "int"},
                                                "labeled_path": {
                                                    "type": "bool",
                                                },
                                                "set": {"type": "bool"},
                                            },
                                            "type": "dict",
                                        },
                                        "type": {
                                            "choices": [
                                                "any",
                                                "flow",
                                                "labeled-unicast",
                                                "multicast",
                                                "segment-routing-te",
                                                "unicast",
                                                "signaling",
                                                "auto-discovery-mspw",
                                                "auto-discovery-only",
                                            ],
                                            "type": "str",
                                        },
                                        "withdraw_priority_expedited": {
                                            "type": "bool",
                                        },
                                        "withdraw_priority_priority": {
                                            "type": "int",
                                        },
                                    },
                                    "type": "list",
                                },
                                "afi": {
                                    "choices": [
                                        "evpn",
                                        "inet",
                                        "inet-mdt",
                                        "inet-mvpn",
                                        "inet-vpn",
                                        "inet6",
                                        "inet6-mvpn",
                                        "inet6-vpn",
                                        "iso-vpn",
                                        "l2vpn",
                                        "route-target",
                                        "traffic-engineering",
                                    ],
                                    "type": "str",
                                },
                            },
                            "type": "list",
                        },
                        "name": {"type": "str"},
                        "neighbors": {
                            "elements": "dict",
                            "options": {
                                "address_family": {
                                    "elements": "dict",
                                    "options": {
                                        "af_type": {
                                            "elements": "dict",
                                            "options": {
                                                "accepted_prefix_limit": {
                                                    "options": {
                                                        "forever": {
                                                            "type": "bool",
                                                        },
                                                        "idle_timeout": {
                                                            "type": "bool",
                                                        },
                                                        "idle_timeout_value": {
                                                            "type": "int",
                                                        },
                                                        "limit_threshold": {
                                                            "type": "int",
                                                        },
                                                        "maximum": {
                                                            "type": "int",
                                                        },
                                                        "teardown": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "add_path": {
                                                    "options": {
                                                        "receive": {
                                                            "type": "bool",
                                                        },
                                                        "send": {
                                                            "options": {
                                                                "include_backup_path": {
                                                                    "type": "int",
                                                                },
                                                                "multipath": {
                                                                    "type": "bool",
                                                                },
                                                                "path_count": {
                                                                    "required": True,
                                                                    "type": "int",
                                                                },
                                                                "path_selection_mode": {
                                                                    "options": {
                                                                        "all_paths": {
                                                                            "type": "bool",
                                                                        },
                                                                        "equal_cost_paths": {
                                                                            "type": "bool",
                                                                        },
                                                                    },
                                                                    "type": "dict",
                                                                },
                                                                "prefix_policy": {
                                                                    "type": "str",
                                                                },
                                                            },
                                                            "type": "dict",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "aggregate_label": {
                                                    "options": {
                                                        "community": {
                                                            "type": "str",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "aigp": {
                                                    "options": {
                                                        "disable": {
                                                            "type": "bool",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "damping": {"type": "bool"},
                                                "defer_initial_multipath_build": {
                                                    "options": {
                                                        "maximum_delay": {
                                                            "type": "int",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "delay_route_advertisements": {
                                                    "options": {
                                                        "max_delay_route_age": {
                                                            "type": "int",
                                                        },
                                                        "max_delay_routing_uptime": {
                                                            "type": "int",
                                                        },
                                                        "min_delay_inbound_convergence": {
                                                            "type": "int",
                                                        },
                                                        "min_delay_routing_uptime": {
                                                            "type": "int",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "entropy_label": {
                                                    "options": {
                                                        "import": {
                                                            "type": "str",
                                                        },
                                                        "no_next_hop_validation": {
                                                            "type": "bool",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "explicit_null": {
                                                    "options": {
                                                        "connected_only": {
                                                            "type": "bool",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "extended_nexthop": {
                                                    "type": "bool",
                                                },
                                                "extended_nexthop_color": {
                                                    "type": "bool",
                                                },
                                                "graceful_restart_forwarding_state_bit": {
                                                    "choices": [
                                                        "from-fib",
                                                        "set",
                                                    ],
                                                    "type": "str",
                                                },
                                                "legacy_redirect_ip_action": {
                                                    "options": {
                                                        "receive": {
                                                            "type": "bool",
                                                        },
                                                        "send": {
                                                            "type": "bool",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "local_ipv4_address": {
                                                    "type": "str",
                                                },
                                                "loops": {"type": "int"},
                                                "no_install": {"type": "bool"},
                                                "no_validate": {"type": "str"},
                                                "output_queue_priority_expedited": {
                                                    "type": "bool",
                                                },
                                                "output_queue_priority_priority": {
                                                    "type": "int",
                                                },
                                                "per_group_label": {
                                                    "type": "bool",
                                                },
                                                "per_prefix_label": {
                                                    "type": "bool",
                                                },
                                                "prefix_limit": {
                                                    "options": {
                                                        "forever": {
                                                            "type": "bool",
                                                        },
                                                        "idle_timeout": {
                                                            "type": "bool",
                                                        },
                                                        "idle_timeout_value": {
                                                            "type": "int",
                                                        },
                                                        "limit_threshold": {
                                                            "type": "int",
                                                        },
                                                        "maximum": {
                                                            "type": "int",
                                                        },
                                                        "teardown": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "resolve_vpn": {
                                                    "type": "bool",
                                                },
                                                "rib": {
                                                    "choices": ["inet.3"],
                                                    "type": "str",
                                                },
                                                "ribgroup_name": {
                                                    "type": "str",
                                                },
                                                "route_refresh_priority_expedited": {
                                                    "type": "bool",
                                                },
                                                "route_refresh_priority_priority": {
                                                    "type": "int",
                                                },
                                                "secondary_independent_resolution": {
                                                    "type": "bool",
                                                },
                                                "set": {"type": "bool"},
                                                "strip_nexthop": {
                                                    "type": "bool",
                                                },
                                                "topology": {
                                                    "elements": "dict",
                                                    "options": {
                                                        "community": {
                                                            "elements": "str",
                                                            "type": "list",
                                                        },
                                                        "name": {
                                                            "type": "str",
                                                        },
                                                    },
                                                    "type": "list",
                                                },
                                                "traffic_statistics": {
                                                    "options": {
                                                        "file": {
                                                            "options": {
                                                                "filename": {
                                                                    "type": "str",
                                                                },
                                                                "files": {
                                                                    "type": "int",
                                                                },
                                                                "no_world_readable": {
                                                                    "type": "bool",
                                                                },
                                                                "size": {
                                                                    "type": "int",
                                                                },
                                                                "world_readable": {
                                                                    "type": "bool",
                                                                },
                                                            },
                                                            "type": "dict",
                                                        },
                                                        "interval": {
                                                            "type": "int",
                                                        },
                                                        "labeled_path": {
                                                            "type": "bool",
                                                        },
                                                        "set": {
                                                            "type": "bool",
                                                        },
                                                    },
                                                    "type": "dict",
                                                },
                                                "type": {
                                                    "choices": [
                                                        "any",
                                                        "flow",
                                                        "labeled-unicast",
                                                        "multicast",
                                                        "segment-routing-te",
                                                        "unicast",
                                                        "signaling",
                                                        "auto-discovery-mspw",
                                                        "auto-discovery-only",
                                                    ],
                                                    "type": "str",
                                                },
                                                "withdraw_priority_expedited": {
                                                    "type": "bool",
                                                },
                                                "withdraw_priority_priority": {
                                                    "type": "int",
                                                },
                                            },
                                            "type": "list",
                                        },
                                        "afi": {
                                            "choices": [
                                                "evpn",
                                                "inet",
                                                "inet-mdt",
                                                "inet-mvpn",
                                                "inet-vpn",
                                                "inet6",
                                                "inet6-mvpn",
                                                "inet6-vpn",
                                                "iso-vpn",
                                                "l2vpn",
                                                "route-target",
                                                "traffic-engineering",
                                            ],
                                            "type": "str",
                                        },
                                    },
                                    "type": "list",
                                },
                                "neighbor_address": {"type": "str"},
                            },
                            "type": "list",
                        },
                    },
                    "type": "list",
                },
            },
            "type": "dict",
        },
        "running_config": {"type": "str"},
        "state": {
            "choices": [
                "merged",
                "replaced",
                "overridden",
                "deleted",
                "rendered",
                "gathered",
                "parsed",
            ],
            "default": "merged",
            "type": "str",
        },
    }  # pylint: disable=C0301
