libinstance.jinja2.cfg 4.56 KB
Newer Older
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
1 2
{#- Package ru/lopcomm/libinstance provides instance code for handling Lopcomm ORAN Radio Units. #}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
3
{%- macro buildout_iru(iru)  %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
4 5 6
{%-  set ru_ref = J(jref_of_shared(iru))  %}
{%-  set ru     = iru['_']  %}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
7 8 9 10 11 12 13 14
{#-  indicate whether we can connect to RU via netconf #}

{{ promise('%s-netconf-socket.py' % ru_ref) }}
promise = check_socket_listening
config-host = ${slap-configuration:tap-ipv6-gateway}
config-port = 830


Kirill Smelkov's avatar
.  
Kirill Smelkov committed
15
{#-  push firmware to RU #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
16 17 18 19

[{{ru_ref}}-software-template]
recipe = slapos.recipe.template:jinja2
extensions = jinja2.ext.do
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
20
_logbase = ${directory:var}/log/{{ru_ref}}-software
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
21 22
log-output = ${:_logbase}.log
software-reply-json-log-output = ${:_logbase}-reply.json.log
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
23
remote-file-path = sftp://${user-info:pw-name}@[${slap-configuration:ipv6-random}]:${sshd-port:port}${ru_lopcomm_firmware-dl:destination}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
24 25 26 27 28 29 30 31 32 33 34
context =
  section directory directory
  section slap_configuration slap-configuration
  key slapparameter_dict slap-configuration:configuration
  key log_file :log-output
  key software_reply_json_log_file :software-reply-json-log-output
  key remote_file_path :remote-file-path
  raw testing {{ slapparameter_dict.get("testing", False) }}
  raw python_path {{ buildout_directory}}/bin/pythonwitheggs
  raw buildout_directory_path {{ buildout_directory }}
  raw is_firmware_updated ${directory:etc}/{{ru_ref}}.is_firmware_updated
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
35
  raw firmware_name ${ru_lopcomm_firmware-dl:filename}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
36 37 38 39 40
  import netaddr netaddr
mode = 0775
url = {{ ru_lopcomm_software_template }}
output = ${directory:script}/{{ru_ref}}-software.py

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
41 42
# TODO part('%s-software-service' % ru_ref)

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
43
{{ promise('%s-firmware.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
44
promise = check_command_execute
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
45
config-command = [ -f ${directory:etc}/{{ru_ref}}.is_firmware_updated ]
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
46 47


Kirill Smelkov's avatar
.  
Kirill Smelkov committed
48
{#-  push config to RU #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
49

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
50
{%   if ru.get("cu_config_link", None) %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
51 52 53 54 55
[{{ru_ref}}-cu-config-dl]
recipe = slapos.recipe.build:download
url = {{ ru.cu_config_link }}
version = {{ ru.get("cu_config_version") }}
offline = false
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
56 57 58 59 60 61 62 63
{%   endif %}

[{{ru_ref}}-cu-config]
<= config-base
{% if ru.get("cu_config_link", None) %}
url = ${ {{- ru_ref}}-cu-config-dl:target}
{% else %}
url = {{ ru_lopcomm_cu_config_template }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
64
{% endif %}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
65 66
output = ${directory:etc}/{{ru_ref}}-cu_config.xml

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
67

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
68 69 70


{#-  handle notifications from RU #}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
71

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
72 73 74
[{{ru_ref}}-stats-template]
recipe = slapos.recipe.template:jinja2
extensions = jinja2.ext.do
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
75 76 77 78 79 80 81
_logbase = ${directory:var}/log/{{ru_ref}}
log-output = ${:_logbase}-stats.log
json-log-output = ${:_logbase}-stats.json.log
cfg-json-log-output = ${:_logbase}-config.json.log
supervision-json-log-output = ${:_logbase}-supervision.json.log
ncsession-json-log-output = ${:_logbase}-ncsession.json.log
software-json-log-output = ${:_logbase}-software.json.log
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
context =
  section directory directory
  section slap_configuration slap-configuration
  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
  key supervision_json_log_file :supervision-json-log-output
  key ncsession_json_log_file :ncsession-json-log-output
  key software_json_log_file :software-json-log-output
  raw testing {{ slapparameter_dict.get("testing", False) }}
  raw python_path {{ buildout_directory}}/bin/pythonwitheggs
  raw buildout_directory_path {{ buildout_directory }}
  import netaddr netaddr
mode = 0775
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
97
url = {{ ru_lopcomm_stats_template }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
98 99 100 101 102 103 104 105 106 107
output = ${directory:bin}/{{ru_ref}}-stats.py

{{ part('%s-stats-service' % ru_ref) }}
recipe = slapos.cookbook:wrapper
command-line = ${ {{- ru_ref}}-stats-template:output}
wrapper-path = ${directory:service}/{{ru_ref}}-stats
mode = 0775
hash-files =
  ${:command-line}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
108
{{ promise('%s-vswr.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
109 110 111
promise = check_lopcomm_vswr
config-netconf-log = ${ {{- ru_ref}}-stats-template:json-log-output}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
112
{{ promise('%s-pa-current.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
113 114 115
promise = check_lopcomm_pa_current
config-netconf-log = ${ {{- ru_ref}}-stats-template:json-log-output}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
116
{{ promise('%s-pa-output-power.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
117 118 119
promise = check_lopcomm_pa_output_power
config-netconf-log = ${ {{- ru_ref}}-stats-template:json-log-output}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
120
{{ promise('%s-lof.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
121 122 123
promise = check_lopcomm_lof
config-netconf-log = ${ {{- ru_ref}}-stats-template:json-log-output}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
124
{{ promise('%s-rssi.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
125 126 127
promise = check_lopcomm_rssi
config-netconf-log = ${ {{- ru_ref}}-stats-template:json-log-output}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
128
{{ promise('%s-sync.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
129 130 131
promise = check_lopcomm_sync
config-netconf-log = ${ {{- ru_ref}}-stats-template:json-log-output}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
132
{{ promise('%s-stats-log.py' % ru_ref) }}
Kirill Smelkov's avatar
.  
Kirill Smelkov committed
133 134 135
promise = check_lopcomm_stats_log
config-stats-log = ${ {{- ru_ref}}-stats-template:log-output}

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
136

Kirill Smelkov's avatar
.  
Kirill Smelkov committed
137
{%- endmacro  %}