[buildout] parts = directory ltelogs lte-enb-config lte-enb-service amarisoft-stats-service amarisoft-rf-info-service {% if slapparameter_dict.get('rrh', '') == "Lopcomm ORAN" %} lopcomm-rrh-stats-service lopcomm-rrh-config-template lopcomm-cu-config check-lopcomm-vswr.py check-lopcomm-lof.py check-lopcomm-rssi.py check-cpri-lock.py {% endif %} {% if not slapparameter_dict.get("sub-instance", False) %} check-cpu-temperature.py {% endif %} check-sdr-busy.py check-baseband-latency.py check-amarisoft-stats-log.py check-rx-saturated.py monitor-base publish-connection-information extends = {{ monitor_template }} eggs-directory = {{ eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }} offline = true [monitor-httpd-conf-parameter] httpd-include-file = {{ buildout_directory }}/etc/httpd-include-file.conf port = ${monitor-instance-parameter:monitor-httpd-port} url = https://[${monitor-instance-parameter:monitor-httpd-ipv6}]:${:port} [monitor-instance-parameter] monitor-httpd-port = ${monitor-address:port} [monitor-address] recipe = slapos.cookbook:free_port minimum = 8035 maximum = 8055 ip = ${monitor-instance-parameter:monitor-httpd-ipv6} [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_earfcn = {{ default_dl_earfcn }} configuration.default_lte_dl_freq = {{ default_lte_dl_freq }} configuration.default_lte_band = {{ default_lte_band }} configuration.default_lte_n_rb_dl = {{ default_lte_n_rb_dl }} configuration.default_lte_tx_gain = {{ default_lte_tx_gain }} configuration.default_lte_rx_gain = {{ default_lte_rx_gain }} configuration.default_lte_inactivity_timer = {{ default_lte_inactivity_timer }} configuration.default_n_antenna_dl = {{ default_n_antenna_dl }} configuration.default_n_antenna_ul = {{ default_n_antenna_ul }} [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("enb_config_link", None) %} [enb-config-dl] recipe = slapos.recipe.build:download url = {{ slapparameter_dict.get("enb_config_link") }} version = {{ slapparameter_dict.get("enb_config_version") }} offline = false {% endif %} [lte-enb-sh-wrapper] recipe = slapos.recipe.template output = ${directory:bin}/${:_buildout_section_name_} enb-log = ${directory:log}/enb-output.log 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; (echo && echo && date "+[%Y/%m/%d %T.%N %Z] Starting eNB software..." && echo) >> ${:enb-log}; tail -c 1M ${:enb-log} > ${:enb-log}.tmp; mv ${:enb-log}.tmp ${:enb-log}; {{ enb }}/lteenb ${directory:etc}/enb.cfg >> ${:enb-log} 2>> ${:enb-log}; {% endif %} [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-enb-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 [amarisoft-rf-info-template] recipe = slapos.recipe.template:jinja2 extensions = jinja2.ext.do log-output = ${directory:var}/log/amarisoft-rf-info.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_rf_info_template }} output = ${directory:bin}/amarisoft-rf-info.py [lopcomm-rrh-stats-template] recipe = slapos.recipe.template:jinja2 extensions = jinja2.ext.do log-output = ${directory:var}/log/lopcomm-rrh-stats.log json-log-output = ${directory:var}/log/lopcomm-rrh-stats.json.log cfg-json-log-output = ${directory:var}/log/lopcomm-rrh-config.json.log context = section directory directory key slapparameter_dict slap-configuration:configuration key log_file :log-output key json_log_file :json-log-output key cfg_json_log_file :cfg-json-log-output raw testing {{ slapparameter_dict.get("testing", False) }} raw python_path {{ buildout_directory}}/bin/pythonwitheggs mode = 0775 url = {{ lopcomm_rrh_stats_template }} output = ${directory:bin}/lopcomm-rrh-stats.py [lopcomm-cu-config] <= config-base url = {{ cu_config_template }} output = ${directory:etc}/cu_config.xml [lopcomm-rrh-config-template] recipe = slapos.recipe.template:jinja2 extensions = jinja2.ext.do log-output = ${directory:var}/log/lopcomm-rrh-config.log context = section directory directory key slapparameter_dict slap-configuration:configuration key log_file :log-output raw testing {{ slapparameter_dict.get("testing", False) }} raw python_path {{ buildout_directory}}/bin/pythonwitheggs raw CreateProcessingEle_template {{ CreateProcessingEle_template }} key cu_config_template lopcomm-cu-config:output mode = 0775 url = {{ lopcomm_rrh_config_template }} output = ${directory:script}/lopcomm-rrh-config.py [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} [amarisoft-rf-info-service] recipe = slapos.cookbook:wrapper command-line = ${amarisoft-rf-info-template:output} wrapper-path = ${directory:service}/amarisoft-rf-info mode = 0775 hash-files = ${amarisoft-rf-info-template:output} [lopcomm-rrh-stats-service] recipe = slapos.cookbook:wrapper command-line = ${lopcomm-rrh-stats-template:output} wrapper-path = ${directory:service}/lopcomm-rrh-stats mode = 0775 hash-files = ${lopcomm-rrh-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 }} raw sib23 {{ sib23 }} import netaddr netaddr [lte-enb-config] <= config-base {% if slapparameter_dict.get("enb_config_link", None) %} url = ${enb-config-dl:target} {% else %} url = {{ enb_template }} {% endif %} output = ${directory:etc}/enb.cfg [publish-connection-information] <= monitor-publish recipe = slapos.cookbook:publish.serialised monitor-gadget-url = ${:monitor-base-url}/gadget/software.cfg.html [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 %} [macro.promise] <= monitor-promise-base name = ${:_buildout_section_name_} [check-cpu-temperature.py] <= macro.promise promise = check_cpu_temperature config-testing = {{ slapparameter_dict.get("testing", False) }} config-frequency = {{ slapparameter_dict.get("promise_cpu_temperature_frequency", 5) }} config-max-spot-temp = {{ slapparameter_dict.get("promise_cpu_max_spot_temp", 90) }} config-max-avg-temp = {{ slapparameter_dict.get("promise_cpu_max_avg_temp", 80) }} config-avg-temp-duration = {{ slapparameter_dict.get("promise_cpu_avg_temp_duration", 600) }} config-avg-flag-file = ${directory:var}/promise_cpu_avg_flag_file [check-sdr-busy.py] <= macro.promise promise = check_sdr_busy config-testing = {{ slapparameter_dict.get("testing", False) }} config-sdr = {{ sdr }} [check-baseband-latency.py] <= macro.promise promise = check_baseband_latency 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-min-txrx-delay = {{ slapparameter_dict.get("min_txrx_delay", 5) }} [check-amarisoft-stats-log.py] <= macro.promise promise = check_amarisoft_stats_log output = ${directory:plugins}/check-amarisoft-stats-log.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) }} [check-lopcomm-vswr.py] <= macro.promise promise = check_lopcomm_vswr config-testing = {{ slapparameter_dict.get("testing", False) }} config-netconf-log = ${lopcomm-rrh-stats-template:json-log-output} config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} [check-lopcomm-rssi.py] <= macro.promise promise = check_lopcomm_rssi config-testing = {{ slapparameter_dict.get("testing", False) }} config-netconf-log = ${lopcomm-rrh-stats-template:json-log-output} config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} [check-lopcomm-lof.py] <= macro.promise promise = check_lopcomm_lof config-testing = {{ slapparameter_dict.get("testing", False) }} config-netconf-log = ${lopcomm-rrh-stats-template:json-log-output} config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} [check-cpri-lock.py] <= macro.promise promise = check_cpri_lock config-testing = {{ slapparameter_dict.get("testing", False) }} config-amarisoft-rf-info-log = ${amarisoft-rf-info-template:log-output} config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }} [check-rx-saturated.py] <= macro.promise promise = check_rx_saturated 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) }}