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
104
Merge Requests
104
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
d796c495
Commit
d796c495
authored
Oct 01, 2024
by
Joanne Hugé
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
software/ors: add frequency out of bounds promise
parent
d84ca6c6
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
113 additions
and
8 deletions
+113
-8
software/ors-amarisoft/buildout.hash.cfg
software/ors-amarisoft/buildout.hash.cfg
+7
-3
software/ors-amarisoft/instance-enb.jinja2.cfg
software/ors-amarisoft/instance-enb.jinja2.cfg
+2
-0
software/ors-amarisoft/instance-ors-enb.jinja2.cfg
software/ors-amarisoft/instance-ors-enb.jinja2.cfg
+17
-0
software/ors-amarisoft/instance-ors.cfg
software/ors-amarisoft/instance-ors.cfg
+1
-0
software/ors-amarisoft/promise/check_frequency_outofbounds.py
...ware/ors-amarisoft/promise/check_frequency_outofbounds.py
+76
-0
software/ors-amarisoft/software-ors.cfg
software/ors-amarisoft/software-ors.cfg
+3
-0
software/ors-amarisoft/test/test_ors.py
software/ors-amarisoft/test/test_ors.py
+7
-5
No files found.
software/ors-amarisoft/buildout.hash.cfg
View file @
d796c495
...
...
@@ -20,7 +20,7 @@ md5sum = f1b9ae02222c020c89d1a3fa75475826
[template-ors]
filename = instance-ors.cfg
md5sum =
71255edd8b9bfc7460b32b723da01cf8
md5sum =
8c2abee8eb0a538ad8ae1a84e140af69
[slaplte.jinja2]
_update_hash_filename_ = slaplte.jinja2
...
...
@@ -60,11 +60,11 @@ md5sum = 52da9fe3a569199e35ad89ae1a44c30e
[template-enb]
_update_hash_filename_ = instance-enb.jinja2.cfg
md5sum = b
e054d3312acd4ff5bea116e9af895b0
md5sum = b
da6ff7bc76cf73e3bd55aca21134a3a
[template-ors-enb]
_update_hash_filename_ = instance-ors-enb.jinja2.cfg
md5sum =
37295d2dfb453bdb860420c3a49ab916
md5sum =
585457493ce5302ba1f1073b8a3b877c
[template-ors-ue]
_update_hash_filename_ = instance-ors-ue.jinja2.cfg
...
...
@@ -137,3 +137,7 @@ md5sum = 330f5f07806f1da11cd05bb8e4b52e55
[ue-ifup]
_update_hash_filename_ = config/ue-ifup
md5sum = f02fbfd31ba89cf243e2752adcae28d9
[frequency_outofbounds_promise]
_update_hash_filename_ = promise/check_frequency_outofbounds.py
md5sum = 7c83eab2df4f5a5d519e3eb16e4077a3
software/ors-amarisoft/instance-enb.jinja2.cfg
View file @
d796c495
...
...
@@ -20,6 +20,7 @@
[buildout]
extra-parts =
parts =
directory
enb-config
...
...
@@ -30,6 +31,7 @@ parts =
check-baseband-latency.py
monitor-base
publish-connection-information
${:extra-parts}
extends = {{ monitor_template }}
...
...
software/ors-amarisoft/instance-ors-enb.jinja2.cfg
View file @
d796c495
...
...
@@ -251,3 +251,20 @@ init =
del publish['cell-list']
del publish['peer-list']
del publish['peer-cell-list']
# Add custom promise to check if /dev/sdr0 is busy
[frequency-outofbounds-promise]
recipe = slapos.cookbook:promise.plugin
eggs = slapos.core
file = {{ frequency_outofbounds_promise }}
output = ${directory:plugins}/check-frequency-outofbounds.py
{%- if enb_mode == 'enb' %}
config-frequency = {{ xearfcn_module.frequency(ors_version['current-earfcn']) }}
{%- elif enb_mode == 'gnb' %}
config-frequency = {{ xnrarfcn_module.frequency(ors_version['current-nr-arfcn']) }}
{%- endif %}
config-range-rating = {{ ors_version['range'] }}
[buildout]
extra-parts +=
frequency-outofbounds-promise
software/ors-amarisoft/instance-ors.cfg
View file @
d796c495
...
...
@@ -30,6 +30,7 @@ filename = instance-enb.cfg
extra-context +=
section ors ors-version
section ors_version ors-version
raw frequency_outofbounds_promise ${frequency_outofbounds_promise:target}
import-list +=
rawfile instance-enb-base.jinja2.cfg ${template-enb:target}
...
...
software/ors-amarisoft/promise/check_frequency_outofbounds.py
0 → 100644
View file @
d796c495
import
os
import
errno
from
zope.interface
import
implementer
from
slapos.grid.promise
import
interface
from
slapos.grid.promise.generic
import
GenericPromise
@
implementer
(
interface
.
IPromise
)
class
RunPromise
(
GenericPromise
):
def
__init__
(
self
,
config
):
"""
Called when initialising the promise before testing.
Sets the configuration and the periodicity.
"""
super
(
RunPromise
,
self
).
__init__
(
config
)
self
.
setPeriodicity
(
minute
=
1
)
def
sense
(
self
):
"""
Called every time the promise is tested.
Signals a positive or negative result.
In this case, check whether the file exists.
"""
frequency
=
self
.
getConfig
(
'frequency'
)
range_rating
=
self
.
getConfig
(
'range-rating'
)
try
:
min_frequency
=
int
(
range_rating
.
split
(
'MHz'
)[
0
].
strip
())
max_frequency
=
int
(
range_rating
.
split
(
'-'
)[
1
].
split
(
'MHz'
)[
0
].
strip
())
except
(
IndexError
,
ValueError
)
as
e
:
self
.
logger
.
info
(
"Range rating not available, skipping the promise"
)
return
try
:
frequency
=
int
(
float
(
frequency
))
except
ValueError
as
e
:
self
.
logger
.
info
(
"Invalid frequency, skipping the promise"
)
return
if
min_frequency
<=
frequency
<=
max_frequency
:
self
.
logger
.
info
(
"Frequency is in bounds ({} MHz <= {} MHz <= {} MHz)"
.
format
(
min_frequency
,
frequency
,
max_frequency
))
elif
frequency
<
min_frequency
:
self
.
logger
.
error
(
"Frequency is lower than the lowest possible frequency on this hardware, please increase it ({} MHz < {} MHz)"
.
format
(
frequency
,
min_frequency
))
else
:
self
.
logger
.
error
(
"Frequency is higher than the highest possible frequency on this hardware, please increase it ({} MHz > {} MHz)"
.
format
(
frequency
,
max_frequency
))
def
test
(
self
):
"""
Called after sense() if the instance is still converging.
Returns success or failure based on sense results.
In this case, fail if the previous sensor result is negative.
"""
return
self
.
_test
(
result_count
=
1
,
failure_amount
=
1
)
def
anomaly
(
self
):
"""
Called after sense() if the instance has finished converging.
Returns success or failure based on sense results.
Failure signals the instance has diverged.
In this case, fail if two out of the last three results are negative.
"""
return
self
.
_anomaly
(
result_count
=
1
,
failure_amount
=
1
)
software/ors-amarisoft/software-ors.cfg
View file @
d796c495
...
...
@@ -34,3 +34,6 @@ output= ${buildout:bin-directory}/${:_buildout_section_name_}
mode = 0755
context =
section bash bash
[frequency_outofbounds_promise]
<= download-base
software/ors-amarisoft/test/test_ors.py
View file @
d796c495
...
...
@@ -77,7 +77,8 @@ param_dict = {
},
}
enb_param_dict
=
{
'dl_earfcn'
:
36100
,
# ors_version for tests is B39, so earfcn needs to be within B39
'dl_earfcn'
:
38450
,
'enb_id'
:
'0x17'
,
'bandwidth'
:
"10 MHz"
,
'plmn_list'
:
{
...
...
@@ -105,10 +106,11 @@ enb_param_dict = {
},
}
gnb_param_dict
=
{
'dl_nr_arfcn'
:
403500
,
'nr_band'
:
34
,
'nr_bandwidth'
:
50
,
'ssb_nr_arfcn'
:
403520
,
# ors_version for tests is B39, so dl_nr_arfcn needs to be within N39
'dl_nr_arfcn'
:
380000
,
'nr_band'
:
39
,
'nr_bandwidth'
:
40
,
'ssb_nr_arfcn'
:
380020
,
'gnb_id'
:
'0x17'
,
'gnb_id_bits'
:
30
,
'ssb_pos_bitmap'
:
'10'
,
...
...
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