2020-05-02 23:05:17 -07:00
|
|
|
"""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
|
2020-10-05 12:07:34 -07:00
|
|
|
from .vyos import VyosCommands
|
2021-09-10 23:13:27 -07:00
|
|
|
from ..main import HyperglassModel
|
2020-10-05 12:07:34 -07:00
|
|
|
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
|
2020-10-05 12:07:34 -07:00
|
|
|
from .cisco_nxos import CiscoNXOSCommands
|
2021-01-18 14:06:03 -07:00
|
|
|
from .nokia_sros import NokiaSROSCommands
|
2020-10-05 12:07:34 -07:00
|
|
|
from .mikrotik_routeros import MikrotikRouterOS
|
|
|
|
|
from .mikrotik_switchos import MikrotikSwitchOS
|
2020-05-02 23:05:17 -07:00
|
|
|
|
2021-09-13 10:00:21 -07:00
|
|
|
_DEVICE_TYPE_MAP = {
|
2021-02-09 22:31:55 -07:00
|
|
|
"arista_eos": AristaEOSCommands,
|
2021-05-30 15:46:30 -07:00
|
|
|
"bird": BIRDCommands,
|
2020-05-02 23:05:17 -07:00
|
|
|
"cisco_ios": CiscoIOSCommands,
|
|
|
|
|
"cisco_nxos": CiscoNXOSCommands,
|
2020-10-18 12:15:13 -07:00
|
|
|
"cisco_xr": CiscoXRCommands,
|
2021-05-30 15:46:30 -07:00
|
|
|
"frr": FRRCommands,
|
2020-05-02 23:05:17 -07:00
|
|
|
"huawei": HuaweiCommands,
|
2020-10-18 12:15:13 -07:00
|
|
|
"juniper": JuniperCommands,
|
2020-10-05 12:07:34 -07:00
|
|
|
"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,
|
2020-05-02 23:05:17 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2021-09-10 23:13:27 -07:00
|
|
|
class Commands(HyperglassModel, extra="allow", validate_all=False):
|
2020-05-02 23:05:17 -07:00
|
|
|
"""Base class for command definitions."""
|
|
|
|
|
|
2021-02-09 22:31:55 -07:00
|
|
|
arista_eos: CommandGroup = AristaEOSCommands()
|
2021-05-30 15:46:30 -07:00
|
|
|
bird: CommandGroup = BIRDCommands()
|
2020-05-02 23:05:17 -07:00
|
|
|
cisco_ios: CommandGroup = CiscoIOSCommands()
|
|
|
|
|
cisco_nxos: CommandGroup = CiscoNXOSCommands()
|
2021-02-06 00:19:29 -07:00
|
|
|
cisco_xr: CommandGroup = CiscoXRCommands()
|
2021-05-30 15:46:30 -07:00
|
|
|
frr: CommandGroup = FRRCommands()
|
2020-05-02 23:05:17 -07:00
|
|
|
huawei: CommandGroup = HuaweiCommands()
|
2021-02-06 00:19:29 -07:00
|
|
|
juniper: CommandGroup = JuniperCommands()
|
2020-10-05 12:07:34 -07:00
|
|
|
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()
|
2020-05-02 23:05:17 -07:00
|
|
|
|
|
|
|
|
@classmethod
|
2020-07-14 00:15:41 -07:00
|
|
|
def import_params(cls, **input_params):
|
2021-09-13 10:00:21 -07:00
|
|
|
"""Import loaded YAML, initialize per-command definitions."""
|
2020-05-02 23:05:17 -07:00
|
|
|
obj = Commands()
|
2021-09-16 22:04:15 -07:00
|
|
|
for platform, cmds in input_params.items():
|
|
|
|
|
cmd_set = _DEVICE_TYPE_MAP.get(platform, CommandGroup)
|
2021-09-13 10:00:21 -07:00
|
|
|
cmds = cmd_set(**cmds)
|
2021-09-16 22:04:15 -07:00
|
|
|
setattr(obj, platform, cmds)
|
2020-05-02 23:05:17 -07:00
|
|
|
return obj
|