References
Below are links to various projects that have played a role in the development of OpenL2M. These are mostly provided to make it easy to get started with understanding, and potentially developing, OpenL2M.
Documentation
Sphinx is used to handle the ReStructuredText this documentation is written in. Get started here: https://docs.readthedocs.io/en/stable/intro/getting-started-with-sphinx.html
We use Sphinx-Design to make life easier: https://sphinx-design.readthedocs.io/en/latest/get_started.html
Python doc string options are nicely described here: https://stackoverflow.com/questions/3898572/what-is-the-standard-python-docstring-format
RST Tutorial: https://docs.typo3.org/m/typo3/docs-how-to-document/main/en-us/WritingReST/
RST Directives (ie. tags): https://docutils.sourceforge.io/docs/ref/rst/directives.html
Intro to Sphinx: https://www.writethedocs.org/guide/tools/sphinx/
Using Sphinx: https://www.sphinx-doc.org/en/master/contents.html
Sphinx-specific Directives: https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html
Frameworks and projects
Django, the web framework used. See https://docs.djangoproject.com/
Bootstrap, the html front-end library used. See https://getbootstrap.com/
Where there are many tutotials about using Bootstrap, a very comprehensive one is at https://www.tutorialrepublic.com/twitter-bootstrap-tutorial/
Additionally, the W3Schools “Introduction to the Bootstrap” is a valuable resource: See https://www.w3schools.com/bootstrap/default.asp
Django Rest Framework, used to implement our REST api. See https://www.django-rest-framework.org/
The Netbox project. This is the original project that inspired the birth of OpenL2M :-).
See https://github.com/netbox-community/netboxHP/Aruba vlan management tool. https://sourceforge.net/projects/procurve-admin/
Uninett NAV (Network Adminstration Visualized), at https://nav.uninett.no/ and specifically the SNMP portadmin code at https://github.com/Uninett/nav/tree/master/python/nav/portadmin/snmp
Icons
We use the Font Awesome v6 free web icon package: https://fontawesome.com/v6/search
Python
Virtual Environments: https://docs.python.org/3/library/venv.html
Google Python Style Guide: http://google.github.io/styleguide/pyguide.html
Google Docstrings: https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings
Google Doc Style examples: https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html
pycodestyle documentation: https://pycodestyle.pycqa.org/en/latest/
Flake8 code style checker: https://flake8.pycqa.org/en/latest/user/index.html
Type Hints: https://realpython.com/python-type-checking/
Nginx
Documenation: https://nginx.org/en/docs/
Docker
Dockerfile: https://docs.docker.com/reference/dockerfile/
Compose: https://docs.docker.com/compose/
Nginx in docker: https://hub.docker.com/_/nginx
SNMP clients
Python EzSNMP, using native Net-Snmp: See https://github.com/carlkidcrypto/ezsnmp and the docs at https://carlkidcrypto.github.io/ezsnmp/html/index.html
PySNMP, a native Python SNMP stack: https://pysnmp.com/
SNMP mibs
Arista SNMP: https://www.arista.com/en/support/product-documentation/arista-snmp-mibs
Cisco SNMP MIBs: https://github.com/cisco/cisco-mibs/tree/main/v2
More MIB files can be found at https://github.com/librenms/librenms/blob/master/mibs/ and https://mibs.observium.org/all/
And one of a number of MIB browsers at http://cric.grenoble.cnrs.fr/Administrateurs/Outils/MIBS/?oid=1.3.6.1.2.1
Aruba AOS-CX
AOS-CX REST API v10.x Most Recent Guide (at time of writing): https://arubanetworking.hpe.com/techdocs/AOS-CX/10.16/PDF/rest_v10-0x.pdf
https://developer.arubanetworks.com/aoscx/docs/introduction has information about configuring and using the REST api.
AOS-CX SNMP Capabilities are documented here (for v10.14, Sept 2024): https://www.arubanetworks.com/techdocs/AOS-CX/10.14/HTML/snmp_mib/Content/Chp_SNMP/snm.htm
HPE Comware REST API
At time of writing, these are useful links:
NetConf API docs, also shows REST info. Note there is a newer document only available from the HPE Networking Support site: https://support.hpe.com/hpesc/public/docDisplay?docId=a00127309en_us&docLocale=en_US
H3C Access Controllers REST API Developers Guide: https://www.h3c.com/en/Support/Resource_Center/EN/Home/Public/00-Public/Technical_Documents/Developer_Documents/Developer_Guides/H3C_Access_Controllers_REST_API-28618/?CHID=1210933
Junos PyEZ
Juniper documentation is at https://www.juniper.net/documentation/us/en/software/junos-pyez/junos-pyez-developer/index.html and at https://junos-pyez.readthedocs.io/
Juniper PyEZ library, at https://github.com/Juniper/py-junos-eznc and installable via pip.
Juniper Day-One book on PyEZ: https://www.juniper.net/documentation/en_US/day-one-books/DO_PyEZ_Cookbook.pdf
“Automating Junos Administration”, chapter 4 “Junos PyEZ”, O’Reilly books. The example code for this book can be found at https://github.com/AutomatingJunosAdministration
Example code at https://saidvandeklundert.net/2019-07-04-using-junos-pyez-for-information-gathering/ and https://alexwilkins.dev/index.php/python-pyez/
Napalm
The Napalm documentation is at https://napalm.readthedocs.io/
We also use a few community libraries as documented here https://napalm.readthedocs.io/en/latest/contributing/drivers.html
For Aruba AOS-CX support, we use this: https://developer.arubanetworks.com/aruba-aoscx/docs/installing-arubas-napalm-drivers
For Dell OS10 support, we use this: https://dellos10-napalm.readthedocs.io/en/latest/index.html
For HP Procurve support, we use this: https://github.com/ixs/napalm-procurve
A possible Comware Napalm driver is at https://github.com/firefly-serenity/napalm-flexfabric
Accessibility & Validation
W3 Markup Validator: https://validator.w3.org/
WAVE Browser Extensions: https://wave.webaim.org/extension