From 42dbeb80b537fdd9e4f5660f8007fe2f08202f25 Mon Sep 17 00:00:00 2001 From: Pau Nadeu Rabat Date: Mon, 18 Jan 2021 20:38:51 +0100 Subject: [PATCH] Add support for Nokia SR OS --- hyperglass/models/commands/__init__.py | 3 ++ hyperglass/models/commands/nokia_sros.py | 50 ++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 hyperglass/models/commands/nokia_sros.py diff --git a/hyperglass/models/commands/__init__.py b/hyperglass/models/commands/__init__.py index 7bf4875..efbf4ef 100644 --- a/hyperglass/models/commands/__init__.py +++ b/hyperglass/models/commands/__init__.py @@ -13,6 +13,7 @@ from .cisco_ios import CiscoIOSCommands from .cisco_nxos import CiscoNXOSCommands from .mikrotik_routeros import MikrotikRouterOS from .mikrotik_switchos import MikrotikSwitchOS +from .nokia_sros import NokiaSROSCommands _NOS_MAP = { "arista": AristaCommands, @@ -25,6 +26,7 @@ _NOS_MAP = { "mikrotik_switchos": MikrotikSwitchOS, "tnsr": TNSRCommands, "vyos": VyosCommands, + "nokia_sros": NokiaSROSCommands, } @@ -41,6 +43,7 @@ class Commands(HyperglassModelExtra): mikrotik_switchos: CommandGroup = MikrotikSwitchOS() tnsr: CommandGroup = TNSRCommands() vyos: CommandGroup = VyosCommands() + nokia_sros: CommandGroup = NokiaSROSCommands() @classmethod def import_params(cls, **input_params): diff --git a/hyperglass/models/commands/nokia_sros.py b/hyperglass/models/commands/nokia_sros.py new file mode 100644 index 0000000..5cc7f4e --- /dev/null +++ b/hyperglass/models/commands/nokia_sros.py @@ -0,0 +1,50 @@ +"""Nokia SR-OS Command Model.""" + +# Third Party +from pydantic import StrictStr + +# Local +from .common import CommandSet, CommandGroup + + +class _IPv4(CommandSet): + """Default commands for ipv4 commands.""" + + bgp_community: StrictStr = "/show router {vrf} bgp routes community {target}" + bgp_aspath: StrictStr = '/show router {vrf} bgp routes aspath-regex {target}' + bgp_route: StrictStr = "/show router {vrf} bgp routes {target} ipv4 hunt" + ping: StrictStr = "/ping {target} router-instance {vrf} source-address {source}" + traceroute: StrictStr = "traceroute: /traceroute {target} router-instance {vrf} source-address {source} wait 2 seconds" + + +class _IPv6(CommandSet): + """Default commands for ipv6 commands.""" + bgp_community: StrictStr = "/show router {vrf} bgp routes community {target}" + bgp_aspath: StrictStr = '/show router {vrf} bgp routes aspath-regex {target}' + bgp_route: StrictStr = "/show router {vrf} bgp routes {target} ipv6 hunt" + ping: StrictStr = "/ping {target} router-instance {vrf} source-address {source}" + traceroute: StrictStr = "traceroute: /traceroute {target} router-instance {vrf} source-address {source} wait 2 seconds" + +class _VPNIPv4(CommandSet): + """Default commands for dual afi commands.""" + bgp_community: StrictStr = "/show router {vrf} bgp routes community {target}" + bgp_aspath: StrictStr = '/show router {vrf} bgp routes aspath-regex {target}' + bgp_route: StrictStr = "/show router {vrf} bgp routes {target} vpn-ipv4 hunt" + ping: StrictStr = "/ping {target} router-instance {vrf} source-address {source}" + traceroute: StrictStr = "traceroute: /traceroute {target} router-instance {vrf} source-address {source} wait 2 seconds" + +class _VPNIPv6(CommandSet): + """Default commands for dual afi commands.""" + bgp_community: StrictStr = "/show router {vrf} bgp routes community {target}" + bgp_aspath: StrictStr = '/show router {vrf} bgp routes aspath-regex {target}' + bgp_route: StrictStr = "/show router {vrf} bgp routes {target} vpn-ipv6 hunt" + ping: StrictStr = "/ping {target} router-instance {vrf} source-address {source}" + traceroute: StrictStr = "traceroute: /traceroute {target} router-instance {vrf} source-address {source} wait 2 seconds" + +class NokiaSROSCommands(CommandGroup): + """Validation model for default nokia_sros commands.""" + + ipv4_default: _IPv4 = _IPv4() + ipv6_default: _IPv6 = _IPv6() + ipv4_vpn: _VPNIPv4 = _VPNIPv4() + ipv6_vpn: _VPNIPv6 = _VPNIPv6()