diff --git a/docs/docs/agent/installation.mdx b/docs/docs/agent/installation.mdx
index 24c496b..22cafa9 100644
--- a/docs/docs/agent/installation.mdx
+++ b/docs/docs/agent/installation.mdx
@@ -9,8 +9,8 @@ description: Install hyperglass-agent on your system
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
-:::important In Progress
-Documentation for [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is in progress!
+:::caution Deprecation Warning
+[hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/checktheroads/hyperglass/issues/143) and [here](platforms.mdx) for more detail.
:::
## Installation
@@ -76,6 +76,6 @@ Now that Python 3.6+ is installed, you can install the hyperglass agent:
$ pip3 install hyperglass-agent
```
-:::important More coming soon
-Documentation for [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is in progress!
+:::caution Deprecation Warning
+[hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/checktheroads/hyperglass/issues/143) and [here](platforms.mdx) for more detail.
:::
diff --git a/docs/docs/agent/parameters.mdx b/docs/docs/agent/parameters.mdx
index bab4df5..ce6bdc5 100644
--- a/docs/docs/agent/parameters.mdx
+++ b/docs/docs/agent/parameters.mdx
@@ -9,6 +9,10 @@ description: hyperglass-agent configuration parameters.
import M from "../../src/components/MiniNote";
import PL from "../../src/components/PageLink";
+:::caution Deprecation Warning
+[hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/checktheroads/hyperglass/issues/143) and [here](platforms.mdx) for more detail.
+:::
+
## Configuration File
@@ -62,3 +66,7 @@ By default, hyperglass-agent writes all log messages to a log file located at `/
| `directory` | FilePath | `/tmp/` | Directory at which to write the log file `hyperglass-agent.log`. Use `false` to disable file logging. |
| `format` | String | `'text'` | `'text'` for plain text non-structured logging, `'json'` for JSON structured logging. If JSON is enabled, the log file name will be `hyperglass-agent.log.json` |
| `max_size` | String | `'50MB'` | Maximum log file size before old logs are overwritten. |
+
+:::caution Deprecation Warning
+[hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/checktheroads/hyperglass/issues/143) and [here](platforms.mdx) for more detail.
+:::
diff --git a/docs/docs/agent/setup.mdx b/docs/docs/agent/setup.mdx
index 28f12ef..f079c51 100644
--- a/docs/docs/agent/setup.mdx
+++ b/docs/docs/agent/setup.mdx
@@ -8,7 +8,11 @@ description: Configure hyperglass-agent
import M from "../../src/components/MiniNote";
-:::caution Time & NTP
+:::caution Deprecation Warning
+[hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/checktheroads/hyperglass/issues/143) and [here](platforms.mdx) for more detail.
+:::
+
+:::important Time & NTP
Before you get too far, check to make sure your hyperglass server and hyperglass-agent system are both properly synchronized with an NTP server. During the setup process and on every interaction, hyperglass and hyperglass-agent exchange [JWT](https://jwt.io/) tokens with a relatively short window (**60 seconds, by default**) in which to validate the payload. If the system clock on either system is askew by too much, this exchange can fail.
:::
diff --git a/docs/docs/platforms.mdx b/docs/docs/platforms.mdx
index 145f0ac..8038eee 100644
--- a/docs/docs/platforms.mdx
+++ b/docs/docs/platforms.mdx
@@ -5,104 +5,110 @@ sidebar_label: Supported Platforms
description: Platforms supported by hyperglass
---
-## HTTP
+import Native from "../src/components/Native";
-The following platforms use [hyperglass-agent](agent/installation.mdx) for connection handling. When configuring the `nos` property of a device, use the value in the **Key** column.
-
-:::caution hyperglass agent is being deprecated
-While hyperglass-agent was a cool idea, maintaining the two codebases and protocol sets has proven cumbersome, with very little benefit. As of **v1.0.0-beta.76**, `frr_ssh` and `bird_ssh` are available for use as replacements.
-:::
-
-| Name | Key |
-| :-------- | :----- |
-| BIRD | `bird` |
-| FRRouting | `frr` |
-
## SSH
The following platforms use [Netmiko](https://github.com/ktbyers/netmiko) or [Scrapli](https://github.com/carlmontanari/scrapli) for connection handling. When configuring the `nos` property of a device, use the value in the **Key** column.
-| Name | Key |
-| :------------------------ | :-------------------- |
-| A10 | `a10` |
-| Accedian | `accedian` |
-| Alcatel AOS | `alcatel_aos` |
-| Alcatel SROS | `alcatel_sros` |
-| Apresia Systems AEOS | `apresia_aeos` |
-| Arista vEOS | `arista_eos` |
-| Aruba | `aruba_os` |
-| Avaya ERS | `avaya_ers` |
-| Avaya VSP | `avaya_vsp` |
-| BIRD | `bird_ssh` |
-| Calix B6 | `calix_b6` |
-| Check Point GAiA | `checkpoint_gaia` |
-| Ciena SAOS | `ciena_saos` |
-| Cisco ASA | `cisco_asa` |
-| Cisco IOS | `cisco_ios` |
-| Cisco NX-OS | `cisco_nxos` |
-| Cisco SG-300 | `cisco_s300` |
-| Cisco IOS-XE | `cisco_xe` |
-| Cisco IOS-XR | `cisco_xr` |
-| Citrix Netscaler | `netscaler` |
-| CloudGenix ION | `cloudgenix_ion` |
-| Coriant | `coriant` |
-| Dell OS6 | `dell_os6` |
-| Dell OS9 | `dell_os9` |
-| Dell OS10 | `dell_os10` |
-| Dell PowerConnect | `dell_powerconnect` |
-| Endace | `endace` |
-| Eltex | `eltex` |
-| Eltex ESR | `eltex_esr` |
-| Enterasys | `enterasys` |
-| Extreme | `extreme` |
-| Extreme ERS | `extreme_ers` |
-| Extreme EXOS | `extreme_exos` |
-| Extreme/Brocade NetIron | `extreme_netiron` |
-| Extreme NOS | `extreme_nos` |
-| Extreme/Brocade SLX | `extreme_slx` |
-| Extreme/Brocade VDX | `extreme_vdx` |
-| Extreme VSP | `extreme_vsp` |
-| Extreme Wing | `extreme_wing` |
-| F5 LTM | `f5_ltm` |
-| F5 TMSH | `f5_tmsh` |
-| F5 Linux | `f5_linux` |
-| Flex VNF | `flexvnf` |
-| Fortinet | `fortinet` |
-| FRRouting | `frr_ssh` |
-| Generic Terminal Server | `generic_termserver` |
-| HPE/3COM Comware | `hp_comware` |
-| HPE ProCurve | `hp_procurve` |
-| Huawei | `huawei` |
-| Huawei VRPv8 | `huawei_vrpv8` |
-| IPInfusion OcNOS | `ipinfusion_ocnos` |
-| Juniper | `juniper` |
-| Juniper JunOS | `juniper_junos` |
-| Juniper ScreenOS | `juniper_screenos` |
-| Keymile | `keymile` |
-| Keymile NOS | `keymile_nos` |
-| Linux | `linux` |
-| Mikrotik RouterOS | `mikrotik_routeros` |
-| Mikrotik SwitchOS | `mikrotik_switchos` |
-| Mellanox | `mellanox` |
-| Mellanox MLNX-OS | `mellanox_mlnxos` |
-| MRV LX | `mrv_lx` |
-| MRV Optiswitch | `mrv_optiswitch` |
-| Nokia SROS | `nokia_sros` |
-| OneAccess OneOS | `oneaccess_oneos` |
-| OVS Linux | `ovs_linux` |
-| Palo Alto Networks PAN-OS | `paloalto_panos` |
-| Pluribus | `pluribus` |
-| Quanta Mesh | `quanta_mesh` |
-| RAD ETX | `rad_etx` |
-| Ruckus/Brocade FastIron | `ruckus_fastiron` |
-| Ruijie OS | `ruijie_os` |
-| TNSR | `tnsr` |
-| Ubuiquiti EdgeRouter | `ubiquiti_edge` |
-| Ubuiquiti EdgeSwitch | `ubiquiti_edgeswitch` |
-| Vyatta VyOS | `vyatta_vyos` |
-| VyOS | `vyos` |
+Platforms in green are natively supported, which means hyperglass has predefined commands built in. Other platforms should also work, you'll just need to [add a custom command profile](commands.mdx).
+
+If needed, for troubleshooting purposes or otherwise, the driver for a given device [can be overridden](adding-devices#all-device-paramters) with the `driver` parameter. Generally, Netmiko is more stable, supports more platforms, but is slower; while Scrapli can be less reliable, supports fewer platforms, but is significantly faster.
+
+| Name | Key | Default Driver |
+| :--------------------------------- | :-------------------- | :------------- |
+| A10 | `a10` | Netmiko |
+| Accedian | `accedian` | Netmiko |
+| Alcatel AOS | `alcatel_aos` | Netmiko |
+| Alcatel SROS | `alcatel_sros` | Netmiko |
+| Apresia Systems AEOS | `apresia_aeos` | Netmiko |
+| Arista vEOS | `arista_eos` | Netmiko |
+| Aruba | `aruba_os` | Netmiko |
+| Avaya ERS | `avaya_ers` | Netmiko |
+| Avaya VSP | `avaya_vsp` | Netmiko |
+| BIRD | `bird` | Scrapli |
+| Calix B6 | `calix_b6` | Netmiko |
+| Check Point GAiA | `checkpoint_gaia` | Netmiko |
+| Ciena SAOS | `ciena_saos` | Netmiko |
+| Cisco ASA | `cisco_asa` | Netmiko |
+| Cisco IOS | `cisco_ios` | Scrapli |
+| Cisco NX-OS | `cisco_nxos` | Scrapli |
+| Cisco SG-300 | `cisco_s300` | Netmiko |
+| Cisco IOS-XE | `cisco_xe` | Scrapli |
+| Cisco IOS-XR | `cisco_xr` | Scrapli |
+| Citrix Netscaler | `netscaler` | Netmiko |
+| CloudGenix ION | `cloudgenix_ion` | Netmiko |
+| Coriant | `coriant` | Netmiko |
+| Dell OS6 | `dell_os6` | Netmiko |
+| Dell OS9 | `dell_os9` | Netmiko |
+| Dell OS10 | `dell_os10` | Netmiko |
+| Dell PowerConnect | `dell_powerconnect` | Netmiko |
+| Endace | `endace` | Netmiko |
+| Eltex | `eltex` | Netmiko |
+| Eltex ESR | `eltex_esr` | Netmiko |
+| Enterasys | `enterasys` | Netmiko |
+| Extreme | `extreme` | Netmiko |
+| Extreme ERS | `extreme_ers` | Netmiko |
+| Extreme EXOS | `extreme_exos` | Netmiko |
+| Extreme/Brocade NetIron | `extreme_netiron` | Netmiko |
+| Extreme NOS | `extreme_nos` | Netmiko |
+| Extreme/Brocade SLX | `extreme_slx` | Netmiko |
+| Extreme/Brocade VDX | `extreme_vdx` | Netmiko |
+| Extreme VSP | `extreme_vsp` | Netmiko |
+| Extreme Wing | `extreme_wing` | Netmiko |
+| F5 LTM | `f5_ltm` | Netmiko |
+| F5 TMSH | `f5_tmsh` | Netmiko |
+| F5 Linux | `f5_linux` | Netmiko |
+| Flex VNF | `flexvnf` | Netmiko |
+| Fortinet | `fortinet` | Netmiko |
+| FRRouting | `frr` | Scrapli |
+| Generic Terminal Server | `generic_termserver` | Netmiko |
+| HPE/3COM Comware | `hp_comware` | Netmiko |
+| HPE ProCurve | `hp_procurve` | Netmiko |
+| Huawei | `huawei` | Netmiko |
+| Huawei VRPv8 | `huawei_vrpv8` | Netmiko |
+| IPInfusion OcNOS | `ipinfusion_ocnos` | Netmiko |
+| Juniper | `juniper` | Scrapli |
+| Juniper JunOS | `juniper_junos` | Scrapli |
+| Juniper ScreenOS | `juniper_screenos` | Netmiko |
+| Keymile | `keymile` | Netmiko |
+| Keymile NOS | `keymile_nos` | Netmiko |
+| Linux | `linux` | Netmiko |
+| Mikrotik RouterOS | `mikrotik_routeros` | Netmiko |
+| Mikrotik SwitchOS | `mikrotik_switchos` | Netmiko |
+| Mellanox | `mellanox` | Netmiko |
+| Mellanox MLNX-OS | `mellanox_mlnxos` | Netmiko |
+| MRV LX | `mrv_lx` | Netmiko |
+| MRV Optiswitch | `mrv_optiswitch` | Netmiko |
+| Nokia SROS | `nokia_sros` | Netmiko |
+| OneAccess OneOS | `oneaccess_oneos` | Netmiko |
+| OVS Linux | `ovs_linux` | Netmiko |
+| Palo Alto Networks PAN-OS | `paloalto_panos` | Netmiko |
+| Pluribus | `pluribus` | Netmiko |
+| Quanta Mesh | `quanta_mesh` | Netmiko |
+| RAD ETX | `rad_etx` | Netmiko |
+| Ruckus/Brocade FastIron | `ruckus_fastiron` | Netmiko |
+| Ruijie OS | `ruijie_os` | Netmiko |
+| TNSR | `tnsr` | Scrapli |
+| Ubuiquiti EdgeRouter | `ubiquiti_edge` | Netmiko |
+| Ubuiquiti EdgeSwitch | `ubiquiti_edgeswitch` | Netmiko |
+| Vyatta VyOS | `vyatta_vyos` | Netmiko |
+| VyOS | `vyos` | Netmiko |
+
+## HTTP
+
+The following platforms use [hyperglass-agent](agent/installation.mdx) for connection handling. When configuring the `nos` property of a device, use the value in the **Key** column.
+
+:::caution hyperglass agent is being deprecated
+While hyperglass-agent was a cool idea, maintaining the two codebases and protocol sets has proven cumbersome, with very little benefit. As of **v1.0.0**, `frr_legacy` and `bird_legacy` are temporarily available to mimic previous behavior with hyperglass-agent.
+:::
+
+| Name | Key |
+| :-------- | :------------ |
+| BIRD | `bird_legacy` |
+| FRRouting | `frr_legacy` |
## Caveats
diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css
index b55689c..d937196 100755
--- a/docs/src/css/custom.css
+++ b/docs/src/css/custom.css
@@ -24,6 +24,13 @@
--ifm-color-primary-light: #ff807e;
--ifm-color-primary-lighter: #ff918f;
--ifm-color-primary-lightest: #ffc4c3;
+ --ifm-color-success: #35b246;
+ --ifm-color-success-dark: #30a03f;
+ --ifm-color-success-darker: #2d973b;
+ --ifm-color-success-darkest: #257d31;
+ --ifm-color-success-light: #3ac44d;
+ --ifm-color-success-lighter: #43c755;
+ --ifm-color-success-lightest: #5dcf6d;
--ifm-code-font-size: 95%;
--ifm-font-family-base: "Nunito", system-ui, -apple-system, Segoe UI, Roboto,
Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI",
diff --git a/hyperglass/constants.py b/hyperglass/constants.py
index 072cc68..e8a3636 100644
--- a/hyperglass/constants.py
+++ b/hyperglass/constants.py
@@ -62,7 +62,7 @@ FUNC_COLOR_MAP = {
"danger": "red",
}
-TRANSPORT_REST = ("frr", "bird")
+TRANSPORT_REST = ("frr_legacy", "bird_legacy")
SCRAPE_HELPERS = {
"arista": "arista_eos",
@@ -76,14 +76,14 @@ SCRAPE_HELPERS = {
DRIVER_MAP = {
# TODO: Troubleshoot Arista with Scrapli, broken after upgrading to 2021.1.30.
# "arista_eos": "scrapli", # noqa: E800
- "bird_ssh": "scrapli",
+ "bird": "scrapli",
"cisco_ios": "scrapli",
"cisco_xe": "scrapli",
"cisco_xr": "scrapli",
"cisco_nxos": "scrapli",
"juniper": "scrapli",
"tnsr": "scrapli",
- "frr_ssh": "scrapli",
- "frr": "hyperglass_agent",
- "bird": "hyperglass_agent",
+ "frr": "scrapli",
+ "frr_legacy": "hyperglass_agent",
+ "bird_legacy": "hyperglass_agent",
}
diff --git a/hyperglass/execution/drivers/ssh_scrapli.py b/hyperglass/execution/drivers/ssh_scrapli.py
index 8a58402..935dbeb 100644
--- a/hyperglass/execution/drivers/ssh_scrapli.py
+++ b/hyperglass/execution/drivers/ssh_scrapli.py
@@ -37,11 +37,11 @@ from .ssh import SSHConnection
SCRAPLI_DRIVER_MAP = {
"arista_eos": AsyncEOSDriver,
- "bird_ssh": AsyncGenericDriver,
+ "bird": AsyncGenericDriver,
"cisco_ios": AsyncIOSXEDriver,
"cisco_nxos": AsyncNXOSDriver,
"cisco_xr": AsyncIOSXRDriver,
- "frr_ssh": AsyncGenericDriver,
+ "frr": AsyncGenericDriver,
"juniper": AsyncJunosDriver,
"tnsr": AsyncGenericDriver,
}
@@ -49,6 +49,8 @@ SCRAPLI_DRIVER_MAP = {
driver_global_args = {
# Per-NOS driver keyword arguments
"tnsr": {"comms_prompt_pattern": r"\S+\s\S+[\#\>]"},
+ "frr": {"comms_ansi": True},
+ "bird": {"comms_ansi": True},
}
@@ -112,7 +114,6 @@ class ScrapliConnection(SSHConnection):
driver.logger = log.bind(
logger_name=f"scrapli.{driver.host}:{driver.port}-driver"
)
-
try:
responses = ()
async with driver as connection:
diff --git a/hyperglass/models/commands/__init__.py b/hyperglass/models/commands/__init__.py
index 5f3f0be..7a49b0b 100644
--- a/hyperglass/models/commands/__init__.py
+++ b/hyperglass/models/commands/__init__.py
@@ -19,11 +19,11 @@ from .mikrotik_switchos import MikrotikSwitchOS
_NOS_MAP = {
"arista_eos": AristaEOSCommands,
- "bird_ssh": BIRDCommands,
+ "bird": BIRDCommands,
"cisco_ios": CiscoIOSCommands,
"cisco_nxos": CiscoNXOSCommands,
"cisco_xr": CiscoXRCommands,
- "frr_ssh": FRRCommands,
+ "frr": FRRCommands,
"huawei": HuaweiCommands,
"juniper": JuniperCommands,
"mikrotik_routeros": MikrotikRouterOS,
@@ -38,11 +38,11 @@ class Commands(HyperglassModelExtra):
"""Base class for command definitions."""
arista_eos: CommandGroup = AristaEOSCommands()
- bird_ssh: CommandGroup = BIRDCommands()
+ bird: CommandGroup = BIRDCommands()
cisco_ios: CommandGroup = CiscoIOSCommands()
cisco_nxos: CommandGroup = CiscoNXOSCommands()
cisco_xr: CommandGroup = CiscoXRCommands()
- frr_ssh: CommandGroup = FRRCommands()
+ frr: CommandGroup = FRRCommands()
huawei: CommandGroup = HuaweiCommands()
juniper: CommandGroup = JuniperCommands()
mikrotik_routeros: CommandGroup = MikrotikRouterOS()