Networking Manager
Table of Contents
Overview
The Networking Manager constantly verifies the correctness of the networking configuration and IP
uniqueness on of the Edge Nodes within a site.
The Networking Manager handles Network Resources representing the network infrastructure of a site and its
relative addressing information. Most of the network resources are unique within a single site,
but not globally unique (e.g., multiple sites may have the same IP Subnet definitions).
This repository contains the Networking Manager implementation.
Features
- Top-down Edge Node networking configuration and constant correctness monitoring, via reconciliation
- Exemplar reconciliation implementation, can be taken for other elements.
To learn more about internals and software architecture, see
Edge Infrastructure Manager developer documentation.
Get Started
Instructions on how to install and set up Networking Manger on your development machine.
Dependencies
Firstly, please verify that all dependencies have been installed.
# Return errors if any dependency is missing
make dependency-check
This code requires the following tools to be installed on your development machine:
You can install Go dependencies by running make go-dependency.
Build the Binary
Build the project as follows:
# Build go binary
make build
The binary is installed in the $OUT_DIR folder.
Usage
This guide shows how to deploy Networking Manger for local development or testing.
For production deployments use the Edge Infrastructure Manager charts.
Note: To run the Networking Manager, Inventory must to be running as the manager needs to register as an Inventory client.
Please refer to the
Inventory instructions
and Database in Inventory
for more information about how to run Inventory.
Run Networking Manger
make run
See the documentation if you want to learn more about using Edge Orchestrator.
Functional Test
Run the make target test to mock agents to simulate the relative behaviors for host resources.
make test
For any issues see the Troubleshooting guide.
Contribute
To learn how to contribute to the project, see the contributor's guide. The project will
accept contributions through Pull-Requests (PRs). PRs must be built successfully by the CI pipeline, pass linters
verifications and the unit tests.
There are several convenience make targets to support developer activities, you can use help to see a list of makefile
targets. The following is a list of makefile targets that support developer activities:
generate to generate the database schema, Go code, and the Python binding from the protobuf definition of the APIs
lint to run a list of linting targets
mdlint to run linting of this file.
test to run the unit test
go-tidy to update the Go dependencies and regenerate the go.sum file
build to build the project and generate executable files
docker-build to build the Inventory Docker container