mirror of
https://github.com/checktheroads/hyperglass
synced 2024-05-11 05:55:08 +00:00
Update GitHub username
This commit is contained in:
86
CHANGELOG.md
86
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
|
||||
|
||||
|
@@ -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:
|
||||
|
||||
|
14
README.md
14
README.md
@@ -15,11 +15,11 @@
|
||||
|
||||
[](https://pypi.org/project/hyperglass/)
|
||||

|
||||
[](https://github.com/checktheroads/hyperglass)
|
||||
[](https://github.com/thatmattlove/hyperglass)
|
||||
|
||||
[](https://github.com/checktheroads/hyperglass/actions?query=workflow%3A%Frontend+Testing%22)
|
||||
[](https://github.com/checktheroads/hyperglass/actions?query=workflow%3A%Backend+Testing%22)
|
||||
[](https://github.com/checktheroads/hyperglass/actions?query=workflow%3A%Installer+Testing%22)
|
||||
[](https://github.com/thatmattlove/hyperglass/actions?query=workflow%3A%Frontend+Testing%22)
|
||||
[](https://github.com/thatmattlove/hyperglass/actions?query=workflow%3A%Backend+Testing%22)
|
||||
[](https://github.com/thatmattlove/hyperglass/actions?query=workflow%3A%Installer+Testing%22)
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -27,7 +27,7 @@ hyperglass is intended to make implementing a looking glass too easy not to do,
|
||||
|
||||
</div>
|
||||
|
||||
### [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/)
|
||||
|
||||
[](https://github.com/checktheroads/hyperglass/blob/v1.0.0/LICENSE)
|
||||
[](https://github.com/thatmattlove/hyperglass/blob/v1.0.0/LICENSE)
|
||||
|
@@ -42,7 +42,7 @@ routers:
|
||||
## All Device Parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| :------------------ | :-----: | :----------------------------------------------------------------------------------------------------------------- |
|
||||
| :------------------ | :-----: | :---------------------------------------------------------------------------------------------------------------- |
|
||||
| <R/> `name` | String | Device's user-facing name. |
|
||||
| <R/> `address` | String | Device management hostname or IP address. |
|
||||
| <R/> `network` | String | [Network Configuration](#network) |
|
||||
@@ -53,7 +53,7 @@ routers:
|
||||
| <R/>`credential` | | [Device Credential Configuration](#credential) |
|
||||
| <R/>`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). |
|
||||
| `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 |
|
||||
| :-------------- | :----- | :----------------------------------------------------------- |
|
||||
|
@@ -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.
|
||||
:::
|
||||
|
@@ -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.
|
||||
:::
|
||||
|
||||
<div class="table--full-width" />
|
||||
@@ -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.
|
||||
:::
|
||||
|
@@ -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!
|
||||
:::
|
||||
|
@@ -24,7 +24,7 @@ $ curl https://install.hyperglass.dev | sudo bash
|
||||
```
|
||||
|
||||
:::caution Piping to bash
|
||||
You should be <i>very</i> 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 <i>very</i> 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
|
||||
|
@@ -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**.
|
||||
|
||||
|
@@ -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",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
@@ -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/).
|
||||
|
88
install.sh
88
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,7 +80,7 @@ python3_version () {
|
||||
fi
|
||||
}
|
||||
|
||||
node_version () {
|
||||
node_version() {
|
||||
local ver_digits=($(semver "$(node --version)"))
|
||||
local major="${ver_digits[0]}"
|
||||
|
||||
@@ -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,7 +151,7 @@ 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)
|
||||
@@ -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,7 +354,7 @@ install_python () {
|
||||
fi
|
||||
}
|
||||
|
||||
install_node () {
|
||||
install_node() {
|
||||
if [[ $NEEDS_NODE == "1" ]]; then
|
||||
echo "[INFO] Installing NodeJS..."
|
||||
|
||||
@@ -375,7 +375,7 @@ install_node () {
|
||||
fi
|
||||
}
|
||||
|
||||
install_yarn () {
|
||||
install_yarn() {
|
||||
if [[ $NEEDS_YARN == "1" ]]; then
|
||||
echo "[INFO] Installing Yarn..."
|
||||
|
||||
@@ -396,7 +396,7 @@ install_yarn () {
|
||||
fi
|
||||
}
|
||||
|
||||
install_redis () {
|
||||
install_redis() {
|
||||
if [[ $NEEDS_REDIS == "1" ]]; then
|
||||
echo "[INFO] Installing Redis..."
|
||||
|
||||
@@ -419,18 +419,18 @@ 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
|
||||
@@ -442,7 +442,7 @@ install_app () {
|
||||
|
||||
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."
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user