osmo-bsc: Parametrize codec-list VTY cfg
Change-Id: I1678aba43e8d399ecad192cbc416698373e3c0a0
diff --git a/example/defaults.conf b/example/defaults.conf
index 61b09fb..5bdf257 100644
--- a/example/defaults.conf
+++ b/example/defaults.conf
@@ -14,6 +14,8 @@
short_name: osmo-gsm-tester-msc
long_name: osmo-gsm-tester-msc
encryption: a5_0
+ codec_list:
+ - hr3
msc:
net:
diff --git a/example/scenarios/cfg-codec-fr1.conf b/example/scenarios/cfg-codec-fr1.conf
new file mode 100644
index 0000000..f58a82d
--- /dev/null
+++ b/example/scenarios/cfg-codec-fr1.conf
@@ -0,0 +1,5 @@
+config:
+ bsc:
+ net:
+ codec_list:
+ - fr1
diff --git a/example/scenarios/cfg-codec-fr2.conf b/example/scenarios/cfg-codec-fr2.conf
new file mode 100644
index 0000000..1ad63de
--- /dev/null
+++ b/example/scenarios/cfg-codec-fr2.conf
@@ -0,0 +1,5 @@
+config:
+ bsc:
+ net:
+ codec_list:
+ - fr2
diff --git a/example/scenarios/cfg-codec-fr3.conf b/example/scenarios/cfg-codec-fr3.conf
new file mode 100644
index 0000000..fcc47cc
--- /dev/null
+++ b/example/scenarios/cfg-codec-fr3.conf
@@ -0,0 +1,5 @@
+config:
+ bsc:
+ net:
+ codec_list:
+ - fr3
diff --git a/example/scenarios/cfg-codec-hr1.conf b/example/scenarios/cfg-codec-hr1.conf
new file mode 100644
index 0000000..50a092c
--- /dev/null
+++ b/example/scenarios/cfg-codec-hr1.conf
@@ -0,0 +1,5 @@
+config:
+ bsc:
+ net:
+ codec_list:
+ - hr1
diff --git a/example/scenarios/cfg-codec-hr2.conf b/example/scenarios/cfg-codec-hr2.conf
new file mode 100644
index 0000000..e2cc9d2
--- /dev/null
+++ b/example/scenarios/cfg-codec-hr2.conf
@@ -0,0 +1,5 @@
+config:
+ bsc:
+ net:
+ codec_list:
+ - hr2
diff --git a/example/scenarios/cfg-codec-hr3.conf b/example/scenarios/cfg-codec-hr3.conf
new file mode 100644
index 0000000..c54b924
--- /dev/null
+++ b/example/scenarios/cfg-codec-hr3.conf
@@ -0,0 +1,5 @@
+config:
+ bsc:
+ net:
+ codec_list:
+ - hr3
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index e4e2f9d..15f2711 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -87,7 +87,8 @@
RESOURCES_SCHEMA)
CONF_SCHEMA = util.dict_add(
- { 'defaults.timeout': schema.STR },
+ { 'defaults.timeout': schema.STR,
+ 'config.bsc.net.codec_list[]': schema.CODEC },
dict([('resources.%s' % key, val) for key, val in WANT_SCHEMA.items()]),
dict([('modifiers.%s' % key, val) for key, val in WANT_SCHEMA.items()]))
diff --git a/src/osmo_gsm_tester/schema.py b/src/osmo_gsm_tester/schema.py
index 4a15bcd..174c28f 100644
--- a/src/osmo_gsm_tester/schema.py
+++ b/src/osmo_gsm_tester/schema.py
@@ -110,6 +110,11 @@
return
raise ValueError('Unknown Channel Allocator Policy %r' % val)
+def codec(val):
+ if val in ('hr1', 'hr2', 'hr3', 'fr1', 'fr2', 'fr3'):
+ return
+ raise ValueError('Unknown Codec value: %r' % val)
+
INT = 'int'
STR = 'str'
UINT = 'uint'
@@ -126,6 +131,7 @@
MODEM_FEATURE = 'modem_feature'
PHY_CHAN = 'chan'
CHAN_ALLOCATOR = 'chan_allocator'
+CODEC = 'codec'
SCHEMA_TYPES = {
INT: int,
@@ -144,6 +150,7 @@
MODEM_FEATURE: modem_feature,
PHY_CHAN: phy_channel_config,
CHAN_ALLOCATOR: channel_allocator,
+ CODEC: codec,
}
def validate(config, schema):
diff --git a/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl b/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl
index edcf33f..95bf5e3 100644
--- a/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl
+++ b/src/osmo_gsm_tester/templates/osmo-bsc.cfg.tmpl
@@ -110,7 +110,7 @@
mgw remote-port 2427
mgw local-ip ${bsc.ip_address.addr}
mgw endpoint-range 1 31
- codec-list hr3
+ codec-list ${' '.join(bsc.net.codec_list)}
amr-config 12_2k forbidden
amr-config 10_2k forbidden
amr-config 7_95k forbidden