Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
105
Merge Requests
105
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
slapos
Commits
11df5d84
Commit
11df5d84
authored
Nov 03, 2023
by
Joanne Hugé
Browse files
Options
Browse Files
Download
Plain Diff
Update Release Candidate
parents
b27cfcb9
465fc24d
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
71 additions
and
287 deletions
+71
-287
software/ors-amarisoft/buildout.hash.cfg
software/ors-amarisoft/buildout.hash.cfg
+8
-12
software/ors-amarisoft/config/enb.jinja2.cfg
software/ors-amarisoft/config/enb.jinja2.cfg
+1
-1
software/ors-amarisoft/config/gnb.jinja2.cfg
software/ors-amarisoft/config/gnb.jinja2.cfg
+1
-0
software/ors-amarisoft/instance-core-network.jinja2.cfg
software/ors-amarisoft/instance-core-network.jinja2.cfg
+0
-11
software/ors-amarisoft/instance-enb.jinja2.cfg
software/ors-amarisoft/instance-enb.jinja2.cfg
+17
-12
software/ors-amarisoft/instance-gnb.jinja2.cfg
software/ors-amarisoft/instance-gnb.jinja2.cfg
+0
-10
software/ors-amarisoft/instance-ue-lte.jinja2.cfg
software/ors-amarisoft/instance-ue-lte.jinja2.cfg
+0
-10
software/ors-amarisoft/instance-ue-nr.jinja2.cfg
software/ors-amarisoft/instance-ue-nr.jinja2.cfg
+0
-10
software/ors-amarisoft/instance.cfg
software/ors-amarisoft/instance.cfg
+0
-5
software/ors-amarisoft/ltelogs.jinja2.sh
software/ors-amarisoft/ltelogs.jinja2.sh
+0
-23
software/ors-amarisoft/render-templates
software/ors-amarisoft/render-templates
+2
-2
software/ors-amarisoft/slapos-render-config.py
software/ors-amarisoft/slapos-render-config.py
+42
-187
software/ors-amarisoft/software-base.cfg
software/ors-amarisoft/software-base.cfg
+0
-4
No files found.
software/ors-amarisoft/buildout.hash.cfg
View file @
11df5d84
...
...
@@ -16,7 +16,7 @@
[template]
filename = instance.cfg
md5sum =
3919d261bdf366b7f7cc5149ab4c609d
md5sum =
f23909a703ac9001afec38cbac19591a
[amarisoft-stats.jinja2.py]
_update_hash_filename_ = amarisoft-stats.jinja2.py
...
...
@@ -56,23 +56,23 @@ md5sum = 63472d5dc9bd46923d3941b5189e2ccd
[template-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg
md5sum =
f61ba5e691bf263c8666e92f9eeef64
3
md5sum =
40f735514d8f4ead0d4328c58b78be9
3
[template-gnb]
_update_hash_filename_ = instance-gnb.jinja2.cfg
md5sum =
9575d69d3ea61842750b44ad67e92258
md5sum =
2d7558e4799818a5546850f735fbb399
[template-core-network]
_update_hash_filename_ = instance-core-network.jinja2.cfg
md5sum =
919340a049d628a86838453354c9efa2
md5sum =
aa7fcf7f68ced7e880158d0aa3307be4
[template-ue-lte]
_update_hash_filename_ = instance-ue-lte.jinja2.cfg
md5sum =
f6d8e97add6d11b0a5436744cb455195
md5sum =
b444f859248778e18c5eba60f5670f6c
[template-ue-nr]
_update_hash_filename_ = instance-ue-nr.jinja2.cfg
md5sum =
e57780260a1588d1dab29431c5e5ed97
md5sum =
bc65fdce1c453d92310d53928dcaaa7a
[template-obsolete]
_update_hash_filename_ = instance-obsolete.jinja2.cfg
...
...
@@ -84,7 +84,7 @@ md5sum = dcaac06553a3222b14c0013a13f4a149
[enb.jinja2.cfg]
filename = config/enb.jinja2.cfg
md5sum =
c1fef7cec616ba3594549090591a56d2
md5sum =
9e10632057d64068313267ecee999e97
[sib23.jinja2.asn]
filename = config/sib23.jinja2.asn
...
...
@@ -92,11 +92,7 @@ md5sum = a1973ba6e43d40e510d61d461c2d13ac
[gnb.jinja2.cfg]
filename = config/gnb.jinja2.cfg
md5sum = 075df4848e08ef8a595b33164238a0e7
[ltelogs.jinja2.sh]
filename = ltelogs.jinja2.sh
md5sum = 1ba2e065bdf14a6411e95e80db17dcfd
md5sum = 003bf8098175415c975a10c102df6b8c
[mme.jinja2.cfg]
filename = config/mme.jinja2.cfg
...
...
software/ors-amarisoft/config/enb.jinja2.cfg
View file @
11df5d84
...
...
@@ -358,7 +358,7 @@
dpc: true,
dpc_pusch_snr_target: 25,
dpc_pucch_snr_target: 2
0
,
dpc_pucch_snr_target: 2
5
,
cipher_algo_pref: [],
integ_algo_pref: [2, 1],
...
...
software/ors-amarisoft/config/gnb.jinja2.cfg
View file @
11df5d84
...
...
@@ -544,6 +544,7 @@
},
},
pusch: {
dpc_snr_target: 25,
mapping_type: "typeA",
n_symb: 14,
dmrs_add_pos: 1,
...
...
software/ors-amarisoft/instance-core-network.jinja2.cfg
View file @
11df5d84
...
...
@@ -37,7 +37,6 @@ info = DNS entry with has been attached to service ${slap-configuration:instance
[buildout]
parts =
directory
ltelogs
mme-config
mme-service
monitor-base
...
...
@@ -100,14 +99,6 @@ 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("mme_config_link", None) %}
[mme-config-dl]
recipe = slapos.recipe.build:download
...
...
@@ -119,7 +110,6 @@ offline = false
### IMS
[ims-service]
recipe = slapos.cookbook:wrapper
init = ${ltelogs:output} ${directory:log}/ims.log; sleep 1
command-line = {{ mme }}/lteims ${directory:etc}/ims.cfg
wrapper-path = ${directory:service}/ims
mode = 0775
...
...
@@ -148,7 +138,6 @@ inline =
recipe = slapos.cookbook:wrapper
# When the machine shutdowns abruptly, lte_ue is not cleaned up which causes
# amarisoft ltemme to fail. TODO: find a cleaner way to handle this
init = ${ltelogs:output} ${directory:log}/mme.log
command-line = ${mme-sh-wrapper:output}
wrapper-path = ${directory:service}/mme
mode = 0775
...
...
software/ors-amarisoft/instance-enb.jinja2.cfg
View file @
11df5d84
[buildout]
parts =
directory
ltelogs
enb-config
enb-service
xamari-xlog-service
...
...
@@ -35,7 +34,6 @@ parts =
check-lopcomm-sync.py
check-lopcomm-config-log.py
check-lopcomm-stats-log.py
check-cpri-lock.py
{% endif %}
{% if slapparameter_dict.get("dnsmasq", None) %}
dnsmasq-service
...
...
@@ -48,6 +46,7 @@ parts =
{% endif %}
monitor-base
publish-connection-information
{% set extra_part_list = [] %}
extends = {{ monitor_template }}
...
...
@@ -100,14 +99,6 @@ 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
...
...
@@ -143,7 +134,6 @@ inline =
[enb-service]
recipe = slapos.cookbook:wrapper
init = ${ltelogs:output} ${directory:log}/enb.log; sleep 2
command-line = ${enb-sh-wrapper:output}
wrapper-path = ${directory:service}/enb
mode = 0775
...
...
@@ -690,12 +680,21 @@ config-testing = {{ slapparameter_dict.get("testing", False) }}
config-config-log = ${lopcomm-rrh-config-template:log-output}
config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }}
[check-cpri-lock.py]
{% if ru == "lopcomm" %}
{%- set cell_list = slapparameter_dict.get('cell_list', {'default': {}}) %}
{%- for i, k in enumerate(cell_list) %}
{%- set sfp_port = cell_list[k].get('cpri_port_number', i) %}
{%- do extra_part_list.append('SFP%s-cpri-lock.py' % sfp_port) %}
[SFP{{sfp_port}}-cpri-lock.py]
<= macro.promise
promise = check_cpri_lock
config-testing = {{ slapparameter_dict.get("testing", False) }}
config-sdr_dev = {{ slapparameter_dict.get('sdr_number', 0) }}
config-sfp_port = {{ sfp_port }}
config-amarisoft-rf-info-log = ${amarisoft-rf-info-template:log-output}
config-stats-period = {{ slapparameter_dict.get("enb_stats_fetch_period", 60) }}
{%- endfor %}
{% endif %}
[check-rx-saturated.py]
<= macro.promise
...
...
@@ -705,3 +704,9 @@ config-rf-rx-chan-list = {{ list(range(0, int(slapparameter_dict.get('n_antenna_
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) }}
[buildout]
parts +=
{%- for part in extra_part_list %}
{{ part }}
{%- endfor %}
software/ors-amarisoft/instance-gnb.jinja2.cfg
View file @
11df5d84
[buildout]
parts =
directory
ltelogs
gnb-config
enb-service
xamari-xlog-service
...
...
@@ -70,14 +69,6 @@ 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
...
...
@@ -106,7 +97,6 @@ inline =
### eNodeB (enb)
[enb-service]
recipe = slapos.cookbook:wrapper
init = ${ltelogs:output} ${directory:log}/enb.log; sleep 2
command-line = ${enb-sh-wrapper:output}
wrapper-path = ${directory:service}/enb
mode = 0775
...
...
software/ors-amarisoft/instance-ue-lte.jinja2.cfg
View file @
11df5d84
[buildout]
parts =
directory
ltelogs
lte-ue-lte-config
lte-ue-service
check-sdr-busy.py
...
...
@@ -57,14 +56,6 @@ 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("ue_lte_config_link", None) %}
[ue-lte-config-dl]
recipe = slapos.recipe.build:download
...
...
@@ -90,7 +81,6 @@ inline =
### User Equipment (UE)
[lte-ue-service]
recipe = slapos.cookbook:wrapper
init = ${ltelogs:output} ${directory:log}/ue.log; sleep 2
command-line = ${lte-ue-sh-wrapper:output}
wrapper-path = ${directory:service}/lte-ue
mode = 0775
...
...
software/ors-amarisoft/instance-ue-nr.jinja2.cfg
View file @
11df5d84
[buildout]
parts =
directory
ltelogs
lte-ue-nr-config
lte-ue-service
check-sdr-busy.py
...
...
@@ -57,14 +56,6 @@ 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("ue_nr_config_link", None) %}
[ue-nr-config-dl]
recipe = slapos.recipe.build:download
...
...
@@ -90,7 +81,6 @@ inline =
### User Equipment (UE)
[lte-ue-service]
recipe = slapos.cookbook:wrapper
init = ${ltelogs:output} ${directory:log}/ue.log; sleep 2
command-line = ${lte-ue-sh-wrapper:output}
wrapper-path = ${directory:service}/lte-ue
mode = 0775
...
...
software/ors-amarisoft/instance.cfg
View file @
11df5d84
...
...
@@ -268,7 +268,6 @@ extra-context =
key sdr amarisoft:sdr
raw enb_template ${enb.jinja2.cfg:target}
raw sib23_template ${sib23.jinja2.asn:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw amarisoft_stats_template ${amarisoft-stats.jinja2.py:target}
raw amarisoft_rf_info_template ${amarisoft-rf-info.jinja2.py:target}
raw lopcomm_rrh_stats_template ${lopcomm-rrh-stats.jinja2.py:target}
...
...
@@ -305,7 +304,6 @@ extra-context =
key enb amarisoft:enb
key sdr amarisoft:sdr
raw gnb_template ${gnb.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw amarisoft_stats_template ${amarisoft-stats.jinja2.py:target}
raw amarisoft_rf_info_template ${amarisoft-rf-info.jinja2.py:target}
raw openssl_location ${openssl:location}
...
...
@@ -330,7 +328,6 @@ extra-context =
raw mme_template ${mme.jinja2.cfg:target}
raw dnsmasq_template ${dnsmasq.jinja2.cfg:target}
raw ims_template ${ims.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw openssl_location ${openssl:location}
raw nghttp2_location ${nghttp2:location}
raw iperf3_location ${iperf3:location}
...
...
@@ -349,7 +346,6 @@ extra-context =
key ue amarisoft:ue
key sdr amarisoft:sdr
raw ue_lte_template ${ue-lte.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw openssl_location ${openssl:location}
raw default_lte_bandwidth ${default-params:default-lte-bandwidth}
raw default_n_antenna_dl ${default-params:default-n-antenna-dl}
...
...
@@ -367,7 +363,6 @@ extra-context =
key ue amarisoft:ue
key sdr amarisoft:sdr
raw ue_nr_template ${ue-nr.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw openssl_location ${openssl:location}
raw default_nr_bandwidth ${default-params:default-nr-bandwidth}
raw default_n_antenna_dl ${default-params:default-n-antenna-dl}
...
...
software/ors-amarisoft/ltelogs.jinja2.sh
deleted
100755 → 0
View file @
b27cfcb9
#!/bin/bash
# Copyright (C) 2012-2015 Amarisoft
# LTE system logger version 2016-10-13
# Path for multi environment support
export
PATH
=
"
$PATH
:/bin/:/usr/bin/:/usr/local/bin"
while
[
"
$1
"
!=
""
]
;
do
if
[
-e
"
$1
"
]
;
then
# Avoid storing logs with comments only
HAS_LOG
=
$(
grep
-v
-l
"#"
$1
)
if
[
"
$HAS_LOG
"
!=
""
]
;
then
DATE
=
$(
date
-u
+%Y%m%d.%H:%M:%S |
sed
-e
"s/ /-/g"
)
FILE
=
$(
basename
$1
)
mv
$1
"{{ directory['log'] }}/
${
FILE
}
.
${
DATE
}
"
else
rm
-f
$1
fi
fi
shift
done
software/ors-amarisoft/render-templates
View file @
11df5d84
...
...
@@ -12,10 +12,10 @@ if args.delete:
directory
=
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
))
test_directory
=
os
.
path
.
join
(
directory
,
'test'
)
for
f
in
os
.
listdir
(
directory
):
if
'tdd'
in
f
:
if
'tdd'
in
f
or
'fdd'
in
f
:
os
.
remove
(
os
.
path
.
join
(
directory
,
f
))
for
f
in
os
.
listdir
(
test_directory
):
if
'testTDD'
in
f
:
if
'testTDD'
in
f
or
'testFDD'
in
f
:
os
.
remove
(
os
.
path
.
join
(
test_directory
,
f
))
exit
()
...
...
software/ors-amarisoft/slapos-render-config.py
View file @
11df5d84
# Program slapos-render-config is handy during config/ templates development.
#
# It mimics the way config files are generated during the build but runs much
# faster compared to full `slapos node software` + `slapos node instance` runs.
import
zc.buildout.buildout
# XXX workaround for https://lab.nexedi.com/nexedi/slapos.recipe.template/merge_requests/9
from
slapos.recipe.template
import
jinja2_template
import
json
# j2render renders config/<cfg>.jinja2.cfg into config/<cfg>.cfg with provided json parameters.
def
j2render
(
cfg
,
jcfg
):
ctx
=
json
.
loads
(
jcfg
)
textctx
=
''
for
k
,
v
in
ctx
.
items
():
textctx
+=
'json %s %s
\
n
'
%
(
k
,
json
.
dumps
(
v
))
buildout
=
None
# stub
r
=
jinja2_template
.
Recipe
(
buildout
,
"recipe"
,
{
'extensions'
:
'jinja2.ext.do'
,
'url'
:
'config/{}.jinja2.cfg'
.
format
(
cfg
),
'output'
:
'config/{}.cfg'
.
format
(
cfg
),
'context'
:
textctx
,
})
#print(r.context)
# avoid dependency on zc.buildout.download and the need to use non-stub buildout section
def
_read
(
url
,
*
args
):
with
open
(
url
,
*
args
)
as
f
:
return
f
.
read
()
r
.
_read
=
_read
with
open
(
'config/{}.cfg'
.
format
(
cfg
),
'w+'
)
as
f
:
f
.
write
(
r
.
_render
().
decode
())
config
=
"gnb"
json_params_empty
=
"""{
"rf_mode": 'fdd',
...
...
@@ -32,7 +68,11 @@ json_params = """{
"configuration.default_nr_ssb_pos_bitmap": "10000000",
"configuration.default_n_antenna_dl": 2,
"configuration.default_n_antenna_ul": 2,
"configuration.default_nr_inactivity_timer": 10000
"configuration.default_nr_inactivity_timer": 10000,
"configuration.com_ws_port": 9001,
"configuration.com_addr": "127.0.1.2",
"configuration.amf_addr": "127.0.1.100",
"configuration.gtp_addr": "127.0.1.1"
},
"directory": {
"log": "log",
...
...
@@ -43,190 +83,5 @@ json_params = """{
"tdd_ul_dl_config": "5ms 8UL 1DL 2/10 (maximum uplink)"
}
}"""
import
os
import
json
from
jinja2
import
Environment
,
StrictUndefined
,
\
BaseLoader
,
TemplateNotFound
,
PrefixLoader
import
six
DEFAULT_CONTEXT
=
{
x
.
__name__
:
x
for
x
in
(
abs
,
all
,
any
,
bin
,
bool
,
bytes
,
callable
,
chr
,
complex
,
dict
,
divmod
,
enumerate
,
filter
,
float
,
format
,
frozenset
,
hex
,
int
,
isinstance
,
iter
,
len
,
list
,
map
,
max
,
min
,
next
,
oct
,
ord
,
pow
,
range
,
repr
,
reversed
,
round
,
set
,
six
,
sorted
,
str
,
sum
,
tuple
,
zip
)}
if
six
.
PY2
:
import
itertools
DEFAULT_CONTEXT
.
update
(
filter
=
itertools
.
ifilter
,
map
=
itertools
.
imap
,
range
=
xrange
,
zip
=
itertools
.
izip
,
)
def
_assert
(
x
,
*
args
):
if
x
:
return
""
raise
AssertionError
(
*
args
)
DEFAULT_CONTEXT
[
'assert'
]
=
_assert
DUMPS_KEY
=
'dumps'
DEFAULT_IMPORT_DELIMITER
=
'/'
def
getKey
(
expression
,
buildout
,
_
,
options
):
section
,
entry
=
expression
.
split
(
':'
)
if
section
:
return
buildout
[
section
][
entry
]
else
:
return
options
[
entry
]
def
getJsonKey
(
expression
,
buildout
,
_
,
__
):
return
json
.
loads
(
getKey
(
expression
,
buildout
,
_
,
__
))
EXPRESSION_HANDLER
=
{
'raw'
:
(
lambda
expression
,
_
,
__
,
___
:
expression
),
'key'
:
getKey
,
'json'
:
(
lambda
expression
,
_
,
__
,
___
:
json
.
loads
(
expression
)),
'jsonkey'
:
getJsonKey
,
'import'
:
(
lambda
expression
,
_
,
__
,
___
:
__import__
(
expression
,
fromlist
=
[
'*'
],
level
=
0
)),
'section'
:
(
lambda
expression
,
buildout
,
_
,
__
:
dict
(
buildout
[
expression
])),
}
class
RelaxedPrefixLoader
(
PrefixLoader
):
"""
Same as PrefixLoader, but accepts imports lacking separator.
"""
def
get_loader
(
self
,
template
):
if
self
.
delimiter
not
in
template
:
template
+=
self
.
delimiter
return
super
(
RelaxedPrefixLoader
,
self
).
get_loader
(
template
)
class
RecipeBaseLoader
(
BaseLoader
):
"""
Base class for import classes altering import path.
"""
def
__init__
(
self
,
path
,
delimiter
,
encoding
):
self
.
base
=
os
.
path
.
normpath
(
path
)
self
.
delimiter
=
delimiter
self
.
encoding
=
encoding
def
get_source
(
self
,
environment
,
template
):
path
=
self
.
_getPath
(
template
)
# Code adapted from jinja2's doc on BaseLoader.
if
path
is
None
or
not
os
.
path
.
exists
(
path
):
raise
TemplateNotFound
(
template
)
mtime
=
os
.
path
.
getmtime
(
path
)
with
open
(
path
,
'rb'
)
as
f
:
source
=
f
.
read
().
decode
(
self
.
encoding
)
return
source
,
path
,
lambda
:
mtime
==
os
.
path
.
getmtime
(
path
)
def
_getPath
(
self
,
template
):
raise
NotImplementedError
class
FileLoader
(
RecipeBaseLoader
):
"""
Single-path loader.
"""
def
_getPath
(
self
,
template
):
if
template
:
return
None
return
self
.
base
class
FolderLoader
(
RecipeBaseLoader
):
"""
Multi-path loader (to allow importing a folder's content).
"""
def
_getPath
(
self
,
template
):
path
=
os
.
path
.
normpath
(
os
.
path
.
join
(
self
.
base
,
*
template
.
split
(
self
.
delimiter
)
))
if
path
.
startswith
(
self
.
base
):
return
path
return
None
LOADER_TYPE_DICT
=
{
'rawfile'
:
(
FileLoader
,
EXPRESSION_HANDLER
[
'raw'
]),
'file'
:
(
FileLoader
,
getKey
),
'rawfolder'
:
(
FolderLoader
,
EXPRESSION_HANDLER
[
'raw'
]),
'folder'
:
(
FolderLoader
,
getKey
),
}
compiled_source_cache
=
{}
class
Recipe
():
def
_init
(
self
,
name
,
options
):
self
.
once
=
options
.
get
(
'once'
)
self
.
encoding
=
options
.
get
(
'encoding'
,
'utf-8'
)
self
.
_update
=
True
import_delimiter
=
options
.
get
(
'import-delimiter'
,
DEFAULT_IMPORT_DELIMITER
)
import_dict
=
{}
for
line
in
options
.
get
(
'import-list'
,
''
).
splitlines
(
False
):
if
not
line
:
continue
expression_type
,
alias
,
expression
=
line
.
split
(
None
,
2
)
if
alias
in
import_dict
:
raise
ValueError
(
'Duplicate import-list entry %r'
%
alias
)
loader_type
,
expression_handler
=
LOADER_TYPE_DICT
[
expression_type
]
import_dict
[
alias
]
=
loader_type
(
expression_handler
(
expression
,
*
args
),
import_delimiter
,
self
.
encoding
,
)
if
import_dict
:
loader
=
RelaxedPrefixLoader
(
import_dict
,
delimiter
=
import_delimiter
)
else
:
loader
=
None
self
.
template
=
options
[
'url'
]
extension_list
=
[
x
for
x
in
(
y
.
strip
()
for
y
in
options
.
get
(
'extensions'
,
''
).
split
())
if
x
]
self
.
context
=
options
[
'context'
]
self
.
context
.
update
(
DEFAULT_CONTEXT
.
copy
())
self
.
env
=
Environment
(
extensions
=
extension_list
,
undefined
=
StrictUndefined
,
loader
=
loader
)
def
_render
(
self
):
env
=
self
.
env
template
=
self
.
template
with
open
(
template
,
'rb'
)
as
f
:
source
=
f
.
read
().
decode
(
self
.
encoding
)
compiled_source_cache
[
template
]
=
compiled_source
=
\
env
.
compile
(
source
,
filename
=
template
)
template_object
=
env
.
template_class
.
from_code
(
env
,
compiled_source
,
env
.
make_globals
(
None
),
None
)
print
(
self
.
context
)
return
template_object
.
render
(
**
self
.
context
).
encode
(
self
.
encoding
)
def
install
(
self
):
once
=
self
.
once
if
once
and
os
.
path
.
exists
(
once
):
return
installed
=
super
(
Recipe
,
self
).
install
()
if
once
:
open
(
once
,
'ab'
).
close
()
return
return
installed
def
update
(
self
):
if
self
.
_update
:
self
.
install
()
else
:
super
(
Recipe
,
self
).
update
()
r
=
Recipe
()
r
.
_init
(
"recipe"
,
{
'extensions'
:
'jinja2.ext.do'
,
'url'
:
'config/{}.jinja2.cfg'
.
format
(
config
),
'output'
:
'config/{}.cfg'
.
format
(
config
),
'context'
:
json
.
loads
(
json_params
),
})
with
open
(
'config/{}.cfg'
.
format
(
config
),
'w+'
)
as
f
:
f
.
write
(
r
.
_render
().
decode
())
j2render
(
config
,
json_params
)
software/ors-amarisoft/software-base.cfg
View file @
11df5d84
...
...
@@ -19,7 +19,6 @@ extends =
parts +=
template
slapos-cookbook
ltelogs.jinja2.sh
ncclient_common
# copy all configs by default
mme.jinja2.cfg
...
...
@@ -149,9 +148,6 @@ filename = sib23.jinja2.asn
[gnb.jinja2.cfg]
<= copy-config-to-instance
filename = gnb.jinja2.cfg
[ltelogs.jinja2.sh]
<= copy-to-instance
filename = ltelogs.jinja2.sh
[ue_db.jinja2.cfg]
<= copy-config-to-instance
filename = ue_db.jinja2.cfg
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment