1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00

77 lines
2.4 KiB
Python
Raw Normal View History

"""Validate command configuration variables."""
2020-10-11 13:14:57 -07:00
# Local
2021-02-06 00:19:29 -07:00
from .frr import FRRCommands
2021-02-06 00:59:16 -07:00
from .bird import BIRDCommands
2020-10-18 12:15:13 -07:00
from .tnsr import TNSRCommands
from .vyos import VyosCommands
from ..main import HyperglassModelExtra
from .common import CommandGroup
from .huawei import HuaweiCommands
from .juniper import JuniperCommands
from .cisco_xr import CiscoXRCommands
from .cisco_ios import CiscoIOSCommands
2021-02-09 22:31:55 -07:00
from .arista_eos import AristaEOSCommands
from .cisco_nxos import CiscoNXOSCommands
2021-01-18 14:06:03 -07:00
from .nokia_sros import NokiaSROSCommands
from .mikrotik_routeros import MikrotikRouterOS
from .mikrotik_switchos import MikrotikSwitchOS
_NOS_MAP = {
2021-02-09 22:31:55 -07:00
"arista_eos": AristaEOSCommands,
2021-02-06 00:19:29 -07:00
"bird_ssh": BIRDCommands,
"cisco_ios": CiscoIOSCommands,
"cisco_nxos": CiscoNXOSCommands,
2020-10-18 12:15:13 -07:00
"cisco_xr": CiscoXRCommands,
2021-02-06 00:19:29 -07:00
"frr_ssh": FRRCommands,
"huawei": HuaweiCommands,
2020-10-18 12:15:13 -07:00
"juniper": JuniperCommands,
"mikrotik_routeros": MikrotikRouterOS,
"mikrotik_switchos": MikrotikSwitchOS,
2021-01-18 14:06:03 -07:00
"nokia_sros": NokiaSROSCommands,
2020-10-18 12:15:13 -07:00
"tnsr": TNSRCommands,
2020-07-04 19:30:46 -07:00
"vyos": VyosCommands,
}
class Commands(HyperglassModelExtra):
"""Base class for command definitions."""
2021-02-09 22:31:55 -07:00
arista_eos: CommandGroup = AristaEOSCommands()
2021-02-06 00:19:29 -07:00
bird_ssh: CommandGroup = BIRDCommands()
cisco_ios: CommandGroup = CiscoIOSCommands()
cisco_nxos: CommandGroup = CiscoNXOSCommands()
2021-02-06 00:19:29 -07:00
cisco_xr: CommandGroup = CiscoXRCommands()
frr_ssh: CommandGroup = FRRCommands()
huawei: CommandGroup = HuaweiCommands()
2021-02-06 00:19:29 -07:00
juniper: CommandGroup = JuniperCommands()
mikrotik_routeros: CommandGroup = MikrotikRouterOS()
2020-10-18 12:15:13 -07:00
mikrotik_switchos: CommandGroup = MikrotikSwitchOS()
2021-01-18 14:06:03 -07:00
nokia_sros: CommandGroup = NokiaSROSCommands()
2020-10-18 12:15:13 -07:00
tnsr: CommandGroup = TNSRCommands()
2020-07-04 19:30:46 -07:00
vyos: CommandGroup = VyosCommands()
@classmethod
def import_params(cls, **input_params):
"""Import loaded YAML, initialize per-command definitions.
Dynamically set attributes for the command class.
Arguments:
input_params {dict} -- Unvalidated command definitions
Returns:
{object} -- Validated commands object
"""
obj = Commands()
for nos, cmds in input_params.items():
nos_cmd_set = _NOS_MAP.get(nos, CommandGroup)
nos_cmds = nos_cmd_set(**cmds)
setattr(obj, nos, nos_cmds)
return obj
class Config:
"""Override pydantic config."""
validate_all = False