diff --git a/CHANGELOG.md b/CHANGELOG.md index ff9f40cf..e3999a49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -# 1.0.1 - 2021-06-17 +# 1.0.3 - 2021-06-23 + +_1.0.3 is a cosmetic release to factor in code-level changes related to the repository name change from checktheroads to thatmattlove._ + +# 1.0.2 - 2021-06-18 ### Fixed -- [#150](https://github.com/checktheroads/hyperglass/issues/150): Fix handling of BIRD AS_PATH/Community targets. +- [#150](https://github.com/thatmattlove/hyperglass/issues/150): Fix handling of BIRD AS_PATH/Community targets. # 1.0.1 - 2021-06-17 @@ -21,13 +25,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - The transitionary `frr_ssh` and `bird_ssh` NOS parameters no longer exist — `frr` and `bird` can now be used for SSH-based connectivity. hyperglass-agent users must now use `frr_legacy` and `bird_legacy` until hyperglass-agent is fully deprecated. ### Fixed -- [#139](https://github.com/checktheroads/hyperglass/issues/139): Fix an issue where the API cannot be queried by device name. +- [#139](https://github.com/thatmattlove/hyperglass/issues/139): Fix an issue where the API cannot be queried by device name. ### Changed - Updated UI dependencies ### Added -- [#140](https://github.com/checktheroads/hyperglass/issues/140): Genericize links and menus so that multiple links and/or menus can be defined and fully customized. +- [#140](https://github.com/thatmattlove/hyperglass/issues/140): Genericize links and menus so that multiple links and/or menus can be defined and fully customized. # 1.0.0-beta.82 - 2021-04-22 @@ -35,13 +39,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), **NodeJS 14.15 or later is required**. See [the docs](https://hyperglass.dev/docs/getting-started) for installation instructions. ### Fixed -- [#135](https://github.com/checktheroads/hyperglass/issues/135): Fix an issue where Juniper indirect next-hops were empty. +- [#135](https://github.com/thatmattlove/hyperglass/issues/135): Fix an issue where Juniper indirect next-hops were empty. - Fix an issue where Juniper structured AS_PATH or Community queries would appear to fail if one address family (IPv4 or IPv6) had an empty response. For example, if an AS_PATH query for `.* 29414 .*` was made (which only returns IPv4 routes), the query would fail. ### Changed - Updated major Python dependencies (FastAPI, Scrapli, Netmiko, Pydantic, Uvicorn, Gunicorn, etc.) - Updated UI dependencies -- [#128](https://github.com/checktheroads/hyperglass/pull/128): Add `best` to all Juniper BGP Route queries. See [Juniper docs](https://www.juniper.net/documentation/us/en/software/junos/bgp/topics/ref/command/show-route-best.html) for more details. +- [#128](https://github.com/thatmattlove/hyperglass/pull/128): Add `best` to all Juniper BGP Route queries. See [Juniper docs](https://www.juniper.net/documentation/us/en/software/junos/bgp/topics/ref/command/show-route-best.html) for more details. ### Added - The driver for devices can now be overridden with the `driver` parameter. @@ -49,17 +53,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), # 1.0.0-beta.81 - 2021-04-10 ### Fixed -- [#124](https://github.com/checktheroads/hyperglass/issues/124): Fix an issue where networks weren't always sorted alphabetically. -- [#126](https://github.com/checktheroads/hyperglass/issues/126): Fix rendering of markdown tables. -- [#132](https://github.com/checktheroads/hyperglass/issues/132): Fix an issue where iBGP routes on Arista devices caused output parsing to fail. -- [#133](https://github.com/checktheroads/hyperglass/issues/133): Use body styles for background/foreground color, allowing the user to override the `light` and `dark` colors per the docs. +- [#124](https://github.com/thatmattlove/hyperglass/issues/124): Fix an issue where networks weren't always sorted alphabetically. +- [#126](https://github.com/thatmattlove/hyperglass/issues/126): Fix rendering of markdown tables. +- [#132](https://github.com/thatmattlove/hyperglass/issues/132): Fix an issue where iBGP routes on Arista devices caused output parsing to fail. +- [#133](https://github.com/thatmattlove/hyperglass/issues/133): Use body styles for background/foreground color, allowing the user to override the `light` and `dark` colors per the docs. - Fix an issue with select menu list style. ## 1.0.0-beta.80 - 2021-03-03 ### Fixed - Fix an issue where the UI did not properly filter and detect the correct Query VRF when only one was defined. -- [#121](https://github.com/checktheroads/hyperglass/issues/121): Fix issue with select menu styling in light mode. +- [#121](https://github.com/thatmattlove/hyperglass/issues/121): Fix issue with select menu styling in light mode. ## 1.0.0-beta.79 - 2021-02-26 @@ -92,14 +96,14 @@ Moving forward, the `name` field is only used to define the name of the VRF **as **POTENTIALLY BREAKING CHANGE**: The device `display_name` field is being deprecated, in favor of a single `name` field, which will be displayed to the end user. The `display_name` field still works, but you should migrate away from it as soon as possible. ### Fixed -- [#117](https://github.com/checktheroads/hyperglass/issues/117): Fix naming and mapping of the Arista EOS driver. `arista` and `arista_eos` will both work now. +- [#117](https://github.com/thatmattlove/hyperglass/issues/117): Fix naming and mapping of the Arista EOS driver. `arista` and `arista_eos` will both work now. ### Changed - Removed `display_name` field from device model. The `name` field will be used in the UI. If a `display_name` is defined, it will be used, for backwards compatibility. ## 1.0.0-beta.76 - 2021-02-06 -**NOTICE**: *[hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) will be deprecated soon. Use `frr_ssh` or `bird_ssh` for SSH connectivity in the meantime.* +**NOTICE**: *[hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent) will be deprecated soon. Use `frr_ssh` or `bird_ssh` for SSH connectivity in the meantime.* ### Added - FRR & BIRD may now be accessed via standard SSH using the `frr_ssh` and `bird_ssh` NOS. [See the docs](https://hyperglass.dev/docs/platforms#caveats) for important caveats. @@ -124,24 +128,24 @@ Moving forward, the `name` field is only used to define the name of the VRF **as - Updated UI dependencies. ### Fixed -- [#109](https://github.com/checktheroads/hyperglass/issues/109): Remove the custom error page, because it doesn't work and doesn't really add much. +- [#109](https://github.com/thatmattlove/hyperglass/issues/109): Remove the custom error page, because it doesn't work and doesn't really add much. ## 1.0.0-beta.73 - 2021-01-18 ### Added -- [#106](https://github.com/checktheroads/hyperglass/issues/106): Add built-in support for Nokia SR OS (thanks @paunadeu!). +- [#106](https://github.com/thatmattlove/hyperglass/issues/106): Add built-in support for Nokia SR OS (thanks @paunadeu!). ### Changed -- [#105](https://github.com/checktheroads/hyperglass/issues/105): Check NodeJS version on startup to ensure the minimum supported version is present. +- [#105](https://github.com/thatmattlove/hyperglass/issues/105): Check NodeJS version on startup to ensure the minimum supported version is present. - Update UI dependencies. ### Fixed -- [#107](https://github.com/checktheroads/hyperglass/issues/107): Fix footer menu styling so it doesn't overflow the viewport, especially on mobile. +- [#107](https://github.com/thatmattlove/hyperglass/issues/107): Fix footer menu styling so it doesn't overflow the viewport, especially on mobile. ## 1.0.0-beta.72 - 2021-01-16 ### Fixed -- [#104](https://github.com/checktheroads/hyperglass/issues/104): Handle the usage of `juniper_junos` as a NOS. `juniper_junos` will now automatically be mapped to `juniper`. +- [#104](https://github.com/thatmattlove/hyperglass/issues/104): Handle the usage of `juniper_junos` as a NOS. `juniper_junos` will now automatically be mapped to `juniper`. - Fix an issue with dual RP juniper devices and structured output, where output containing `{master}` outside of the XML output was improperly stripped out, causing a parsing failure. ### Changed @@ -159,7 +163,7 @@ Moving forward, the `name` field is only used to define the name of the VRF **as ### Fixed -- [#100](https://github.com/checktheroads/hyperglass/issues/100): Fix result panel bug where incorrect panels would open, or panels would not open at all. Resolved by accessing internal state of the `Accordion />` component via `useAccordionContext()` instead of directly changing the index prop via state. +- [#100](https://github.com/thatmattlove/hyperglass/issues/100): Fix result panel bug where incorrect panels would open, or panels would not open at all. Resolved by accessing internal state of the `Accordion />` component via `useAccordionContext()` instead of directly changing the index prop via state. ### Changed - Query results now automatically cancel when each result panel unmounts (e.g. when one clicks the back button). @@ -197,7 +201,7 @@ Moving forward, the `name` field is only used to define the name of the VRF **as ### Added -- [#72](https://github.com/checktheroads/hyperglass/issues/72): _EXPERIMENTAL_ BGP map support for devices supporting structured output (Juniper Junos, currently). +- [#72](https://github.com/thatmattlove/hyperglass/issues/72): _EXPERIMENTAL_ BGP map support for devices supporting structured output (Juniper Junos, currently). ### Fixed @@ -212,7 +216,7 @@ Moving forward, the `name` field is only used to define the name of the VRF **as ### Added -- [#87](https://github.com/checktheroads/hyperglass/issues/87): [TNSR] Support. To add a TNSR device, use the `tnsr` [NOS key](https://hyperglass.dev/docs/adding-devices#all-device-parameters). +- [#87](https://github.com/thatmattlove/hyperglass/issues/87): [TNSR] Support. To add a TNSR device, use the `tnsr` [NOS key](https://hyperglass.dev/docs/adding-devices#all-device-parameters). ### Fixed @@ -236,17 +240,17 @@ When hyperglass starts up, it will check to see if `~/hyperglass` or `/etc/hyper ### Added -- [#81](https://github.com/checktheroads/hyperglass/issues/81): Add support for SSH key authentication. See [the docs](https://hyperglass.dev/docs/adding-devices#credential) for more details. +- [#81](https://github.com/thatmattlove/hyperglass/issues/81): Add support for SSH key authentication. See [the docs](https://hyperglass.dev/docs/adding-devices#credential) for more details. ## 1.0.0-beta.60 - 2020-10-10 ### Fixed -- [#90](https://github.com/checktheroads/hyperglass/issues/90): Fix a typing error that caused ping & traceroute queries to fail for certain devices. +- [#90](https://github.com/thatmattlove/hyperglass/issues/90): Fix a typing error that caused ping & traceroute queries to fail for certain devices. ### Added -- [#82](https://github.com/checktheroads/hyperglass/issues/82): Add support for Redis password authentication. Authentication can be configured in the following manner: +- [#82](https://github.com/thatmattlove/hyperglass/issues/82): Add support for Redis password authentication. Authentication can be configured in the following manner: ```yaml # hyperglass.yaml @@ -276,7 +280,7 @@ requirepass examplepassword ### Changed -- [#79](https://github.com/checktheroads/hyperglass/issues/79): Run the UI build on startup & clarify docs. +- [#79](https://github.com/thatmattlove/hyperglass/issues/79): Run the UI build on startup & clarify docs. - Removed all f-strings from log messages. - Migrate icon library to [@meronex/icons](https://github.com/meronex/meronex-icons) for better tree-shaking. - Improve console (stdout) logging @@ -284,16 +288,16 @@ requirepass examplepassword ### Fixed -- [#74](https://github.com/checktheroads/hyperglass/issues/74): Fix UI build failures caused by `.alias.js`. -- [#75](https://github.com/checktheroads/hyperglass/issues/75): Fix whitespace stripping of query target. -- [#77](https://github.com/checktheroads/hyperglass/issues/77): Allow dashes in FQDN validation pattern. -- [#83](https://github.com/checktheroads/hyperglass/issues/83): Fix lack of support for `protocol-nh` field in Juniper XML BGP table. +- [#74](https://github.com/thatmattlove/hyperglass/issues/74): Fix UI build failures caused by `.alias.js`. +- [#75](https://github.com/thatmattlove/hyperglass/issues/75): Fix whitespace stripping of query target. +- [#77](https://github.com/thatmattlove/hyperglass/issues/77): Allow dashes in FQDN validation pattern. +- [#83](https://github.com/thatmattlove/hyperglass/issues/83): Fix lack of support for `protocol-nh` field in Juniper XML BGP table. ## 1.0.0-beta.57 - 2020-07-30 ### BREAKING CHANGE -If you use [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent), you must upgrade your version of hyperglass-agent to 0.1.6 or later. If using hyperglass-agent with SSL, this release will require you to re-generate & re-send your SSL certificates to hyperglass: +If you use [hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent), you must upgrade your version of hyperglass-agent to 0.1.6 or later. If using hyperglass-agent with SSL, this release will require you to re-generate & re-send your SSL certificates to hyperglass: ```console $ hyperglass-agent certificate @@ -316,13 +320,13 @@ $ hyperglass-agent send-certificate ### Fixed -- [#56](https://github.com/checktheroads/hyperglass/issues/56): Fix a silent Redis connection error if the Redis server was anything other than `localhost`, preventing hyperglass from starting. +- [#56](https://github.com/thatmattlove/hyperglass/issues/56): Fix a silent Redis connection error if the Redis server was anything other than `localhost`, preventing hyperglass from starting. ## 1.0.0-beta.55 - 2020-07-27 ### Changed -- Removed JS favicon build process in favor of native Python implementation ([favicons](https://github/checktheroads/favicons)) +- Removed JS favicon build process in favor of native Python implementation ([favicons](https://github/thatmattlove/favicons)) ## 1.0.0-beta.54 - 2020-07-25 @@ -334,7 +338,7 @@ $ hyperglass-agent send-certificate ### Added -- **BREAKING CHANGE**: [Scrapli](https://github.com/carlmontanari/scrapli) is now used for SSH connectivity to Cisco IOS, Cisco IOS-XE, Cisco IOS-XR, Cisco NX-OS Juniper Junos, and Arista EOS, which should improve the speed at which output is gathered from devices. _As of this release, Cisco IOS/IOS-XE and Juniper Junos have been directly tested and worked without issue. However, if you discover any anomalies with any of these operating systems, please [open an issue](https://github.com/checktheroads/hyperglass/issues)._ +- **BREAKING CHANGE**: [Scrapli](https://github.com/carlmontanari/scrapli) is now used for SSH connectivity to Cisco IOS, Cisco IOS-XE, Cisco IOS-XR, Cisco NX-OS Juniper Junos, and Arista EOS, which should improve the speed at which output is gathered from devices. _As of this release, Cisco IOS/IOS-XE and Juniper Junos have been directly tested and worked without issue. However, if you discover any anomalies with any of these operating systems, please [open an issue](https://github.com/thatmattlove/hyperglass/issues)._ ### Changed @@ -352,23 +356,23 @@ $ hyperglass-agent send-certificate - API route `/api/info`, which displays general system information such as the name of the organization and version of hyperglass. - API docs configuration parameters for the `/api/info` route. -- [#63](https://github.com/checktheroads/hyperglass/issues/63): Minimum RAM requirements. +- [#63](https://github.com/thatmattlove/hyperglass/issues/63): Minimum RAM requirements. - `hyperglass system-info` CLI command to gather system CPU, Memory, Disk, Python Version, hyperglass Version, & OS info. _Note: this information is only gathered if you run the command, and even then, is printed to the console and not otherwise shared or exported_. ### Changed - Updated docs dependencies. - Improved YAML alias & anchor docs. -- [#55](https://github.com/checktheroads/hyperglass/issues/55): Removed YAML alias & anchors from default examples to avoid confusion. +- [#55](https://github.com/thatmattlove/hyperglass/issues/55): Removed YAML alias & anchors from default examples to avoid confusion. ### Fixed - API docs logo URL now displays correctly. -- [#62](https://github.com/checktheroads/hyperglass/issues/62): Added `epel-release` to CentOS installation instructions. -- [#59](https://github.com/checktheroads/hyperglass/issues/59): Fixed copy output for Juniper devices on non-table output query types. +- [#62](https://github.com/thatmattlove/hyperglass/issues/62): Added `epel-release` to CentOS installation instructions. +- [#59](https://github.com/thatmattlove/hyperglass/issues/59): Fixed copy output for Juniper devices on non-table output query types. - [hyperglass-agent #6](https://github.com/hyperglass-agent/issues/6): Fixed hyperglass-agent documentation issues. - Improve command customization docs. -- [#61](https://github.com/checktheroads/hyperglass/issues/61): Fixed copy output for table data. Output is now a bulleted list of parsed data. +- [#61](https://github.com/thatmattlove/hyperglass/issues/61): Fixed copy output for table data. Output is now a bulleted list of parsed data. ## 1.0.0-beta.51 - 2020-07-13 @@ -379,7 +383,7 @@ $ hyperglass-agent send-certificate ### Fixed -- [#54](https://github.com/checktheroads/hyperglass/issues/54): A Junos parsing error caused routes with no communities to raise an error. +- [#54](https://github.com/thatmattlove/hyperglass/issues/54): A Junos parsing error caused routes with no communities to raise an error. - Pre-validated config files are no longer logged on startup unless debugging is enabled. ## 1.0.0-beta.50 - 2020-07-12 @@ -399,7 +403,7 @@ $ hyperglass-agent send-certificate ### Fixed -- [#54](https://github.com/checktheroads/hyperglass/issues/54): A Junos structured/table output parsing error caused routes with multiple next-hops to raise an error. +- [#54](https://github.com/thatmattlove/hyperglass/issues/54): A Junos structured/table output parsing error caused routes with multiple next-hops to raise an error. - RPKI validation no longer occurs twice (once on serialization of the output, once on validation of the API response). ## 1.0.0-beta.49 - 2020-07-05 @@ -451,7 +455,7 @@ $ hyperglass-agent send-certificate ### Added -- Support for hyperglass-agent [0.1.5](https://github.com/checktheroads/hyperglass-agent) +- Support for hyperglass-agent [0.1.5](https://github.com/thatmattlove/hyperglass-agent) ## 1.0.0-beta.45 - 2020-06-27 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cb84717d..f060ade6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -hyperglass is primarily maintained by me, [Matt Love](https://github.com/checktheroads). This is my first ever open source application, and as such, it's kind of my "baby". When I first started writing hyperglass, I knew _nothing_ about development, Python, Javascript, or Github. I was a network engineer trying to solve a problem and learn a few things while I was at it. +hyperglass is primarily maintained by me, [Matt Love](https://github.com/thatmattlove). This is my first ever open source application, and as such, it's kind of my "baby". When I first started writing hyperglass, I knew _nothing_ about development, Python, Javascript, or Github. I was a network engineer trying to solve a problem and learn a few things while I was at it. Because I've been solo-maintaining and building hyperglass since around April 2019, I've become pretty particular about things that might seem trivial to someone just trying to help out. While I **absolutely welcome development contributions**, please don't be offended if pull requests are denied, or if I request things to be done a certain way. To help understand why, here are some of the development design goals for hyperglass: diff --git a/README.md b/README.md index b86c240a..f9343408 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,11 @@ [![PyPI](https://img.shields.io/pypi/v/hyperglass?style=for-the-badge)](https://pypi.org/project/hyperglass/) ![PyPI - Downloads](https://img.shields.io/pypi/dm/hyperglass?color=%2340798C&style=for-the-badge) -[![GitHub Contributors](https://img.shields.io/github/contributors/checktheroads/hyperglass?color=40798C&style=for-the-badge)](https://github.com/checktheroads/hyperglass) +[![GitHub Contributors](https://img.shields.io/github/contributors/thatmattlove/hyperglass?color=40798C&style=for-the-badge)](https://github.com/thatmattlove/hyperglass) -[![Frontend Tests](https://img.shields.io/github/workflow/status/checktheroads/hyperglass/Frontend%20Testing?label=Frontend%20Tests&style=for-the-badge)](https://github.com/checktheroads/hyperglass/actions?query=workflow%3A%Frontend+Testing%22) -[![Backend Tests](https://img.shields.io/github/workflow/status/checktheroads/hyperglass/Backend%20Testing?label=Backend%20Tests&style=for-the-badge)](https://github.com/checktheroads/hyperglass/actions?query=workflow%3A%Backend+Testing%22) -[![Installer Tests](https://img.shields.io/github/workflow/status/checktheroads/hyperglass/Installer%20Testing?label=Installer%20Tests&style=for-the-badge)](https://github.com/checktheroads/hyperglass/actions?query=workflow%3A%Installer+Testing%22) +[![Frontend Tests](https://img.shields.io/github/workflow/status/thatmattlove/hyperglass/Frontend%20Testing?label=Frontend%20Tests&style=for-the-badge)](https://github.com/thatmattlove/hyperglass/actions?query=workflow%3A%Frontend+Testing%22) +[![Backend Tests](https://img.shields.io/github/workflow/status/thatmattlove/hyperglass/Backend%20Testing?label=Backend%20Tests&style=for-the-badge)](https://github.com/thatmattlove/hyperglass/actions?query=workflow%3A%Backend+Testing%22) +[![Installer Tests](https://img.shields.io/github/workflow/status/thatmattlove/hyperglass/Installer%20Testing?label=Installer%20Tests&style=for-the-badge)](https://github.com/thatmattlove/hyperglass/actions?query=workflow%3A%Installer+Testing%22)
@@ -27,7 +27,7 @@ hyperglass is intended to make implementing a looking glass too easy not to do, -### [Changelog](https://github.com/checktheroads/hyperglass/blob/v1.0.0/CHANGELOG.md) +### [Changelog](https://github.com/thatmattlove/hyperglass/blob/v1.0.0/CHANGELOG.md) ## Features @@ -56,7 +56,7 @@ hyperglass is intended to make implementing a looking glass too easy not to do, - Query multiple devices simultaneously - Browser-based DNS-over-HTTPS resolution of FQDN queries -*To request support for a specific platform, please [submit a Github Issue](https://github.com/checktheroads/hyperglass/issues/new) with the **feature** label.* +*To request support for a specific platform, please [submit a Github Issue](https://github.com/thatmattlove/hyperglass/issues/new) with the **feature** label.* ### [Get Started →](https://hyperglass.dev/docs/introduction) @@ -83,4 +83,4 @@ hyperglass is built entirely on open-source software. Here are some of the aweso - [Pydantic](https://pydantic-docs.helpmanual.io/) - [Chakra UI](https://chakra-ui.com/) -[![GitHub](https://img.shields.io/github/license/checktheroads/hyperglass?color=330036&style=for-the-badge)](https://github.com/checktheroads/hyperglass/blob/v1.0.0/LICENSE) +[![GitHub](https://img.shields.io/github/license/thatmattlove/hyperglass?color=330036&style=for-the-badge)](https://github.com/thatmattlove/hyperglass/blob/v1.0.0/LICENSE) diff --git a/docs/docs/adding-devices.mdx b/docs/docs/adding-devices.mdx index bc8be791..ea9a5d64 100644 --- a/docs/docs/adding-devices.mdx +++ b/docs/docs/adding-devices.mdx @@ -41,19 +41,19 @@ routers: ## All Device Parameters -| Parameter | Type | Description | -| :------------------ | :-----: | :----------------------------------------------------------------------------------------------------------------- | -| `name` | String | Device's user-facing name. | -| `address` | String | Device management hostname or IP address. | -| `network` | String | [Network Configuration](#network) | -| `port` | Integer | TCP port used to connect to the device. `22` by default. | -| `nos` | String | Network Operating System. Must be a supported platform. | -| `structured_output` | Boolean | Disabled output parsing to structured data. | -| `driver` | String | Override the device driver. Must be 'scrapli' or 'netmiko'. | -| `credential` | | [Device Credential Configuration](#credential) | -| `vrfs` | | [Device VRF Configuration](#vrfs) | -| `proxy` | | [SSH Proxy Configuration](#proxy) | -| `ssl` | | [SSL Configuration](#ssl) for devices using [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent). | +| Parameter | Type | Description | +| :------------------ | :-----: | :---------------------------------------------------------------------------------------------------------------- | +| `name` | String | Device's user-facing name. | +| `address` | String | Device management hostname or IP address. | +| `network` | String | [Network Configuration](#network) | +| `port` | Integer | TCP port used to connect to the device. `22` by default. | +| `nos` | String | Network Operating System. Must be a supported platform. | +| `structured_output` | Boolean | Disabled output parsing to structured data. | +| `driver` | String | Override the device driver. Must be 'scrapli' or 'netmiko'. | +| `credential` | | [Device Credential Configuration](#credential) | +| `vrfs` | | [Device VRF Configuration](#vrfs) | +| `proxy` | | [SSH Proxy Configuration](#proxy) | +| `ssl` | | [SSL Configuration](#ssl) for devices using [hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent). | ### `network` @@ -84,7 +84,7 @@ Currently, only `linux_ssh` has been tested and validated for use as an SSH prox While all devices require a credential mapping, the credential values themselves may be used in different ways depending on the device NOS. For SSH devices, the credential is used as a typical SSH username and password. -For HTTP devices (i.e. devices using [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent)), the username is ignored and the password is used as a secret for [JSON Web Token](https://tools.ietf.org/html/rfc7519) encoding/decoding. +For HTTP devices (i.e. devices using [hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent)), the username is ignored and the password is used as a secret for [JSON Web Token](https://tools.ietf.org/html/rfc7519) encoding/decoding. | Parameter | Type | Description | | :-------------- | :----- | :----------------------------------------------------------- | diff --git a/docs/docs/agent/installation.mdx b/docs/docs/agent/installation.mdx index 22cafa95..3585bd74 100644 --- a/docs/docs/agent/installation.mdx +++ b/docs/docs/agent/installation.mdx @@ -10,7 +10,7 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; :::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. +[hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/thatmattlove/hyperglass/issues/143) and [here](platforms.mdx) for more detail. ::: ## Installation @@ -77,5 +77,5 @@ $ pip3 install hyperglass-agent ``` :::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. +[hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/thatmattlove/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 ce6bdc5c..8bdacfaf 100644 --- a/docs/docs/agent/parameters.mdx +++ b/docs/docs/agent/parameters.mdx @@ -10,7 +10,7 @@ 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. +[hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/thatmattlove/hyperglass/issues/143) and [here](platforms.mdx) for more detail. :::
@@ -68,5 +68,5 @@ By default, hyperglass-agent writes all log messages to a log file located at `/ | `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. +[hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/thatmattlove/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 f079c51d..18db315a 100644 --- a/docs/docs/agent/setup.mdx +++ b/docs/docs/agent/setup.mdx @@ -9,7 +9,7 @@ description: Configure hyperglass-agent import M from "../../src/components/MiniNote"; :::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. +[hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent) is going to be deprecated soon. See [Issue #143](https://github.com/thatmattlove/hyperglass/issues/143) and [here](platforms.mdx) for more detail. ::: :::important Time & NTP @@ -55,5 +55,5 @@ Options: ::: :::important More coming soon -Documentation for [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent) is in progress! +Documentation for [hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent) is in progress! ::: diff --git a/docs/docs/getting-started.mdx b/docs/docs/getting-started.mdx index e820a440..9256650d 100755 --- a/docs/docs/getting-started.mdx +++ b/docs/docs/getting-started.mdx @@ -24,7 +24,7 @@ $ curl https://install.hyperglass.dev | sudo bash ``` :::caution Piping to bash -You should be very worried when someone asks you to do what I just did. Downloading a bash script from the internet and piping it to `bash` with root privileges is a terrible idea, unless you fully trust the source. Please don't trust me - go [look at the code](https://github.com/checktheroads/hyperglass/blob/v1.0.0/install.sh) and determine for your self if it's safe to execute. If you feel it's not, please proceed with the manual installation (and [tell me why](https://github.com/checktheroads/hyperglass/issues), so I can fix it). +You should be very worried when someone asks you to do what I just did. Downloading a bash script from the internet and piping it to `bash` with root privileges is a terrible idea, unless you fully trust the source. Please don't trust me - go [look at the code](https://github.com/thatmattlove/hyperglass/blob/v1.0.0/install.sh) and determine for your self if it's safe to execute. If you feel it's not, please proceed with the manual installation (and [tell me why](https://github.com/thatmattlove/hyperglass/issues), so I can fix it). ::: ## Manual Installation diff --git a/docs/docs/production.mdx b/docs/docs/production.mdx index 00912af7..bf65c327 100644 --- a/docs/docs/production.mdx +++ b/docs/docs/production.mdx @@ -25,7 +25,7 @@ When [debug](parameters.mdx#global-settings) is set to `true`, the number of wor ### Memory -Testing shows that hyperglass is extremely memory efficient at runtime. For example, running 4 simulations BGP Route queries, with two devices utilizing [hyperglass-agent](https://github.com/checktheroads/hyperglass-agent), and two devices utilizing SSH, the server increased RAM utilization by about 20MB during execution, and went back down afterwards. +Testing shows that hyperglass is extremely memory efficient at runtime. For example, running 4 simulations BGP Route queries, with two devices utilizing [hyperglass-agent](https://github.com/thatmattlove/hyperglass-agent), and two devices utilizing SSH, the server increased RAM utilization by about 20MB during execution, and went back down afterwards. However, at build time, there are some fairly memory-intensive tasks which _will_ time out or cause strange errors without the proper amount of RAM. Testing suggests **2GB of RAM is sufficient**, however **4GB is the ideal minimum amount of RAM**. diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 12c09477..a04fb45c 100755 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -1,4 +1,4 @@ -const githubURL = "https://github.com/checktheroads/hyperglass"; +const githubURL = "https://github.com/thatmattlove/hyperglass"; const { googleTrackingId, algoliaKey } = process.env; @@ -8,7 +8,7 @@ const docusaurusConfig = { url: "https://hyperglass.dev", baseUrl: "/", favicon: "img/favicon.ico", - organizationName: "checktheroads", + organizationName: "thatmattlove", projectName: "hyperglass", themeConfig: { image: "opengraph.jpg", @@ -77,7 +77,7 @@ const docusaurusConfig = { }, { label: "Twitter", - href: "https://twitter.com/checktheroads", + href: "https://twitter.com/thatmattlove", }, ], }, diff --git a/hyperglass/__init__.py b/hyperglass/__init__.py index b0ab6ba4..d19fd108 100644 --- a/hyperglass/__init__.py +++ b/hyperglass/__init__.py @@ -1,10 +1,10 @@ """hyperglass is a modern, customizable network looking glass written in Python 3. -https://github.com/checktheroads/hyperglass +https://github.com/thatmattlove/hyperglass The Clear BSD License -Copyright (c) 2020 Matthew Love +Copyright (c) 2021 Matthew Love All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/hyperglass/constants.py b/hyperglass/constants.py index 9d84b954..e566291e 100644 --- a/hyperglass/constants.py +++ b/hyperglass/constants.py @@ -4,7 +4,7 @@ from datetime import datetime __name__ = "hyperglass" -__version__ = "1.0.2" +__version__ = "1.0.3" __author__ = "Matt Love" __copyright__ = f"Copyright {datetime.now().year} Matthew Love" __license__ = "BSD 3-Clause Clear License" diff --git a/hyperglass/ui/README.md b/hyperglass/ui/README.md index f8edd2a5..7bb61f28 100644 --- a/hyperglass/ui/README.md +++ b/hyperglass/ui/README.md @@ -1,3 +1,3 @@ # hyperglass-ui -[hyperglass](https://github.com/checktheroads/hyperglass) UI, written in [React](https://reactjs.org/), on [Next.js](https://nextjs.org/), with [Chakra UI](https://chakra-ui.com/). +[hyperglass](https://github.com/thatmattlove/hyperglass) UI, written in [React](https://reactjs.org/), on [Next.js](https://nextjs.org/), with [Chakra UI](https://chakra-ui.com/). diff --git a/install.sh b/install.sh index fcbde444..883f5531 100755 --- a/install.sh +++ b/install.sh @@ -27,8 +27,8 @@ NEEDS_NODE="1" NEEDS_YARN="1" NEEDS_REDIS="1" -has_cmd () { - which $1 > /dev/null +has_cmd() { + which $1 >/dev/null if [[ $? == 0 ]]; then echo "0" @@ -37,30 +37,30 @@ has_cmd () { fi } -clean_temp () { +clean_temp() { echo "Cleaning up temporary files..." rm -rf /tmp/yarnkey.gpg rm -rf /tmp/nodesetup.sh } -catch_interrupt () { +catch_interrupt() { echo "Stopping..." exit 1 } -semver () { +semver() { local ver_raw=$(echo "$1" | egrep -o '[0-9]+\.[0-9]+\.[0-9]+') - local ver_digits=( ${ver_raw//./ } ) + local ver_digits=(${ver_raw//./ }) echo ${ver_digits[@]} } -parse_redis_version () { +parse_redis_version() { local one=$(echo "$@" | egrep -o 'v=[0-9]+\.[0-9]+\.[0-9]+') local two=$(echo $one | egrep -o '[0-9]+\.[0-9]+\.[0-9]+') echo $two } -python3_version () { +python3_version() { local ver_digits=($(semver "$(python3 --version)")) local major="${ver_digits[0]}" local minor="${ver_digits[1]}" @@ -80,10 +80,10 @@ python3_version () { fi } -node_version () { +node_version() { local ver_digits=($(semver "$(node --version)")) local major="${ver_digits[0]}" - + if [[ $major < $MIN_NODE_MAJOR ]]; then echo "1" elif [[ $major -ge $MIN_NODE_MAJOR ]]; then @@ -93,7 +93,7 @@ node_version () { fi } -needs_python () { +needs_python() { local has_python3=$(has_cmd "python3") if [[ $has_python3 == 1 ]]; then NEEDS_PYTHON="1" @@ -111,7 +111,7 @@ needs_python () { fi } -needs_node () { +needs_node() { local has_node=$(has_cmd node) if [[ $has_node == 1 ]]; then NEEDS_NODE="1" @@ -129,7 +129,7 @@ needs_node () { fi } -needs_yarn () { +needs_yarn() { local has_yarn=$(has_cmd yarn) if [[ $has_yarn == 1 ]]; then NEEDS_YARN="1" @@ -140,7 +140,7 @@ needs_yarn () { fi } -needs_redis () { +needs_redis() { local has_redis=$(has_cmd redis-server) if [[ $has_redis == 1 ]]; then NEEDS_REDIS="1" @@ -151,11 +151,11 @@ needs_redis () { fi } -get_platform () { +get_platform() { local use_apt=$(has_cmd apt-get) local use_yum=$(has_cmd yum) local use_brew=$(has_cmd brew) - + if [[ $use_apt == 0 ]]; then INSTALLER="apt" elif [[ $use_yum == 0 ]]; then @@ -168,7 +168,7 @@ get_platform () { fi } -python_post () { +python_post() { if [[ $1 == 0 ]]; then local successful=$(needs_python) if [[ $successful == 0 ]]; then @@ -181,7 +181,7 @@ python_post () { fi } -node_post () { +node_post() { if [[ $1 == 0 ]]; then local successful=$(needs_node) if [[ $successful == 0 ]]; then @@ -194,7 +194,7 @@ node_post () { fi } -yarn_post () { +yarn_post() { if [[ $1 == 0 ]]; then local successful=$(needs_yarn) if [[ $successful == 0 ]]; then @@ -207,7 +207,7 @@ yarn_post () { fi } -redis_post () { +redis_post() { if [[ $1 == 0 ]]; then local successful=$(needs_redis) if [[ $successful == 0 ]]; then @@ -220,14 +220,14 @@ redis_post () { fi } -node_apt_prepare () { +node_apt_prepare() { curl -sL https://deb.nodesource.com/setup_$MIN_NODE_MAJOR.x -o /tmp/nodesetup.sh sleep 1 bash /tmp/nodesetup.sh NEEDS_UPDATE="1" } -yarn_apt_prepare () { +yarn_apt_prepare() { curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg -o /tmp/yarnkey.gpg sleep 1 apt-key add /tmp/yarnkey.gpg @@ -235,62 +235,62 @@ yarn_apt_prepare () { NEEDS_UPDATE="1" } -node_yum_prepare () { +node_yum_prepare() { curl -sL https://rpm.nodesource.com/setup_$MIN_NODE_MAJOR.x -o /tmp/nodesetup.sh bash /tmp/nodesetup.sh sleep 1 NEEDS_UPDATE="1" } -yarn_yum_prepare () { +yarn_yum_prepare() { curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo sleep 1 NEEDS_UPDATE="1" } -node_apt () { +node_apt() { apt-get install -y nodejs sleep 1 node_post $? } -node_yum () { +node_yum() { yum -y install gcc-c++ make nodejs sleep 1 node_post $? } -node_brew () { +node_brew() { brew install node sleep 1 node_post $? } -yarn_apt () { +yarn_apt() { apt-get install -y yarn sleep 1 yarn_post $? } -yarn_yum () { +yarn_yum() { yum -y install gcc-c++ make yarn sleep 1 yarn_post $? } -yarn_brew () { +yarn_brew() { brew install yarn sleep 1 yarn_post $? } -python_apt () { - apt-get install -y python3.6-dev python3-pip > /dev/null +python_apt() { + apt-get install -y python3.6-dev python3-pip >/dev/null sleep 1 python_post $? } -python_yum () { +python_yum() { yum install centos-release-scl yum install rh-python36 yum install python3-devel @@ -299,31 +299,31 @@ python_yum () { python_post $? } -python_brew () { +python_brew() { brew install python3 sleep 1 python_post $? } -redis_apt () { +redis_apt() { apt-get install -y redis-server sleep 1 redis_post $? } -redis_yum () { +redis_yum() { yum -y install redis sleep 1 redis_post $? } -redis_brew () { +redis_brew() { brew install redis sleep 1 redis_post $? } -update_repo () { +update_repo() { if [[ $INSTALLER == "apt" ]]; then apt-get update elif [[ $INSTALLER == "yum" ]]; then @@ -333,7 +333,7 @@ update_repo () { fi } -install_python () { +install_python() { if [[ $NEEDS_PYTHON == "1" ]]; then echo "[INFO] Installing Python..." @@ -354,10 +354,10 @@ install_python () { fi } -install_node () { +install_node() { if [[ $NEEDS_NODE == "1" ]]; then echo "[INFO] Installing NodeJS..." - + if [[ $INSTALLER == "apt" ]]; then node_apt elif [[ $INSTALLER == "yum" ]]; then @@ -365,20 +365,20 @@ install_node () { elif [[ $INSTALLER == "brew" ]]; then node_brew fi - + elif [[ $NEEDS_NODE == "0" ]]; then echo "[INFO] Your system is running NodeJS $(node --version) (Minimum is $MIN_NODE_MAJOR+)." - + else echo "[ERROR] Unable to determine if your system needs NodeJS." exit 1 fi } -install_yarn () { +install_yarn() { if [[ $NEEDS_YARN == "1" ]]; then echo "[INFO] Installing Yarn..." - + if [[ $INSTALLER == "apt" ]]; then yarn_apt elif [[ $INSTALLER == "yum" ]]; then @@ -386,20 +386,20 @@ install_yarn () { elif [[ $INSTALLER == "brew" ]]; then yarn_brew fi - + elif [[ $NEEDS_YARN == "0" ]]; then echo "[INFO] Your system is running Yarn $(yarn --version) (Minimum is $MIN_YARN_MAJOR+)." - + else echo "[ERROR] Unable to determine if your system needs Yarn." exit 1 fi } -install_redis () { +install_redis() { if [[ $NEEDS_REDIS == "1" ]]; then echo "[INFO] Installing Redis..." - + if [[ $INSTALLER == "apt" ]]; then redis_apt elif [[ $INSTALLER == "yum" ]]; then @@ -407,10 +407,10 @@ install_redis () { elif [[ $INSTALLER == "brew" ]]; then redis_brew fi - + elif [[ $NEEDS_REDIS == "0" ]]; then echo "[INFO] Your system is running Redis $(parse_redis_version $(redis-server --version)) (Minimum is $MIN_REDIS_MAJOR+)." - + else echo "[ERROR] Unable to determine if your system needs Redis." exit 1 @@ -419,30 +419,30 @@ install_redis () { # The below script installs locally instead of from PyPI # -install_app () { +install_app() { echo "[INFO] Installing hyperglass..." curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -o /tmp/get-poetry.py - python3 /tmp/get-poetry.py -f -y > /dev/null + python3 /tmp/get-poetry.py -f -y >/dev/null sleep 1 source $HOME/.profile [ -d "/tmp/hyperglass" ] && rm -rf /tmp/hyperglass [ -d "/tmp/build" ] && rm -rf /tmp/build - - git clone --branch v1.0.0 --depth 1 https://github.com/checktheroads/hyperglass.git /tmp/hyperglass + + git clone --branch v1.0.0 --depth 1 https://github.com/thatmattlove/hyperglass.git /tmp/hyperglass cd /tmp/hyperglass poetry build mkdir /tmp/build - + # local build_tarball="/tmp/hyperglass/dist/hyperglass-build.tar.gz" local build_tarballs=(/tmp/hyperglass/dist/*.tar.gz) local build_tarball=${build_tarballs[-1]} local build_dir=$(basename $build_tarball .tar.gz) - + tar -xvf /tmp/hyperglass/dist/$build_dir.tar.gz -C /tmp/build cd /tmp/build/$build_dir - pip3 install . > /dev/null + pip3 install . >/dev/null if [[ ! $? == 0 ]]; then echo "[ERROR] An error occurred while trying to install hyperglass." diff --git a/pyproject.toml b/pyproject.toml index ca7f138c..71a78a9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,8 +22,8 @@ keywords = ["looking glass", "network automation", "isp", "bgp", "routing"] license = "BSD-3-Clause-Clear" name = "hyperglass" readme = "README.md" -repository = "https://github.com/checktheroads/hyperglass" -version = "1.0.2" +repository = "https://github.com/thatmattlove/hyperglass" +version = "1.0.3" [tool.poetry.scripts] hyperglass = "hyperglass.console:CLI"