Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
efab7d5
node: fix errorin using the timeout arg with newer versions of aiohttp
claudious96 May 28, 2024
9362ae2
Merge pull request #955 from netenglabs/fix-http-timeout
ddutt Jun 3, 2024
f5e5f1b
Add vcenter as inventory source
tgupta3 May 10, 2024
4f79191
Fix lint
tgupta3 May 11, 2024
24e4410
Fix pylint
tgupta3 May 11, 2024
f21e0f1
Update poetry lock
tgupta3 Jun 3, 2024
042bff3
fix a few markdown hyperlinks
mjbear Aug 10, 2024
6b5114d
Fix typos in README.md
vivekvashist Aug 11, 2024
3406c5e
Merge pull request #962 from vivekvashist/fix_typo
ddutt Aug 30, 2024
e31484a
Merge pull request #939 from tgupta3/vcenter-inventory
ddutt Sep 2, 2024
ff56b88
Merge pull request #961 from mjbear/fix_readme_hyperlinks
ddutt Nov 26, 2024
b22197d
ipv6 neighbor data gathering for junos
amylieb Jan 17, 2025
5ce14ac
actions/tests: update deprecated actions
claudious96 Feb 28, 2025
346b384
actions/pre-commit: move back all lining into pre-commit
claudious96 Feb 28, 2025
96c4f92
Merge pull request #982 from netenglabs/update-actions-0-23
ddutt May 6, 2025
d2e7b37
adding address argument to device command
LanutiEmanuele Feb 17, 2025
702bd7e
adding address to valid args for device sqObj
LanutiEmanuele Feb 17, 2025
8fbb125
adding address param to device rest api endpoint
LanutiEmanuele Feb 17, 2025
a758f45
changing address description to avoid conflict for nubia interpreter
LanutiEmanuele Feb 17, 2025
97a11e7
updating test to allign with the filter address feature
LanutiEmanuele Feb 17, 2025
dc602ca
Dockerfile-sqbase: update base to python:3.9.21-slim
LucaNicosia Jan 31, 2025
a2f927d
Dockerfile: update PATH env variable to python3.9
LucaNicosia Jan 31, 2025
c5c1cbf
pyproject: update uvicon to ^0.15.0
LucaNicosia Jan 31, 2025
df811ec
update requirements.txt
LucaNicosia Jan 31, 2025
b79ffaa
Merge pull request #974 from netenglabs/upgrade-uvicorn-and-python
LucaNicosia May 6, 2025
8fbe7ae
adding the cert-verify option to engineobj
LanutiEmanuele Feb 21, 2025
cffe720
adding CA cert to test purpose
LanutiEmanuele Feb 21, 2025
b3d686f
moved get_free_port and updated import
LanutiEmanuele Feb 21, 2025
ae671aa
adding tests
LanutiEmanuele Feb 21, 2025
10363a2
updating docs
LanutiEmanuele Feb 25, 2025
6f125c8
fixing pylint errors
LanutiEmanuele May 6, 2025
11201d7
Merge pull request #978 from netenglabs/feature/cert-verify
LanutiEmanuele May 7, 2025
fc7a243
Merge pull request #977 from netenglabs/feature/device-filter-address
ddutt May 7, 2025
5395b03
add set rest engine config
LanutiEmanuele Feb 19, 2025
d0c455a
add logic to chage rest params when set engine from pandas to rest
LanutiEmanuele Feb 19, 2025
0732820
updated logic to set rest param
LanutiEmanuele Feb 19, 2025
e7ee843
testing rest engine param update
LanutiEmanuele Feb 19, 2025
df3efa5
fixing mypy errors
LanutiEmanuele May 6, 2025
bf843ca
improving type hints
LanutiEmanuele May 7, 2025
8ab720e
Merge pull request #976 from netenglabs/fix/rest-engine-context
LanutiEmanuele May 7, 2025
b1cd924
Merge pull request #971 from amylieb/ipv6-neighbors-for-junos
ddutt May 9, 2025
666dfa3
updating suzieq version
LanutiEmanuele May 7, 2025
7c0b3d0
updating release notes
LanutiEmanuele May 7, 2025
ad2efe2
update release notes
LanutiEmanuele May 9, 2025
584b22a
Merge pull request #983 from netenglabs/update_release_notes
ddutt May 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 13 additions & 25 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,31 +20,19 @@ jobs:
python-version: [3.8, 3.9]
group: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v2

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- uses: actions/checkout@v4

- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
- name: Install poetry
run: pipx install poetry==1.*

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
path: .venv
key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('poetry.lock') }}

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
python-version: ${{ matrix.python-version }}
cache: 'poetry'

- name: Install library
- name: Install dependencies and library
run: poetry install --no-interaction

- name: Set up suzieq config
Expand All @@ -57,7 +45,7 @@ jobs:
run: mkdir test_durations

- name: Get durations from cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: test_durations
# artificial cache miss to always save at the end of the job and avoid out of sync test runs
Expand All @@ -69,7 +57,7 @@ jobs:
run: poetry run pytest --splits 4 --group ${{ matrix.group }} --store-durations --durations-path test_durations/.test_durations_${{ matrix.python-version }}

- name: Upload partial durations
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
retention-days: 1
name: duration-chunk-${{ matrix.group }}-python-${{ matrix.python-version }}
Expand All @@ -81,10 +69,10 @@ jobs:
needs: test
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Get durations from cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: test_durations
# artificial cache miss to always save at the end of the job and avoid out of sync test runs
Expand All @@ -93,7 +81,7 @@ jobs:
test-durations

- name: Download artifacts
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4

- name: Merge test durations
run: python3 tests/utilities/merge_test_durations_ci.py
47 changes: 0 additions & 47 deletions .github/workflows/linting.yml

This file was deleted.

14 changes: 10 additions & 4 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,21 @@ on:
jobs:
pre-commit:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Checkout
uses: actions/checkout@v4

- name: Install poetry
run: pipx install poetry==1.*

- name: Set up Python 3.8
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: '3.8'
architecture: 'x64'
cache: 'poetry'

- name: Install dependencies and library
run: poetry install --no-interaction

- name: Install pre-commit
run: pip install pre-commit
Expand Down
14 changes: 14 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,17 @@ repos:
hooks:
- id: end-of-file-fixer
- id: mixed-line-ending
- repo: local
hooks:
- id: system
name: Pylint
entry: poetry run pylint -j 0 suzieq
pass_filenames: false
language: system
- repo: local
hooks:
- id: system
name: Flake8
entry: poetry run flake8 suzieq
pass_filenames: false
language: system
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ RUN python3 -m pip install --no-cache-dir /tmp/suzieq-$version-py3-none-any.whl
rm -rf /tmp/* /var/tmp/*

VOLUME [ "/home/$username/parquet" ]
ENV PATH=/root/.local/bin:$PATH:/root/.local/lib/python3.7/site-packages/suzieq/cli/:/root/.local/lib/python3.7/site-packages/suzieq/poller/:/root/.local/lib/python3.7/site-packages/suzieq/restServer

ENV PATH=/root/.local/bin:$PATH:/root/.local/lib/python3.9/site-packages/suzieq/cli/:/root/.local/lib/python3.9/site-packages/suzieq/poller/:/root/.local/lib/python3.9/site-packages/suzieq/restServer

ENV SQENV=docker

Expand Down
2 changes: 1 addition & 1 deletion Dockerfile-sqbase
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.8.14-slim-buster AS sqbase
FROM python:3.9.21-slim-bullseye AS sqbase

ENV PATH=/root/.local/bin:$PATH
ENV PYTHONPATH=/root/.local/lib
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ If you answered yes to one or more of these questions, then SuzieQ is a tool tha

SuzieQ does multiple things. It [collects](https://suzieq.readthedocs.io/en/latest/poller/) data from devices and systems across your network. It normalizes the data and then stores it in a vendor independent way. Then it allows analysis of that data. With the applications that we build on top of the framework we want to demonstrate a different and more systematic approach to thinking about networks. We want to show how useful it is to think of your network holistically.

**An enterprise version of SuzieQ is also available**. It has been deployed in production by multiple customers, and the company behind SuzieQ, (Stardust Systems)[https://stardustsystems.net] was named a "Cool Vendor" by Gartner for making network automation easy for enterprises.
**An enterprise version of SuzieQ is also available**. It has been deployed in production by multiple customers, and the company behind SuzieQ, [Stardust Systems](https://stardustsystems.net) was named a "Cool Vendor" by Gartner for making network automation easy for enterprises.

## Quick Start

Expand All @@ -42,7 +42,7 @@ To start collecting data for your network, create an inventory file to gather th

### Using Python Packaging

If you don't want to use docker container or cannot use a docker container, an alternative approach is to install SuzieQ as a python package. It is **strongly** recommended to install suzieq inside a virtual environment. If you already use a tool to create and manage virtual environments, you can skip the step of creating a virtual envirobment below.
If you don't want to use docker container or cannot use a docker container, an alternative approach is to install SuzieQ as a python package. It is **strongly** recommended to install suzieq inside a virtual environment. If you already use a tool to create and manage virtual environments, you can skip the step of creating a virtual environment below.

SuzieQ requires python version 3.7.1 at least, and has been tested with python versions 3.7 and 3.8. It has not been tested to work on Windows. Use Linux (recommended) or macOS. To create a virtual environment, in case you haven't got a tool to create one, type:

Expand Down Expand Up @@ -86,7 +86,7 @@ The CLI supports the same kind of analysis as the explore page. ![CLI device](im

## Path

SuzieQ has the ability to show the path between two IP addresses, including the ability to show the path through EVPN overlay. You can use this to see each of the paths from a source to a destination and to see if you have anything asymetrical in your paths. ![GUI PATH](images/path-gui.png)
SuzieQ has the ability to show the path between two IP addresses, including the ability to show the path through EVPN overlay. You can use this to see each of the paths from a source to a destination and to see if you have anything asymmetrical in your paths. ![GUI PATH](images/path-gui.png)

## Asserts

Expand Down Expand Up @@ -132,4 +132,4 @@ We've also been adding screencasts on [Youtube](https://www.youtube.com/results?

# SuzieQ Enterprise

SuzieQ also has a commercial offering, SuzieQ Enterprise. To know more about this and contact us, please visit the Stardust Systems (website)[https://stardustsystems.net].
SuzieQ also has a commercial offering, SuzieQ Enterprise. To know more about this and contact us, please visit the Stardust Systems [website](https://stardustsystems.net).
3 changes: 2 additions & 1 deletion build/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ python-dateutil==2.8.2 ; python_full_version > "3.8.1" and python_version < "3.1
python-dotenv==0.19.2 ; python_full_version > "3.8.1" and python_version < "3.10"
python-nubia==0.2b5 ; python_full_version > "3.8.1" and python_version < "3.10"
pytz==2023.3 ; python_full_version > "3.8.1" and python_version < "3.10"
pyvmomi==8.0.2.0.1 ; python_full_version > "3.8.1" and python_version < "3.10"
pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version > "3.8.1" and python_version < "3.10"
pywinpty==2.0.11 ; python_full_version > "3.8.1" and python_version < "3.10" and os_name == "nt"
pyyaml==6.0 ; python_full_version > "3.8.1" and python_version < "3.10"
Expand Down Expand Up @@ -145,7 +146,7 @@ typing-extensions==4.7.1 ; python_full_version > "3.8.1" and python_version < "3
typing-inspect==0.9.0 ; python_full_version > "3.8.1" and python_version < "3.10"
tzlocal==2.1 ; python_full_version > "3.8.1" and python_version < "3.10"
urllib3==1.26.16 ; python_full_version > "3.8.1" and python_version < "3.10"
uvicorn==0.14.0 ; python_full_version > "3.8.1" and python_version < "3.10"
uvicorn==0.15.0 ; python_full_version > "3.8.1" and python_version < "3.10"
uvloop==0.17.0 ; python_full_version > "3.8.1" and python_version < "3.10"
validators==0.20.0 ; python_full_version > "3.8.1" and python_version < "3.10"
watchdog==3.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" and platform_system != "Darwin"
Expand Down
1 change: 1 addition & 0 deletions docs/config_file.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ coalescer:
| rest.logsize | maximum size of the REST logfile in bytes | 10000000 | no |
| rest.log-stdout | log everything on the standard output instead of a file | False | no |
| rest.no-https | if True, the REST server doesn't use SSL. Highly discouraged in production. | False | no |
| rest.cert-verify | if False the certificate will not be verified.<br>If True the certificate will be verified.<br>If a path, that will be checked as CA. | True | no |
| poller.logging-level | logging level for the poller.<br/> Choices: INFO, WARNING, ERROR | WARNING | no |
| poller.logfile | log file for poller | /tmp/sq-poller.log | no |
| poller.log-stdout | log on standard output instead of file | False | no |
Expand Down
20 changes: 20 additions & 0 deletions docs/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Release Notes

## 0.24.0 (May 7, 2025)

This release adds several new capabilities and important bug fixes. Notably, it includes more flexible filtering options, improvements to REST engine parameter handling, support for certificate verification settings, and new integrations with the VMWare's vCenter and Junos IPv6 neighbor discovery. These changes are backward-compatible.

* **Filter devices by address**
You can now filter devices based on one or more IP addresses using the `address` argument in the CLI.

* **Set certificate verification mode**
Added support for the `cert-verify` parameter in configuration. You can set it to `True`, `False`, or a path to a CA certificate. This controls whether and how certificates are verified when connecting over HTTPS.

* **REST engine parameter update fix**
When switching to `engine='rest'`, the engine parameters (`rest-server-ip`, `rest-server-port`, `rest-api-key`, `rest-use-https`) are now correctly updated instead of keeping defaults. This avoids inconsistent behavior when switching between engines.

* **Add VMWare's vCenter source for inventory**
Introduced support for `vcenter` as an inventory source. This enables automatic discovery of VMs and their IPs based on custom attributes. Configuration includes support for authentication and SSL settings.
Dependency added: `pyvnomi`.

* **Collect IPv6 neighbor data on Junos**
Extended `arpnd` data collection to include IPv6 neighbors for Junos devices. This complements the existing IPv4 support and provides a more complete view of network neighbors on Junos platforms.

## 0.23.0 (May 27, 2024)

This has some useful features added, and a bunch of important bug fixes, most of them in the parsing logic, all of which are ports from the enterprise version. Some of these changes resulted in a few breaking changes, all to fix inconsistencies in parsing output. Fixing these inconsistencies should make writing logic using this info much simpler. Existing scripts that used this logic need to be fixed.
Expand Down
Loading
Loading