Commit 3e7fa910 authored by Jérome Perrin's avatar Jérome Perrin

Merge remote-tracking branch 'upstream/master' into zope4py2

parents 9e9e4507 776d4d77
Pipeline #23974 failed with stage
in 0 seconds
......@@ -16,7 +16,7 @@
[template]
filename = instance.cfg
md5sum = f0a12f3abc25713f5c79c9bf13290340
md5sum = 8b275dc35fdb169eca6b087bc32a9286
[template-lte-enb-epc]
_update_hash_filename_ = instance-enb-epc.jinja2.cfg
......@@ -42,6 +42,14 @@ md5sum = 7acdbad30c130faa3bce49b04b2c0c2f
_update_hash_filename_ = instance-mme.jinja2.cfg
md5sum = 728f4d3ae248710c23e4b73eea4d628e
[template-lte-ue-lte]
_update_hash_filename_ = instance-ue-lte.jinja2.cfg
md5sum = 0808194507345550abc37118129fb757
[template-lte-ue-nr]
_update_hash_filename_ = instance-ue-nr.jinja2.cfg
md5sum = ed4112748616803ec0eb3c30bde80856
[ue_db.jinja2.cfg]
filename = config/ue_db.jinja2.cfg
md5sum = dcaac06553a3222b14c0013a13f4a149
......@@ -70,6 +78,14 @@ md5sum = 21e24367dd8213a00f6c777df33d5c03
filename = config/ims.jinja2.cfg
md5sum = 36281b03597252cf75169417d02fc28c
[ue-lte.jinja2.cfg]
filename = config/ue-lte.jinja2.cfg
md5sum = ee034558efb3e1fad4687fcd2f448872
[ue-nr.jinja2.cfg]
filename = config/ue-nr.jinja2.cfg
md5sum = 2082bcb28d9be653225ce6db46dc236a
[sdr-busy-promise]
_update_hash_filename_ = promise/check_sdr_busy.jinja2.py
md5sum = 93dacb1da15310eb70d0815711a06cdf
......
{
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null",
log_filename: "{{ directory['log'] }}/ue.log",
rue_bind_addr: "{{ pub_info['rue_bind_addr'] }}",
com_addr: "{{ pub_info['com_addr'] }}",
rf_driver: {
name: "sdr",
args: "dev0=/dev/sdr0",
rx_antenna:"tx_rx",
},
tx_gain: {{ slapparameter_dict.get('tx_gain', slap_configuration['configuration.default_lte_tx_gain']) }},
rx_gain: {{ slapparameter_dict.get('rx_gain', slap_configuration['configuration.default_lte_rx_gain']) }},
cell_groups: [{
multi_ue: true,
cells: [
{
bandwidth: {{ slapparameter_dict.get('n_rb_dl', slap_configuration['configuration.default_lte_n_rb_dl']) }},
dl_earfcn: {{ slapparameter_dict.get('dl_earfcn', slap_configuration['configuration.default_dl_earfcn']) }},
n_antenna_dl: {{ slapparameter_dict.get('n_antenna_dl', slap_configuration['configuration.default_n_antenna_dl']) }},
n_antenna_ul: {{ slapparameter_dict.get('n_antenna_ul', slap_configuration['configuration.default_n_antenna_ul']) }},
global_timing_advance: -1,
}
],
pdcch_decode_opt: false,
pdcch_decode_opt_threshold: 0.1,
}],
ue_list: [
{
imsi: "{{ slapparameter_dict.get('imsi', slap_configuration['configuration.default_lte_imsi']) }}",
K: "{{ slapparameter_dict.get('k', slap_configuration['configuration.default_lte_k']) }}",
rue_addr: "{{ slapparameter_dict.get('rue_addr') }}",
ue_category: 12,
tun_setup_script: "ue-ifup",
apn: "internet",
}
],
}
{
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1,phy.level=info,file.rotate=1G,file.path=/dev/null",
log_filename: "{{ directory['log'] }}/ue.log",
rue_bind_addr: "{{ pub_info['rue_bind_addr'] }}",
com_addr: "{{ pub_info['com_addr'] }}",
rf_driver: {
name: "sdr",
args: "dev0=/dev/sdr0",
rx_antenna:"tx_rx",
},
tx_gain: {{ slapparameter_dict.get('tx_gain', slap_configuration['configuration.default_nr_tx_gain']) }},
rx_gain: {{ slapparameter_dict.get('rx_gain', slap_configuration['configuration.default_nr_rx_gain']) }},
cell_groups: [{
group_type: "nr",
multi_ue: false,
cells: [{
rf_port: 0,
bandwidth: {{ slapparameter_dict.get('nr_bandwidth', slap_configuration['configuration.default_nr_bandwidth']) }},
band: {{ slapparameter_dict.get('nr_band', slap_configuration['configuration.default_nr_band']) }},
dl_nr_arfcn: {{ slapparameter_dict.get('dl_nr_arfcn', slap_configuration['configuration.default_dl_nr_arfcn']) }},
ssb_nr_arfcn: {{ slapparameter_dict.get('ssb_nr_arfcn', slap_configuration['configuration.default_ssb_nr_arfcn']) }},
subcarrier_spacing: 30,
n_antenna_dl: {{ slapparameter_dict.get('n_antenna_dl', slap_configuration['configuration.default_n_antenna_dl']) }},
n_antenna_ul: {{ slapparameter_dict.get('n_antenna_ul', slap_configuration['configuration.default_n_antenna_ul']) }},
}
],
}],
ue_list: [
{
imsi: "{{ slapparameter_dict.get('imsi', slap_configuration['configuration.default_nr_imsi']) }}",
K: "{{ slapparameter_dict.get('k', slap_configuration['configuration.default_nr_k']) }}",
rue_addr: "{{ slapparameter_dict.get('rue_addr') }}",
as_release: 15,
ue_category: "nr",
tun_setup_script: "ue-ifup",
apn: "internet",
}
]
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 38350
},
"n_rb_dl": {
"title": "DL RB",
"description": "number of DL resource blocks",
"type": "number",
"default": 100
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 378000
},
"nr_band": {
"title": "NR band",
"description": "NR band number",
"type": "number",
"default": 39
},
"nr_bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number",
"default": 377790
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 38050
},
"n_rb_dl": {
"title": "DL RB",
"description": "number of DL resource blocks",
"type": "number",
"default": 100
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 520000
},
"nr_band": {
"title": "NR band",
"description": "NR band number",
"type": "number",
"default": 38
},
"nr_bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number",
"default": 517930
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 42590
},
"n_rb_dl": {
"title": "DL RB",
"description": "number of DL resource blocks",
"type": "number",
"default": 100
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 632628
},
"nr_band": {
"title": "NR band",
"description": "NR band number",
"type": "number",
"default": 78
},
"nr_bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number",
"default": 632544
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 44590
},
"n_rb_dl": {
"title": "DL RB",
"description": "number of DL resource blocks",
"type": "number",
"default": 100
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": 78
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": 40
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": 646666
},
"nr_band": {
"title": "NR band",
"description": "NR band number",
"type": "number",
"default": 78
},
"nr_bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": 40
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number",
"default": 646656
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": 2
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "001010123456789"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "00112233445566778899aabbccddeeff"
}
}
}
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": {{ default_lte_tx_gain }}
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": {{ default_lte_rx_gain }}
},
"dl_earfcn": {
"title": "DL EARFCN",
"description": "Downlink E-UTRA Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": {{ default_dl_earfcn }}
},
"n_rb_dl": {
"title": "DL RB",
"description": "number of DL resource blocks",
"type": "number",
"default": {{ default_lte_n_rb_dl }}
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_dl }}
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_ul }}
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "{{ default_lte_imsi }}"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "{{ default_lte_k }}"
}
}
}
[buildout]
parts =
directory
ltelogs
lte-ue-lte-config
lte-ue-service
sdr-busy-promise
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.default_dl_earfcn = {{ default_dl_earfcn }}
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_n_antenna_dl = {{ default_n_antenna_dl }}
configuration.default_n_antenna_ul = {{ default_n_antenna_ul }}
configuration.default_lte_imsi = {{ default_lte_imsi }}
configuration.default_lte_k = {{default_lte_k}}
[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("ue_lte_config_link", None) %}
[ue-lte-config-dl]
recipe = slapos.recipe.build:download
url = {{ slapparameter_dict.get("ue_lte_config_link") }}
version = {{ slapparameter_dict.get("ue_lte_config_version") }}
offline = false
{% endif %}
[lte-ue-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 | true;
{{ ue }}/lteue ${directory:etc}/ue.cfg >> ${directory:log}/ue-output.log 2>> ${directory:log}/ue-output.log
{% endif %}
### 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
reserve-cpu = True
pidfile = ${directory:run}/ue.pid
hash-files =
${lte-ue-lte-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 slap_configuration slap-configuration
section pub_info publish-connection-information
key slapparameter_dict slap-configuration:configuration
[lte-ue-lte-config]
<= config-base
{% if slapparameter_dict.get("ue_lte_config_link", None) %}
url = ${ue-lte-config-dl:target}
{% else %}
url = {{ ue_lte_template }}
{% endif %}
output = ${directory:etc}/ue.cfg
[publish-connection-information]
<= monitor-publish
recipe = slapos.cookbook:publish.serialised
rue_bind_addr = ${slap-configuration:ipv6-random}
com_addr = [${slap-configuration:ipv6-random}]:9002
[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-template]
recipe = slapos.recipe.template:jinja2
url = {{ sdr_busy_promise }}
output = ${directory:etc}/check-sdr-busy.py
extensions = jinja2.ext.do
context =
key slapparameter_dict slap-configuration:configuration
# Add custom promise to check if /dev/sdr0 is busy
[sdr-busy-promise]
recipe = slapos.cookbook:promise.plugin
eggs = slapos.core
file = ${sdr-busy-promise-template:output}
output = ${directory:plugins}/check-sdr-busy.py
{
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema",
"title": "Input Parameters",
"properties": {
"rue_addr": {
"title": "[Required] Remote UE address",
"description": "[Required] Address of remote UE server. Default port is 2152.",
"type": "string",
"default": ""
},
"tx_gain": {
"title": "Tx gain",
"description": "Tx gain (in dB)",
"type": "number",
"default": {{ default_nr_tx_gain }}
},
"rx_gain": {
"title": "Rx gain",
"description": "Rx gain (in dB)",
"type": "number",
"default": {{ default_nr_rx_gain }}
},
"dl_nr_arfcn": {
"title": "DL NR ARFCN",
"description": "Downlink NR Absolute Radio Frequency Channel Number of the cell",
"type": "number",
"default": {{ default_dl_nr_arfcn }}
},
"nr_band": {
"title": "NR band",
"description": "NR band number",
"type": "number",
"default": {{ default_nr_band }}
},
"nr_bandwidth": {
"title": "Bandwidth",
"description": "Downlink Bandwidth (in MHz)",
"type": "number",
"default": {{ default_nr_bandwidth }}
},
"ssb_nr_arfcn": {
"title": "SSB NR ARFCN",
"description": "SSB NR ARFCN, you can retrieve from ENB/GNB side",
"type": "number",
"default": {{ default_ssb_nr_arfcn }}
},
"n_antenna_dl": {
"title": "Number of DL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of DL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_dl }}
},
"n_antenna_ul": {
"title": "Number of UL antennas",
"description": "Enumeration: 1, 2, 4 or 8. Number of UL antennas. It must be the same for all NB-IoT and LTE cells sharing the same RF port.",
"type": "number",
"default": {{ default_n_antenna_ul }}
},
"imsi": {
"title": "IMSI",
"description": "IMSI",
"type": "string",
"default": "{{ default_nr_imsi }}"
},
"k": {
"title": "K",
"description": "Set the user secret key (as a 16 bytes hexadecimal string, or eventually 32 bytes hexadecimal string for TUAK).",
"type": "string",
"default": "{{ default_nr_k }}"
}
}
}
[buildout]
parts =
directory
ltelogs
lte-ue-nr-config
lte-ue-service
sdr-busy-promise
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.default_dl_nr_arfcn = {{ default_dl_nr_arfcn }}
configuration.default_nr_bandwidth = {{ default_nr_bandwidth }}
configuration.default_nr_band = {{ default_nr_band}}
configuration.default_nr_tx_gain = {{ default_nr_tx_gain }}
configuration.default_nr_rx_gain = {{ default_nr_rx_gain }}
configuration.default_ssb_nr_arfcn = {{ default_ssb_nr_arfcn }}
configuration.default_n_antenna_dl = {{ default_n_antenna_dl }}
configuration.default_n_antenna_ul = {{ default_n_antenna_ul }}
configuration.default_nr_imsi = {{ default_nr_imsi }}
configuration.default_nr_k = {{ default_nr_k }}
[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("ue_nr_config_link", None) %}
[ue-nr-config-dl]
recipe = slapos.recipe.build:download
url = {{ slapparameter_dict.get("ue_nr_config_link") }}
version = {{ slapparameter_dict.get("ue_nr_config_version") }}
offline = false
{% endif %}
[lte-ue-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 | true;
{{ ue }}/lteue ${directory:etc}/ue.cfg >> ${directory:log}/ue-output.log 2>> ${directory:log}/ue-output.log
{% endif %}
### 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
reserve-cpu = True
pidfile = ${directory:run}/ue.pid
hash-files =
${lte-ue-nr-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 slap_configuration slap-configuration
section pub_info publish-connection-information
key slapparameter_dict slap-configuration:configuration
[lte-ue-nr-config]
<= config-base
{% if slapparameter_dict.get("ue_nr_config_link", None) %}
url = ${ue-nr-config-dl:target}
{% else %}
url = {{ ue_nr_template }}
{% endif %}
output = ${directory:etc}/ue.cfg
[publish-connection-information]
<= monitor-publish
recipe = slapos.cookbook:publish.serialised
rue_bind_addr = ${slap-configuration:ipv6-random}
com_addr = [${slap-configuration:ipv6-random}]:9002
[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-template]
recipe = slapos.recipe.template:jinja2
url = {{ sdr_busy_promise }}
output = ${directory:etc}/check-sdr-busy.py
extensions = jinja2.ext.do
context =
key slapparameter_dict slap-configuration:configuration
# Add custom promise to check if /dev/sdr0 is busy
[sdr-busy-promise]
recipe = slapos.cookbook:promise.plugin
eggs = slapos.core
file = ${sdr-busy-promise-template:output}
output = ${directory:plugins}/check-sdr-busy.py
......@@ -39,6 +39,7 @@ init =
options['enb'] = path + "/enb"
options['mme'] = path + "/mme"
options['ims'] = path + "/ims"
options['ue'] = path + "/ue"
[ethernet-ip]
recipe = slapos.recipe.build
......@@ -61,6 +62,8 @@ epc = dynamic-template-lte-epc:output
enb = dynamic-template-lte-enb:output
gnb = dynamic-template-lte-gnb:output
mme = dynamic-template-lte-mme:output
ue-lte = dynamic-template-lte-ue-lte:output
ue-nr = dynamic-template-lte-ue-nr:output
RootSoftwareInstance = $${:enb-epc}
[dynamic-template-lte-enb-epc]
......@@ -71,7 +74,7 @@ extensions = jinja2.ext.do
extra-context =
raw monitor_template ${monitor2-template:output}
key slave_instance_list slap-configuration:slave-instance-list
[dynamic-template-lte-gnb-epc]
< = jinja2-template-base
url = ${template-lte-gnb-epc:target}
......@@ -89,7 +92,7 @@ extensions = jinja2.ext.do
extra-context =
raw monitor_template ${monitor2-template:output}
key slave_instance_list slap-configuration:slave-instance-list
[dynamic-template-lte-enb]
< = jinja2-template-base
url = ${template-lte-enb:target}
......@@ -151,6 +154,53 @@ extra-context =
raw iperf3_location ${iperf3:location}
key ue_db_path ue-db-config:output
[dynamic-template-lte-ue-lte]
< = jinja2-template-base
url = ${template-lte-ue-lte:target}
filename = instance-lte-ue-lte.cfg
extensions = jinja2.ext.do
extra-context =
raw monitor_template ${monitor2-template:output}
raw interface_up_promise ${interface-up-promise:target}
key ue amarisoft:ue
raw ue_lte_template ${ue-lte.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target}
raw openssl_location ${openssl:location}
raw default_dl_earfcn ${enb:default-dl-earfcn}
raw default_lte_dl_freq ${enb:default-lte-dl-freq}
raw default_lte_n_rb_dl ${enb:default-lte-n-rb-dl}
raw default_lte_tx_gain ${enb:default-lte-tx-gain}
raw default_lte_rx_gain ${enb:default-lte-rx-gain}
raw default_n_antenna_dl ${enb:default-n-antenna-dl}
raw default_n_antenna_ul ${enb:default-n-antenna-ul}
raw default_lte_imsi ${enb:default-lte-imsi}
raw default_lte_k ${enb:default-lte-k}
[dynamic-template-lte-ue-nr]
< = jinja2-template-base
url = ${template-lte-ue-nr:target}
filename = instance-lte-ue-nr.cfg
extensions = jinja2.ext.do
extra-context =
raw monitor_template ${monitor2-template:output}
raw interface_up_promise ${interface-up-promise:target}
key ue amarisoft:ue
raw ue_nr_template ${ue-nr.jinja2.cfg:target}
raw ltelogs_template ${ltelogs.jinja2.sh:target}
raw sdr_busy_promise ${sdr-busy-promise:target}
raw openssl_location ${openssl:location}
raw default_dl_nr_arfcn ${enb:default-dl-nr-arfcn}
raw default_nr_band ${enb:default-nr-band}
raw default_nr_bandwidth ${enb:default-nr-bandwidth}
raw default_nr_tx_gain ${enb:default-nr-tx-gain}
raw default_nr_rx_gain ${enb:default-nr-rx-gain}
raw default_n_antenna_dl ${enb:default-n-antenna-dl}
raw default_n_antenna_ul ${enb:default-n-antenna-ul}
raw default_nr_imsi ${enb:default-nr-imsi}
raw default_nr_k ${enb:default-nr-k}
raw default_ssb_nr_arfcn ${enb:default-ssb-nr-arfcn}
[ue-db-config]
recipe = slapos.recipe.template:jinja2
url = ${ue_db.jinja2.cfg:target}
......
......@@ -7,10 +7,17 @@ import os
LTE_N_RB_DL=100
LTE_TX_GAIN=78
LTE_RX_GAIN=40
LTE_IMSI="001010123456789"
LTE_K="00112233445566778899aabbccddeeff"
NR_BANDWIDTH=40
NR_TX_GAIN=78
NR_RX_GAIN=40
NR_IMSI="001010123456789"
NR_K="00112233445566778899aabbccddeeff"
N_ANTENNA_DL=2
N_ANTENNA_UL=2
global_context = {
'generated_file_message': "This file was generated using a jinja2 template and the render-templates script, don't modify directly."
......@@ -26,6 +33,8 @@ rf_mode_context_list = [
'default_lte_n_rb_dl': LTE_N_RB_DL,
'default_lte_tx_gain': LTE_TX_GAIN,
'default_lte_rx_gain': LTE_RX_GAIN,
'default_lte_imsi': LTE_IMSI,
'default_lte_k': LTE_K,
'default_dl_nr_arfcn': 378000,
'default_nr_band': 39,
......@@ -34,9 +43,14 @@ rf_mode_context_list = [
'default_nr_tx_gain': NR_TX_GAIN,
'default_nr_rx_gain': NR_RX_GAIN,
'default_nr_ssb_pos_bitmap': "1000",
'default_ssb_nr_arfcn': 377790,
'default_nr_imsi': NR_IMSI,
'default_nr_k': NR_K,
'min_frequency': 1880.0,
'max_frequency': 1920,
'default_n_antenna_dl': N_ANTENNA_DL,
'default_n_antenna_ul': N_ANTENNA_UL,
}, {
'rf_mode': 'tdd2600',
......@@ -46,6 +60,8 @@ rf_mode_context_list = [
'default_lte_n_rb_dl': LTE_N_RB_DL,
'default_lte_tx_gain': LTE_TX_GAIN,
'default_lte_rx_gain': LTE_RX_GAIN,
'default_lte_imsi': LTE_IMSI,
'default_lte_k': LTE_K,
'default_dl_nr_arfcn': 520000,
'default_nr_band': 38,
......@@ -54,9 +70,14 @@ rf_mode_context_list = [
'default_nr_tx_gain': NR_TX_GAIN,
'default_nr_rx_gain': NR_RX_GAIN,
'default_nr_ssb_pos_bitmap': "10000000",
'default_ssb_nr_arfcn': 517930,
'default_nr_imsi': NR_IMSI,
'default_nr_k': NR_K,
'min_frequency': 2570,
'max_frequency': 2620,
'default_n_antenna_dl': N_ANTENNA_DL,
'default_n_antenna_ul': N_ANTENNA_UL,
}, {
'rf_mode': 'tdd3500',
......@@ -66,6 +87,8 @@ rf_mode_context_list = [
'default_lte_n_rb_dl': LTE_N_RB_DL,
'default_lte_tx_gain': LTE_TX_GAIN,
'default_lte_rx_gain': LTE_RX_GAIN,
'default_lte_imsi': LTE_IMSI,
'default_lte_k': LTE_K,
'default_dl_nr_arfcn': 632628,
'default_nr_band': 78,
......@@ -74,9 +97,14 @@ rf_mode_context_list = [
'default_nr_tx_gain': NR_TX_GAIN,
'default_nr_rx_gain': NR_RX_GAIN,
'default_nr_ssb_pos_bitmap': "10000000",
'default_ssb_nr_arfcn': 632544,
'default_nr_imsi': NR_IMSI,
'default_nr_k': NR_K,
'min_frequency': 3400,
'max_frequency': 3600,
'default_n_antenna_dl': N_ANTENNA_DL,
'default_n_antenna_ul': N_ANTENNA_UL,
}, {
'rf_mode': 'tdd3700',
......@@ -86,6 +114,8 @@ rf_mode_context_list = [
'default_lte_n_rb_dl': LTE_N_RB_DL,
'default_lte_tx_gain': LTE_TX_GAIN,
'default_lte_rx_gain': LTE_RX_GAIN,
'default_lte_imsi': LTE_IMSI,
'default_lte_k': LTE_K,
'default_dl_nr_arfcn': 646666,
'default_nr_band': 78,
......@@ -94,18 +124,27 @@ rf_mode_context_list = [
'default_nr_tx_gain': NR_TX_GAIN,
'default_nr_rx_gain': NR_RX_GAIN,
'default_nr_ssb_pos_bitmap': "10000000",
'default_ssb_nr_arfcn': 646656,
'default_nr_imsi': NR_IMSI,
'default_nr_k': NR_K,
'min_frequency': 3600,
'max_frequency': 3800,
'default_n_antenna_dl': N_ANTENNA_DL,
'default_n_antenna_ul': N_ANTENNA_UL,
}
]
with open('software.cfg.jinja2.json', 'r') as f:
with open('software.cfg.json.jinja2', 'r') as f:
software_json_template = Template(f.read())
with open('instance-enb-input-schema.jinja2.json', 'r') as f:
with open('instance-enb-input-schema.json.jinja2', 'r') as f:
instance_enb_json_template = Template(f.read())
with open('instance-gnb-input-schema.jinja2.json', 'r') as f:
with open('instance-gnb-input-schema.json.jinja2', 'r') as f:
instance_gnb_json_template = Template(f.read())
with open('instance-ue-lte-input-schema.json.jinja2', 'r') as f:
instance_ue_lte_json_template = Template(f.read())
with open('instance-ue-nr-input-schema.json.jinja2', 'r') as f:
instance_ue_nr_json_template = Template(f.read())
with open('software.jinja2.cfg', 'r') as f:
software_template = Template(f.read())
with open('test/test.jinja2.py', 'r') as f:
......@@ -121,12 +160,17 @@ for rf_mode_context in rf_mode_context_list:
with open('software-{}.cfg'.format(rf_mode_context['rf_mode']),
'w+') as f:
f.write(software_template.render(**rf_mode_context, **global_context) + '\n')
for software_type in ['enb', 'enb-epc', 'gnb', 'gnb-epc']:
for software_type in ['enb', 'enb-epc', 'gnb', 'gnb-epc', 'ue-lte', 'ue-nr']:
with open('instance-{}-{}-input-schema.json'.format(
rf_mode_context['rf_mode'],
software_type),
'w+') as f:
if software_type in ['enb', 'enb-epc']:
f.write(instance_enb_json_template.render(**rf_mode_context, **global_context, epc='epc' in software_type) + '\n')
else:
elif software_type in ['gnb', 'gnb-epc']:
f.write(instance_gnb_json_template.render(**rf_mode_context, **global_context, epc='epc' in software_type) + '\n')
elif software_type in ['ue-lte']:
f.write(instance_ue_lte_json_template.render(**rf_mode_context, **global_context) + '\n')
else:
f.write(instance_ue_nr_json_template.render(**rf_mode_context, **global_context) + '\n')
......@@ -10,6 +10,8 @@ default-lte-band = 39
default-lte-n-rb-dl = 100
default-lte-tx-gain = 78
default-lte-rx-gain = 40
default-lte-imsi = 001010123456789
default-lte-k = 00112233445566778899aabbccddeeff
default-dl-nr-arfcn = 378000
default-nr-band = 39
......@@ -18,6 +20,11 @@ default-nr-bandwidth = 40
default-nr-tx-gain = 78
default-nr-rx-gain = 40
default-nr-ssb-pos-bitmap = 1000
default-ssb-nr-arfcn = 377790
default-nr-imsi = 001010123456789
default-nr-k = 00112233445566778899aabbccddeeff
min-frequency = 1880.0
max-frequency = 1920
default-n-antenna-dl =2
default-n-antenna-ul =2
......@@ -69,6 +69,22 @@
"response": "instance-epc-slave-schema.json",
"shared": true,
"index": 7
},
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-tdd1900-ue-lte-input-schema.json",
"response": "instance-tdd1900-ue-lte-schema.json",
"index": 8
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-tdd1900-ue-nr-input-schema.json",
"response": "instance-tdd1900-ue-nr-schema.json",
"index": 9
}
}
}
......@@ -10,6 +10,8 @@ default-lte-band = 38
default-lte-n-rb-dl = 100
default-lte-tx-gain = 78
default-lte-rx-gain = 40
default-lte-imsi = 001010123456789
default-lte-k = 00112233445566778899aabbccddeeff
default-dl-nr-arfcn = 520000
default-nr-band = 38
......@@ -18,6 +20,11 @@ default-nr-bandwidth = 40
default-nr-tx-gain = 78
default-nr-rx-gain = 40
default-nr-ssb-pos-bitmap = 10000000
default-ssb-nr-arfcn = 517930
default-nr-imsi = 001010123456789
default-nr-k = 00112233445566778899aabbccddeeff
min-frequency = 2570
max-frequency = 2620
default-n-antenna-dl =2
default-n-antenna-ul =2
......@@ -69,6 +69,22 @@
"response": "instance-epc-slave-schema.json",
"shared": true,
"index": 7
},
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-tdd2600-ue-lte-input-schema.json",
"response": "instance-tdd2600-ue-lte-schema.json",
"index": 8
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-tdd2600-ue-nr-input-schema.json",
"response": "instance-tdd2600-ue-nr-schema.json",
"index": 9
}
}
}
......@@ -10,6 +10,8 @@ default-lte-band = 42
default-lte-n-rb-dl = 100
default-lte-tx-gain = 78
default-lte-rx-gain = 40
default-lte-imsi = 001010123456789
default-lte-k = 00112233445566778899aabbccddeeff
default-dl-nr-arfcn = 632628
default-nr-band = 78
......@@ -18,6 +20,11 @@ default-nr-bandwidth = 40
default-nr-tx-gain = 78
default-nr-rx-gain = 40
default-nr-ssb-pos-bitmap = 10000000
default-ssb-nr-arfcn = 632544
default-nr-imsi = 001010123456789
default-nr-k = 00112233445566778899aabbccddeeff
min-frequency = 3400
max-frequency = 3600
default-n-antenna-dl =2
default-n-antenna-ul =2
......@@ -69,6 +69,22 @@
"response": "instance-epc-slave-schema.json",
"shared": true,
"index": 7
},
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-tdd3500-ue-lte-input-schema.json",
"response": "instance-tdd3500-ue-lte-schema.json",
"index": 8
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-tdd3500-ue-nr-input-schema.json",
"response": "instance-tdd3500-ue-nr-schema.json",
"index": 9
}
}
}
......@@ -10,6 +10,8 @@ default-lte-band = 43
default-lte-n-rb-dl = 100
default-lte-tx-gain = 78
default-lte-rx-gain = 40
default-lte-imsi = 001010123456789
default-lte-k = 00112233445566778899aabbccddeeff
default-dl-nr-arfcn = 646666
default-nr-band = 78
......@@ -18,6 +20,11 @@ default-nr-bandwidth = 40
default-nr-tx-gain = 78
default-nr-rx-gain = 40
default-nr-ssb-pos-bitmap = 10000000
default-ssb-nr-arfcn = 646656
default-nr-imsi = 001010123456789
default-nr-k = 00112233445566778899aabbccddeeff
min-frequency = 3600
max-frequency = 3800
default-n-antenna-dl =2
default-n-antenna-ul =2
......@@ -69,6 +69,22 @@
"response": "instance-epc-slave-schema.json",
"shared": true,
"index": 7
},
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-tdd3700-ue-lte-input-schema.json",
"response": "instance-tdd3700-ue-lte-schema.json",
"index": 8
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-tdd3700-ue-nr-input-schema.json",
"response": "instance-tdd3700-ue-nr-schema.json",
"index": 9
}
}
}
......@@ -17,6 +17,8 @@ parts +=
enb.jinja2.cfg
gnb.jinja2.cfg
ue_db.jinja2.cfg
ue-lte.jinja2.cfg
ue-nr.jinja2.cfg
sib23.asn
iperf3
# unimplemented parts - the http monitor and better log handling using logrotate
......@@ -51,6 +53,12 @@ url = ${:_profile_base_location_}/${:_update_hash_filename_}
[template-lte-mme]
<= download-base
[template-lte-ue-lte]
<= download-base
[template-lte-ue-nr]
<= download-base
[sdr-busy-promise]
<= download-base
......@@ -86,3 +94,9 @@ filename = mme.jinja2.cfg
[ims.jinja2.cfg]
<= copy-config-to-instance
filename = ims.jinja2.cfg
[ue-lte.jinja2.cfg]
<= copy-config-to-instance
filename = ue-lte.jinja2.cfg
[ue-nr.jinja2.cfg]
<= copy-config-to-instance
filename = ue-nr.jinja2.cfg
......@@ -69,6 +69,22 @@
"response": "instance-epc-slave-schema.json",
"shared": true,
"index": 7
},
"ue-lte": {
"title": "UE-LTE",
"description": "UE LTE Configuration",
"software-type": "ue-lte",
"request": "instance-{{ rf_mode }}-ue-lte-input-schema.json",
"response": "instance-{{ rf_mode }}-ue-lte-schema.json",
"index": 8
},
"ue-nr": {
"title": "UE-NR",
"description": "UE NR Configuration",
"software-type": "ue-nr",
"request": "instance-{{ rf_mode }}-ue-nr-input-schema.json",
"response": "instance-{{ rf_mode }}-ue-nr-schema.json",
"index": 9
}
}
}
......@@ -10,6 +10,8 @@ default-lte-band = {{ default_lte_band }}
default-lte-n-rb-dl = {{ default_lte_n_rb_dl }}
default-lte-tx-gain = {{ default_lte_tx_gain }}
default-lte-rx-gain = {{ default_lte_rx_gain }}
default-lte-imsi = {{ default_lte_imsi }}
default-lte-k = {{ default_lte_k }}
default-dl-nr-arfcn = {{ default_dl_nr_arfcn }}
default-nr-band = {{ default_nr_band }}
......@@ -18,6 +20,11 @@ default-nr-bandwidth = {{ default_nr_bandwidth }}
default-nr-tx-gain = {{ default_nr_tx_gain }}
default-nr-rx-gain = {{ default_nr_rx_gain }}
default-nr-ssb-pos-bitmap = {{ default_nr_ssb_pos_bitmap }}
default-ssb-nr-arfcn = {{ default_ssb_nr_arfcn }}
default-nr-imsi = {{ default_nr_imsi }}
default-nr-k = {{ default_nr_k }}
min-frequency = {{ min_frequency }}
max-frequency = {{ max_frequency }}
default-n-antenna-dl ={{ default_n_antenna_dl }}
default-n-antenna-ul ={{ default_n_antenna_ul }}
......@@ -140,6 +140,23 @@ epc_param_dict = {
'epc_plmn': '00102',
}
ue_param_dict = {
'testing': True,
'tx_gain': 17,
'rx_gain': 17,
'dl_earfcn': 325320,
'n_rb_dl': 50,
'dl_nr_arfcn': 325320,
'nr_band': 99,
'nr_bandwidth': 50,
'ssb_nr_arfcn': 377790,
'imsi': "001010123456789",
'k': "00112233445566778899aabbccddeeff",
'rue_addr': "192.168.99.88",
'n_antenna_dl': 2,
'n_antenna_ul': 2,
}
def test_enb_conf(self):
conf_file = glob.glob(os.path.join(
......@@ -309,3 +326,52 @@ class TestGNBEPCSimCard(ORSTestCase):
def test_sim_card(self):
self.slap.waitForInstance() # Wait until publish is done
test_ue_db(self)
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_earfcn'], ue_param_dict['dl_earfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['n_rb_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'], ue_param_dict['rx_gain'])
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['ssb_nr_arfcn'], ue_param_dict['ssb_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_nr_arfcn'], ue_param_dict['dl_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['nr_bandwidth'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['band'], ue_param_dict['nr_band'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'],ue_param_dict['rx_gain'])
......@@ -140,6 +140,23 @@ epc_param_dict = {
'epc_plmn': '00102',
}
ue_param_dict = {
'testing': True,
'tx_gain': 17,
'rx_gain': 17,
'dl_earfcn': 325320,
'n_rb_dl': 50,
'dl_nr_arfcn': 325320,
'nr_band': 99,
'nr_bandwidth': 50,
'ssb_nr_arfcn': 377790,
'imsi': "001010123456789",
'k': "00112233445566778899aabbccddeeff",
'rue_addr': "192.168.99.88",
'n_antenna_dl': 2,
'n_antenna_ul': 2,
}
def test_enb_conf(self):
conf_file = glob.glob(os.path.join(
......@@ -309,3 +326,52 @@ class TestGNBEPCSimCard(ORSTestCase):
def test_sim_card(self):
self.slap.waitForInstance() # Wait until publish is done
test_ue_db(self)
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_earfcn'], ue_param_dict['dl_earfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['n_rb_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'], ue_param_dict['rx_gain'])
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['ssb_nr_arfcn'], ue_param_dict['ssb_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_nr_arfcn'], ue_param_dict['dl_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['nr_bandwidth'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['band'], ue_param_dict['nr_band'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'],ue_param_dict['rx_gain'])
......@@ -140,6 +140,23 @@ epc_param_dict = {
'epc_plmn': '00102',
}
ue_param_dict = {
'testing': True,
'tx_gain': 17,
'rx_gain': 17,
'dl_earfcn': 325320,
'n_rb_dl': 50,
'dl_nr_arfcn': 325320,
'nr_band': 99,
'nr_bandwidth': 50,
'ssb_nr_arfcn': 377790,
'imsi': "001010123456789",
'k': "00112233445566778899aabbccddeeff",
'rue_addr': "192.168.99.88",
'n_antenna_dl': 2,
'n_antenna_ul': 2,
}
def test_enb_conf(self):
conf_file = glob.glob(os.path.join(
......@@ -309,3 +326,52 @@ class TestGNBEPCSimCard(ORSTestCase):
def test_sim_card(self):
self.slap.waitForInstance() # Wait until publish is done
test_ue_db(self)
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_earfcn'], ue_param_dict['dl_earfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['n_rb_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'], ue_param_dict['rx_gain'])
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['ssb_nr_arfcn'], ue_param_dict['ssb_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_nr_arfcn'], ue_param_dict['dl_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['nr_bandwidth'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['band'], ue_param_dict['nr_band'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'],ue_param_dict['rx_gain'])
......@@ -140,6 +140,23 @@ epc_param_dict = {
'epc_plmn': '00102',
}
ue_param_dict = {
'testing': True,
'tx_gain': 17,
'rx_gain': 17,
'dl_earfcn': 325320,
'n_rb_dl': 50,
'dl_nr_arfcn': 325320,
'nr_band': 99,
'nr_bandwidth': 50,
'ssb_nr_arfcn': 377790,
'imsi': "001010123456789",
'k': "00112233445566778899aabbccddeeff",
'rue_addr': "192.168.99.88",
'n_antenna_dl': 2,
'n_antenna_ul': 2,
}
def test_enb_conf(self):
conf_file = glob.glob(os.path.join(
......@@ -309,3 +326,52 @@ class TestGNBEPCSimCard(ORSTestCase):
def test_sim_card(self):
self.slap.waitForInstance() # Wait until publish is done
test_ue_db(self)
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_earfcn'], ue_param_dict['dl_earfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['n_rb_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'], ue_param_dict['rx_gain'])
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['ssb_nr_arfcn'], ue_param_dict['ssb_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_nr_arfcn'], ue_param_dict['dl_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['nr_bandwidth'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['band'], ue_param_dict['nr_band'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'],ue_param_dict['rx_gain'])
......@@ -140,6 +140,23 @@ epc_param_dict = {
'epc_plmn': '00102',
}
ue_param_dict = {
'testing': True,
'tx_gain': 17,
'rx_gain': 17,
'dl_earfcn': 325320,
'n_rb_dl': 50,
'dl_nr_arfcn': 325320,
'nr_band': 99,
'nr_bandwidth': 50,
'ssb_nr_arfcn': 377790,
'imsi': "001010123456789",
'k': "00112233445566778899aabbccddeeff",
'rue_addr': "192.168.99.88",
'n_antenna_dl': 2,
'n_antenna_ul': 2,
}
def test_enb_conf(self):
conf_file = glob.glob(os.path.join(
......@@ -309,3 +326,52 @@ class TestGNBEPCSimCard(ORSTestCase):
def test_sim_card(self):
self.slap.waitForInstance() # Wait until publish is done
test_ue_db(self)
class TestUELTEParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-lte"
def test_ue_lte_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_earfcn'], ue_param_dict['dl_earfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['n_rb_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'], ue_param_dict['rx_gain'])
class TestUENRParameters(ORSTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {'_': json.dumps(ue_param_dict)}
@classmethod
def getInstanceSoftwareType(cls):
return "ue-nr"
def test_ue_nr_conf(self):
conf_file = glob.glob(os.path.join(
self.slap.instance_directory, '*', 'etc', 'ue.cfg'))[0]
with open(conf_file, 'r') as f:
conf = yaml.load(f)
self.assertEqual(conf['cell_groups'][0]['cells'][0]['ssb_nr_arfcn'], ue_param_dict['ssb_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['dl_nr_arfcn'], ue_param_dict['dl_nr_arfcn'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['bandwidth'], ue_param_dict['nr_bandwidth'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['band'], ue_param_dict['nr_band'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_dl'], ue_param_dict['n_antenna_dl'])
self.assertEqual(conf['cell_groups'][0]['cells'][0]['n_antenna_ul'], ue_param_dict['n_antenna_ul'])
self.assertEqual(conf['ue_list'][0]['rue_addr'],ue_param_dict['rue_addr'])
self.assertEqual(conf['ue_list'][0]['imsi'], ue_param_dict['imsi'])
self.assertEqual(conf['ue_list'][0]['K'], ue_param_dict['k'])
self.assertEqual(conf['tx_gain'], ue_param_dict['tx_gain'])
self.assertEqual(conf['rx_gain'],ue_param_dict['rx_gain'])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment