[buildout] parts = directory ltelogs lte-gnb-config lte-enb-service amarisoft-stats-service sdr-busy-promise cell-gain-saturated-promise rx-saturated-promise amarisoft-stats-log-promise {% if not slapparameter_dict.get("sub-instance", False) %} cpu-temperature-promise {% endif %} monitor-base publish-connection-information extends = {{ monitor_template }} eggs-directory = {{ eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }} offline = true [slap-configuration] recipe = slapos.cookbook:slapconfiguration.serialised computer = {{ slap_connection['computer-id'] }} partition = {{ slap_connection['partition-id'] }} url = {{ slap_connection['server-url'] }} key = {{ slap_connection['key-file'] }} cert = {{ slap_connection['cert-file'] }} configuration.network_name = RAPIDSPACE configuration.domain = rapid.space configuration.mme_ws_port = 9000 configuration.enb_ws_port = 9002 configuration.ims_ws_port = 9003 configuration.ims_addr = 127.0.0.1 configuration.ims_bind = 127.0.0.2 configuration.enb_addr = 127.0.1.1 configuration.default_dl_nr_arfcn = {{ default_dl_nr_arfcn }} configuration.default_nr_band = {{ default_nr_band }} configuration.default_nr_dl_freq = {{ default_nr_dl_freq }} configuration.default_nr_bandwidth = {{ default_nr_bandwidth }} configuration.default_nr_tx_gain = {{ default_nr_tx_gain }} configuration.default_nr_inactivity_timer = {{ default_nr_inactivity_timer }} configuration.default_nr_rx_gain = {{ default_nr_rx_gain }} configuration.default_nr_ssb_pos_bitmap = {{ default_nr_ssb_pos_bitmap }} [directory] recipe = slapos.cookbook:mkdirectory software = {{ buildout_directory }} home = ${buildout:directory} etc = ${:home}/etc var = ${:home}/var etc = ${:home}/etc bin = ${:home}/bin tmp = ${:home}/tmp run = ${:var}/run script = ${:etc}/run service = ${:etc}/service promise = ${:etc}/promise log = ${:var}/log [ltelogs] recipe = slapos.recipe.template:jinja2 url = {{ ltelogs_template }} output = ${directory:home}/ltelogs.sh extensions = jinja2.ext.do context = section directory directory {% if slapparameter_dict.get("gnb_config_link", None) %} [gnb-config-dl] recipe = slapos.recipe.build:download url = {{ slapparameter_dict.get("gnb_config_link") }} version = {{ slapparameter_dict.get("gnb_config_version") }} offline = false {% endif %} [lte-enb-sh-wrapper] recipe = slapos.recipe.template output = ${directory:bin}/${:_buildout_section_name_} inline = #!/bin/sh {% if not slapparameter_dict.get("testing", False) %} sudo /opt/amarisoft/rm-tmp-lte; sudo /opt/amarisoft/init-sdr; sudo /opt/amarisoft/init-enb; {{ enb }}/lteenb ${directory:etc}/gnb.cfg >> ${directory:log}/gnb-output.log 2>> ${directory:log}/gnb-output.log {% endif %} ### eNodeB (enb) [lte-enb-service] recipe = slapos.cookbook:wrapper init = ${ltelogs:output} ${directory:log}/enb.log; sleep 2 command-line = ${lte-enb-sh-wrapper:output} wrapper-path = ${directory:service}/lte-enb mode = 0775 reserve-cpu = True pidfile = ${directory:run}/enb.pid hash-files = ${lte-gnb-config:output} ${lte-enb-sh-wrapper:output} environment = LD_LIBRARY_PATH={{ openssl_location }}/lib AMARISOFT_PATH=/opt/amarisoft/.amarisoft [amarisoft-stats-template] recipe = slapos.recipe.template:jinja2 extensions = jinja2.ext.do log-output = ${directory:var}/log/amarisoft-stats.json.log context = section directory directory key slapparameter_dict slap-configuration:configuration key log_file :log-output raw stats_period {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} raw testing {{ slapparameter_dict.get("testing", False) }} raw python_path {{ buildout_directory}}/bin/pythonwitheggs mode = 0775 url = {{ amarisoft_stats_template }} output = ${directory:bin}/amarisoft-stats.py ### eNodeB (enb) [amarisoft-stats-service] recipe = slapos.cookbook:wrapper command-line = ${amarisoft-stats-template:output} wrapper-path = ${directory:service}/amarisoft-stats mode = 0775 hash-files = ${amarisoft-stats-template:output} [config-base] recipe = slapos.recipe.template:jinja2 extensions = jinja2.ext.do context = section directory directory section slap_configuration slap-configuration key slapparameter_dict slap-configuration:configuration key gtp_addr_v6 slap-configuration:ipv6-random raw gtp_addr_v4 {{ epc_ipv4 }} import netaddr netaddr [lte-gnb-config] <= config-base {% if slapparameter_dict.get("gnb_config_link", None) %} url = ${gnb-config-dl:target} {% else %} url = {{ gnb_template }} {% endif %} output = ${directory:etc}/gnb.cfg [publish-connection-information] <= monitor-publish recipe = slapos.cookbook:publish.serialised [monitor-instance-parameter] {% if slapparameter_dict.get("name", None) %} monitor-title = {{ slapparameter_dict['name'] | string }} {% endif %} {% if slapparameter_dict.get("monitor-password", None) %} password = {{ slapparameter_dict['monitor-password'] | string }} {% endif %} [sdr-busy-promise] recipe = slapos.cookbook:promise.plugin eggs = slapos.core file = {{ sdr_busy_promise }} output = ${directory:plugins}/check-sdr-busy.py config-testing = {{ slapparameter_dict.get("testing", False) }} config-sdr = {{ sdr }} [cell-gain-saturated-promise] recipe = slapos.cookbook:promise.plugin eggs = slapos.core python-dateutil file = {{ cell_gain_saturated_promise }} output = ${directory:plugins}/check-cell-gain-saturated.py config-testing = {{ slapparameter_dict.get("testing", False) }} config-amarisoft-stats-log = ${amarisoft-stats-template:log-output} config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} [rx-saturated-promise] recipe = slapos.cookbook:promise.plugin eggs = slapos.core python-dateutil file = {{ rx_saturated_promise }} output = ${directory:plugins}/check-rx-saturated.py config-testing = {{ slapparameter_dict.get("testing", False) }} config-amarisoft-stats-log = ${amarisoft-stats-template:log-output} config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} config-max-rx-sample-db = {{ slapparameter_dict.get("max_rx_sample_db", 0) }} [amarisoft-stats-log-promise] recipe = slapos.cookbook:promise.plugin eggs = slapos.core python-dateutil file = {{ amarisoft_stats_log_promise }} output = ${directory:plugins}/check-amarisoft-stats-log.py config-amarisoft-stats-log = ${amarisoft-stats-template:log-output} config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} [cpu-temperature-promise] recipe = slapos.cookbook:promise.plugin eggs = slapos.core file = {{ cpu_temperature_promise }} output = ${directory:plugins}/check-cpu-temperature.py config-testing = {{ slapparameter_dict.get("testing", False) }} config-max-temp = {{ slapparameter_dict.get("promise_cpu_temperature_threshold", 90) }} config-max-avg-temp = {{ slapparameter_dict.get("promise_cpu_avg_temperature_threshold", 80) }} config-max-avg-temp-duration = {{ slapparameter_dict.get("promise_cpu_avg_temperature_threshold_duration", 600) }}