AETHER-2846 Support all parameters which lists in Aether Docs

AETHER-2847 Integrating with Prometheus and record eNB information
AETHER-2848 Move SAS configuration as enodeb base, not plugin in driver code
AETHER-2879 add gps information in prometheus
AETHER-2880 add ip and port as configurable parameter in enodebd
AETHER-2897 Firmware update feature over CWMP
AETHER-3022 Integrate firmware upgrade state into configuration workflow
AETHER-3120 Develop ACS state machine with firmware upgrade feature

Change-Id: I0bcbf2229ba3c1638f2a997f3c651f8d6240145d
15 files changed
tree: 6362a7fc10731587186c0947905d8afe0df6cd5d
  1. .gitignore
  2. Makefile
  3. README.md
  4. VERSION
  5. common/
  6. configuration/
  7. data_models/
  8. device_config/
  9. devices/
  10. enodeb_status.py
  11. enodebd_iptables_rules.py
  12. eventd/
  13. exceptions.py
  14. logger.py
  15. lte_utils.py
  16. magma_configs/
  17. main.py
  18. metrics.py
  19. override_configs/
  20. pylint.ini
  21. requirements.txt
  22. rpc_servicer.py
  23. s1ap_client.py
  24. sercomm.out
  25. state_machines/
  26. stats_manager.py
  27. tests/
  28. tools/
  29. tr069/
README.md

ENODEBD

eNodeB daemon is an Automatic Configuration Server (ACS) which forks from Facebook Magma project. It currently tested with Sercomm eNodeB P27-SCE4255W small cell.

Run

make venv
python main.py

Configuration

We have these configuration files for configuring eNodeBD service.

  1. override_configs/gateway.mconfig

The enodebd will generate the empty configuration to config service, and it will load override_configs/gateway.mconfig to fill in the empty configuration.

  1. magma_configs/acs_common.yml

The acs_common.yml will hold the default value for all eNodeBs, like as the PLMN may be a shared value among all eNodeBs.

  1. magma_configs/serial_numbers/2009CW5000019.yml

The serial_number.yml will have the customized value for each configurable parameters. The value in serial_number.yml will override the value defines in gateway.mconfig and acs_common.yml when corresponding eNodeB connects (base on the serial number provided by eNodeB).

Prometheus Support

The following example configuration can start a Prometheus container for monitoring data sent by enodebd. The enodebd will start prometheus server on port 8000 by default.

# prometheus configuration - prometheus.yml
global:
  scrape_interval: 15s
  external_labels:
    monitor: 'codelab-monitor'

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['172.17.0.1:8000']

... and start prometheus container with docker command.

$ docker run -p 9090:9090 -v /home/ubuntu/magma-enodebd-new/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus