Skip to content

Commit 3095876

Browse files
authored
Merge pull request #984 from netenglabs/develop
merge branch develop into master for 0.24.0 release
2 parents a44c9c1 + 584b22a commit 3095876

File tree

43 files changed

+996
-192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+996
-192
lines changed

.github/workflows/integration-tests.yml

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,31 +20,19 @@ jobs:
2020
python-version: [3.8, 3.9]
2121
group: [1, 2, 3, 4]
2222
steps:
23-
- uses: actions/checkout@v2
2423

25-
- name: Set up Python ${{ matrix.python-version }}
26-
uses: actions/setup-python@v2
27-
with:
28-
python-version: ${{ matrix.python-version }}
24+
- uses: actions/checkout@v4
2925

30-
- name: Install Poetry
31-
uses: snok/install-poetry@v1
32-
with:
33-
virtualenvs-create: true
34-
virtualenvs-in-project: true
26+
- name: Install poetry
27+
run: pipx install poetry==1.*
3528

36-
- name: Load cached venv
37-
id: cached-poetry-dependencies
38-
uses: actions/cache@v2
29+
- name: Set up Python ${{ matrix.python-version }}
30+
uses: actions/setup-python@v5
3931
with:
40-
path: .venv
41-
key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('poetry.lock') }}
42-
43-
- name: Install dependencies
44-
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
45-
run: poetry install --no-interaction --no-root
32+
python-version: ${{ matrix.python-version }}
33+
cache: 'poetry'
4634

47-
- name: Install library
35+
- name: Install dependencies and library
4836
run: poetry install --no-interaction
4937

5038
- name: Set up suzieq config
@@ -57,7 +45,7 @@ jobs:
5745
run: mkdir test_durations
5846

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

7159
- name: Upload partial durations
72-
uses: actions/upload-artifact@v2
60+
uses: actions/upload-artifact@v4
7361
with:
7462
retention-days: 1
7563
name: duration-chunk-${{ matrix.group }}-python-${{ matrix.python-version }}
@@ -81,10 +69,10 @@ jobs:
8169
needs: test
8270
steps:
8371
- name: Checkout
84-
uses: actions/checkout@v2
72+
uses: actions/checkout@v4
8573

8674
- name: Get durations from cache
87-
uses: actions/cache@v2
75+
uses: actions/cache@v4
8876
with:
8977
path: test_durations
9078
# artificial cache miss to always save at the end of the job and avoid out of sync test runs
@@ -93,7 +81,7 @@ jobs:
9381
test-durations
9482
9583
- name: Download artifacts
96-
uses: actions/download-artifact@v2
84+
uses: actions/download-artifact@v4
9785

9886
- name: Merge test durations
9987
run: python3 tests/utilities/merge_test_durations_ci.py

.github/workflows/linting.yml

Lines changed: 0 additions & 47 deletions
This file was deleted.

.github/workflows/pre-commit.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,21 @@ on:
1515
jobs:
1616
pre-commit:
1717
runs-on: ubuntu-latest
18-
1918
steps:
20-
- uses: actions/checkout@v2
19+
- name: Checkout
20+
uses: actions/checkout@v4
21+
22+
- name: Install poetry
23+
run: pipx install poetry==1.*
2124

2225
- name: Set up Python 3.8
23-
uses: actions/setup-python@v2
26+
uses: actions/setup-python@v5
2427
with:
2528
python-version: '3.8'
26-
architecture: 'x64'
29+
cache: 'poetry'
30+
31+
- name: Install dependencies and library
32+
run: poetry install --no-interaction
2733

2834
- name: Install pre-commit
2935
run: pip install pre-commit

.pre-commit-config.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,17 @@ repos:
88
hooks:
99
- id: end-of-file-fixer
1010
- id: mixed-line-ending
11+
- repo: local
12+
hooks:
13+
- id: system
14+
name: Pylint
15+
entry: poetry run pylint -j 0 suzieq
16+
pass_filenames: false
17+
language: system
18+
- repo: local
19+
hooks:
20+
- id: system
21+
name: Flake8
22+
entry: poetry run flake8 suzieq
23+
pass_filenames: false
24+
language: system

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ RUN python3 -m pip install --no-cache-dir /tmp/suzieq-$version-py3-none-any.whl
2222
rm -rf /tmp/* /var/tmp/*
2323

2424
VOLUME [ "/home/$username/parquet" ]
25-
26-
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
25+
26+
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
2727

2828
ENV SQENV=docker
2929

Dockerfile-sqbase

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM python:3.8.14-slim-buster AS sqbase
1+
FROM python:3.9.21-slim-bullseye AS sqbase
22

33
ENV PATH=/root/.local/bin:$PATH
44
ENV PYTHONPATH=/root/.local/lib

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ If you answered yes to one or more of these questions, then SuzieQ is a tool tha
1717

1818
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.
1919

20-
**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.
20+
**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.
2121

2222
## Quick Start
2323

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

4343
### Using Python Packaging
4444

45-
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.
45+
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.
4646

4747
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:
4848

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

8787
## Path
8888

89-
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)
89+
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)
9090

9191
## Asserts
9292

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

133133
# SuzieQ Enterprise
134134

135-
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].
135+
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).

build/requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ python-dateutil==2.8.2 ; python_full_version > "3.8.1" and python_version < "3.1
111111
python-dotenv==0.19.2 ; python_full_version > "3.8.1" and python_version < "3.10"
112112
python-nubia==0.2b5 ; python_full_version > "3.8.1" and python_version < "3.10"
113113
pytz==2023.3 ; python_full_version > "3.8.1" and python_version < "3.10"
114+
pyvmomi==8.0.2.0.1 ; python_full_version > "3.8.1" and python_version < "3.10"
114115
pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version > "3.8.1" and python_version < "3.10"
115116
pywinpty==2.0.11 ; python_full_version > "3.8.1" and python_version < "3.10" and os_name == "nt"
116117
pyyaml==6.0 ; python_full_version > "3.8.1" and python_version < "3.10"
@@ -145,7 +146,7 @@ typing-extensions==4.7.1 ; python_full_version > "3.8.1" and python_version < "3
145146
typing-inspect==0.9.0 ; python_full_version > "3.8.1" and python_version < "3.10"
146147
tzlocal==2.1 ; python_full_version > "3.8.1" and python_version < "3.10"
147148
urllib3==1.26.16 ; python_full_version > "3.8.1" and python_version < "3.10"
148-
uvicorn==0.14.0 ; python_full_version > "3.8.1" and python_version < "3.10"
149+
uvicorn==0.15.0 ; python_full_version > "3.8.1" and python_version < "3.10"
149150
uvloop==0.17.0 ; python_full_version > "3.8.1" and python_version < "3.10"
150151
validators==0.20.0 ; python_full_version > "3.8.1" and python_version < "3.10"
151152
watchdog==3.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" and platform_system != "Darwin"

docs/config_file.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ coalescer:
5353
| rest.logsize | maximum size of the REST logfile in bytes | 10000000 | no |
5454
| rest.log-stdout | log everything on the standard output instead of a file | False | no |
5555
| rest.no-https | if True, the REST server doesn't use SSL. Highly discouraged in production. | False | no |
56+
| 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 |
5657
| poller.logging-level | logging level for the poller.<br/> Choices: INFO, WARNING, ERROR | WARNING | no |
5758
| poller.logfile | log file for poller | /tmp/sq-poller.log | no |
5859
| poller.log-stdout | log on standard output instead of file | False | no |

docs/release-notes.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
11
# Release Notes
22

3+
## 0.24.0 (May 7, 2025)
4+
5+
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.
6+
7+
* **Filter devices by address**
8+
You can now filter devices based on one or more IP addresses using the `address` argument in the CLI.
9+
10+
* **Set certificate verification mode**
11+
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.
12+
13+
* **REST engine parameter update fix**
14+
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.
15+
16+
* **Add VMWare's vCenter source for inventory**
17+
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.
18+
Dependency added: `pyvnomi`.
19+
20+
* **Collect IPv6 neighbor data on Junos**
21+
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.
22+
323
## 0.23.0 (May 27, 2024)
424

525
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.

0 commit comments

Comments
 (0)