Skip to content

Commit

Permalink
#143: Begin hyperglass-agent deprecation
Browse files Browse the repository at this point in the history
  • Loading branch information
thatmattlove committed May 30, 2021
1 parent 4a37fba commit 6c5839b
Show file tree
Hide file tree
Showing 8 changed files with 133 additions and 107 deletions.
8 changes: 4 additions & 4 deletions docs/docs/agent/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
:::
8 changes: 8 additions & 0 deletions docs/docs/agent/parameters.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.
:::

<div class="table--full-width" />

## Configuration File
Expand Down Expand Up @@ -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.
:::
6 changes: 5 additions & 1 deletion docs/docs/agent/setup.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.
:::

Expand Down
186 changes: 96 additions & 90 deletions docs/docs/platforms.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,104 +5,110 @@ sidebar_label: Supported Platforms
description: Platforms supported by hyperglass
---

## HTTP
import Native from "../src/components/Native";

<div class="table--full-width" />

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.
## SSH

:::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.
:::
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 |
| :-------- | :----- |
| BIRD | `bird` |
| FRRouting | `frr` |
Platforms in <Native>green</Native> 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).

## SSH
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.

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 | Default Driver |
| :--------------------------------- | :-------------------- | :------------- |
| A10 | `a10` | Netmiko |
| Accedian | `accedian` | Netmiko |
| Alcatel AOS | `alcatel_aos` | Netmiko |
| Alcatel SROS | `alcatel_sros` | Netmiko |
| Apresia Systems AEOS | `apresia_aeos` | Netmiko |
| <Native>Arista vEOS</Native> | `arista_eos` | Netmiko |
| Aruba | `aruba_os` | Netmiko |
| Avaya ERS | `avaya_ers` | Netmiko |
| Avaya VSP | `avaya_vsp` | Netmiko |
| <Native>BIRD</Native> | `bird` | Scrapli |
| Calix B6 | `calix_b6` | Netmiko |
| Check Point GAiA | `checkpoint_gaia` | Netmiko |
| Ciena SAOS | `ciena_saos` | Netmiko |
| Cisco ASA | `cisco_asa` | Netmiko |
| <Native>Cisco IOS</Native> | `cisco_ios` | Scrapli |
| <Native>Cisco NX-OS</Native> | `cisco_nxos` | Scrapli |
| Cisco SG-300 | `cisco_s300` | Netmiko |
| <Native>Cisco IOS-XE</Native> | `cisco_xe` | Scrapli |
| <Native>Cisco IOS-XR</Native> | `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 |
| <Native>FRRouting</Native> | `frr` | Scrapli |
| Generic Terminal Server | `generic_termserver` | Netmiko |
| HPE/3COM Comware | `hp_comware` | Netmiko |
| HPE ProCurve | `hp_procurve` | Netmiko |
| <Native>Huawei</Native> | `huawei` | Netmiko |
| Huawei VRPv8 | `huawei_vrpv8` | Netmiko |
| IPInfusion OcNOS | `ipinfusion_ocnos` | Netmiko |
| <Native>Juniper</Native> | `juniper` | Scrapli |
| <Native>Juniper JunOS</Native> | `juniper_junos` | Scrapli |
| Juniper ScreenOS | `juniper_screenos` | Netmiko |
| Keymile | `keymile` | Netmiko |
| Keymile NOS | `keymile_nos` | Netmiko |
| Linux | `linux` | Netmiko |
| <Native>Mikrotik RouterOS</Native> | `mikrotik_routeros` | Netmiko |
| <Native>Mikrotik SwitchOS</Native> | `mikrotik_switchos` | Netmiko |
| Mellanox | `mellanox` | Netmiko |
| Mellanox MLNX-OS | `mellanox_mlnxos` | Netmiko |
| MRV LX | `mrv_lx` | Netmiko |
| MRV Optiswitch | `mrv_optiswitch` | Netmiko |
| <Native>Nokia SROS</Native> | `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 |
| <Native>TNSR</Native> | `tnsr` | Scrapli |
| Ubuiquiti EdgeRouter | `ubiquiti_edge` | Netmiko |
| Ubuiquiti EdgeSwitch | `ubiquiti_edgeswitch` | Netmiko |
| Vyatta VyOS | `vyatta_vyos` | Netmiko |
| <Native>VyOS</Native> | `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 |
| :------------------------ | :-------------------- |
| 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` |
| Name | Key |
| :-------- | :------------ |
| BIRD | `bird_legacy` |
| FRRouting | `frr_legacy` |

## Caveats

Expand Down
7 changes: 7 additions & 0 deletions docs/src/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
10 changes: 5 additions & 5 deletions hyperglass/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
"danger": "red",
}

TRANSPORT_REST = ("frr", "bird")
TRANSPORT_REST = ("frr_legacy", "bird_legacy")

SCRAPE_HELPERS = {
"arista": "arista_eos",
Expand All @@ -76,14 +76,14 @@
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",
}
7 changes: 4 additions & 3 deletions hyperglass/execution/drivers/ssh_scrapli.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,20 @@

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,
}

driver_global_args = {
# Per-NOS driver keyword arguments
"tnsr": {"comms_prompt_pattern": r"\S+\s\S+[\#\>]"},
"frr": {"comms_ansi": True},
"bird": {"comms_ansi": True},
}


Expand Down Expand Up @@ -112,7 +114,6 @@ async def collect(self, host: str = None, port: int = None) -> Sequence:
driver.logger = log.bind(
logger_name=f"scrapli.{driver.host}:{driver.port}-driver"
)

try:
responses = ()
async with driver as connection:
Expand Down
8 changes: 4 additions & 4 deletions hyperglass/models/commands/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@

_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,
Expand All @@ -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()
Expand Down

0 comments on commit 6c5839b

Please sign in to comment.