Campus Network-as-a-Service - Network Management System. Software to automate management of a campus network (LAN). This is an open source software developed as part of SUNETs managed service.
Planned features:
- Zero-touch provisioning of switches
- Automation of common changes for campus LAN
- Automated procedure for firmware upgrades
- Multi-vendor support
Dependencies are specified in [dependency-groups] in pyproject.toml. The are curently three groups
dependenciesdevdocs
dependencies from each group can be installed with
pip install --group <group>Note: requires pip 25.1 or later.
Docker and docker compose or:
- python3.11 or later
pip install --group dependencies(requires pip 25.1 or later)- SQL database, Redis
Install docker with docker compose and run: docker compose build -f docker/docker-compose.yaml
Install locally by creating a virtualenv and activate the environment, then:
python3 -m pip install --groups dependencies
cp etc/db_config.yml.sample /etc/cnaas-nms/db_config.yml
Edit db_config.yml to point to your SQL and redis database.
cd src/
pytest
Two marks can be used for pytest: integration and equipment, that can be be used to do a subset of all tests. Eg
pytest -m "not integration and not equipment"
Note that and must be used to apply filters at the same time.
If the tests should not spin up any containers at all, set the environment variable EXTERNAL_TEST_CONTAINERS, eg
EXTERNAL_TEST_CONTAINERS=1 pytest -m "not equipment"
Currently we can use two styles for the authorization. We can use the original style or use OIDC style. For OIDC we need to define some env variables or add a auth_config.yaml in the config. The needed variables are: OIDC_CONF_WELL_KNOWN_URL, OIDC_CLIENT_SECRET, OIDC_CLIENT_ID, FRONTEND_CALLBACK_URL and OIDC_ENABLED. To use the OIDC style the last variable needs to be set to true.
Copyright (c) 2019 - 2020, SUNET (BSD 2-clause license)
See LICENSE.txt for more info.
