[buildout] parts = directory lte-ue-config lte-ue-service check-sdr-busy.py monitor-base publish-connection-information extends = {{ monitor_template }} eggs-directory = {{ eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }} offline = true [myslap] # see instance-enb.jinja2.cfg about myslap parameter_dict = {{ dumps(slapparameter_dict) }} configuration = {{ dumps(slap_configuration) }} [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} [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 {% if slapparameter_dict.get("ue_config_link", None) %} [ue-config-dl] recipe = slapos.recipe.build:download url = {{ slapparameter_dict.get("ue_config_link") }} version = {{ slapparameter_dict.get("ue_config_version") }} offline = false {% endif %} [lte-ue-sh-wrapper] recipe = slapos.recipe.template output = ${directory:bin}/${:_buildout_section_name_} ue-log = ${directory:log}/ue-output.log inline = #!/bin/sh {% if not slapparameter_dict.get("testing", False) %} sudo /opt/amarisoft/rm-tmp-lte | true; (echo && echo && date "+[%Y/%m/%d %T.%N %Z] Starting UE software..." && echo) >> ${:ue-log}; tail -c 1M ${:ue-log} > ${:ue-log}.tmp; mv ${:ue-log}.tmp ${:ue-log}; {{ ue }}/lteue ${directory:etc}/ue.cfg >> ${:ue-log} 2>> ${:ue-log}; {% endif %} ### User Equipment (UE) [lte-ue-service] recipe = slapos.cookbook:wrapper command-line = ${lte-ue-sh-wrapper:output} wrapper-path = ${directory:service}/lte-ue mode = 0775 reserve-cpu = True pidfile = ${directory:run}/ue.pid hash-files = ${lte-ue-config:output} ${lte-ue-sh-wrapper:output} environment = LD_LIBRARY_PATH={{ openssl_location }}/lib AMARISOFT_PATH=/opt/amarisoft/.amarisoft [config-base] recipe = slapos.recipe.template:jinja2 extensions = jinja2.ext.do context = section directory directory section pub_info publish-connection-information key slap_configuration myslap:configuration key slapparameter_dict myslap:parameter_dict [lte-ue-config] <= config-base {% if slapparameter_dict.get("ue_config_link", None) %} url = ${ue-config-dl:target} {% else %} url = {{ ue_template }} {% endif %} output = ${directory:etc}/ue.cfg [publish-connection-information] <= monitor-publish recipe = slapos.cookbook:publish.serialised rue_bind_addr = {{my_ipv6}} com_addr = [{{my_ipv6}}]:9002 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-sdr-busy.py] <= macro.promise promise = check_sdr_busy config-testing = {{ slapparameter_dict.get("testing", False) }} config-sdr = {{ sdr }} config-sdr_dev = 0 config-dma_chan = 0