/integration-simulators-nf-simulator-netconf-server

Mirror of the integration/simulators/nf-simulator/netconf-server repo

Primary LanguagePython

Netconf Server

This server uses sysrepo to simulate network configuration. It is based on sysrepo-netopeer2 image.

User guide

starting server

In order to start server use docker-compose located in root catalog:

  docker-compose up -d

or run image using docker:

  docker run -it -p 830:830 -p 6513:6513 -p 6555:6555 onap/org.onap.integration.simulators.netconf-server:latest

using server

Server allows:

  • installing custom configuration models on start up.
  • changing configuration of that modules on runtime.

Configuration of models can be changed with use of SSH, be default expose on port 830, TLS, be default exposed on port 6513 and REST API, be default expose on port 6555.

  • SSH works "out of the box" with a username and password netconf.
  • TLS is disabled be default, in order to enable it, set environment variable ENABLE_TLS=true. More about TLS in TLS section.
  • REST API works "out of the box", more about it in REST API section.

custom models

new models are loaded on the image start up from catalog /resources/models. Be default this directory contains pnf-simulator.yang model and default configuration file for config change subscription models-configuration.ini. This file is required for application to start. More about that file in config change subscription section. In order to load custom models on start up, volume with models and configuration file, should be mounted to /resources/models directory. It can be done in docker-compose, by putting ./path/to/cusom/models:/resources/models in volumes section. Examples of custom models configuration can be found in example directory.

TLS

TLS in disabled be default with environment variable ENABLE_TLS set to false. In order to enable TLS, that environment variable need to be set to true on container start up. It can be done in docker-compose, by putting ENABLE_TLS=true in environment section. Example of that TLS configuration can be found in example directory.

custom certificate

When TLS is enabled server will use auto generated certificates, be default. That certificates are generated during image build and are located in /resources/certs directory. Certificates are loaded during image start up. In order to use custom certs volume with certificates needs to be mounted to /resources/certs directory. Example of that custom certificates configuration can be found in example directory. In this volume following files are required, named accordingly:

  • ca.crt - CA/Root certificate
  • client.crt - client certificate
  • server.crt - server certificate
  • server.key - server private key
  • server_pub.key - server public key

config change subscription

Netconf server image run python application on the startup. More on that application in README located in src/python directory. This application allows subscribing on config change for selected models. Data about witch models change should be subscribed to, are located in config file. Config file must be located in models directory, on the image that directory is /resources/models. For more data about models go back to custom models section. Configuration file should be called models-configuration.ini, although that can be changed, by setting environment variable MODELS_CONFIGURATION_FILE_NAME. Configuration file should be formatted in proper way:

[SUBSCRIPTION]
models = my-model-1,my-model-2,my-model-3

Custom modules, to subscribe to, should be separated with comma. Example of that custom config change subscription can be found in example directory.

REST API

Netconf server provides REST interface, with enpoints:

  • GET /healthcheck returns 200 "UP" if server is up and running
  • POST /readiness return 200 "Ready" if server is ready, if not, returns 503 "Not Ready"
  • POST /change_config/<path:module_name> changes configuration ad returns 202 "Accepted"
  • GET /change_history returns 200 and change history as json
  • GET /get_config/<path:module_name> returns 200 and current configuration

logging

Netconf server print all logs on to the console. Logs from python applications are also stored in files located in /logs directory

Development guide

building image

In order to build image mvn command can be run:

  mvn clean install -p docker 

Image building process

To build image, Dockerfile is used.

During an image building:

  • catalog scripts is copied to image home directory. That catalog contains all scripts needed for installing initial models and configuring TLS.
  • catalog models is copied to image directory /resources/models. That catalog contains default models that will be installed on image start up.
  • default certificates and keys for TLS are generated and stored in /resources/certs directory.
  • set-up-netopeer script is set to be run on image start up.

During an image startup:

  • install all models from /resources/models directory
  • if flag ENABLE_TLS is set to true, configure TLS
  • run python netconf server application in detach mode. More on that application in README located in src/python directory.

change log

This project contains Changeloge.md file. Please update this file when change is made, according to the guidelines.