Skip to content

Commit 34c38e0

Browse files
committed
Fix mgmt-framework rest server startup script
PR sonic-net#4937 broke rest server startup -- server does not load user defined configs from db and always comes up with default config. Fixed mgmt_vars.j2 to load correct db entry and rest-server.sh to handle optional fields correctly. Also introduced a new jinja filter 'json' in sonic-cfggen. It formats the value using json.dumps() function. mgmt_vars.j2 tempalte uses this filter to transform db values into a syntactically correct json.
1 parent 5e435e0 commit 34c38e0

3 files changed

Lines changed: 12 additions & 12 deletions

File tree

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"rest_server": {% if REST_SERVER is defined and "default" in RESET_SERVER.keys() %}{{ REST_SERVER['default'] }}{% else %}""{% endif %},
3-
"x509" : {% if "x509" in DEVICE_METADATA.keys() %}{{ DEVICE_METADATA["x509"] }}{% else %}""{% endif %}
2+
"rest_server": {% if REST_SERVER is defined and "default" in REST_SERVER.keys() %}{{ REST_SERVER['default']|json }}{% else %}""{% endif %},
3+
"x509" : {% if "x509" in DEVICE_METADATA.keys() %}{{ DEVICE_METADATA["x509"]|json }}{% else %}""{% endif %}
44
}

dockers/docker-sonic-mgmt-framework/rest-server.sh

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,17 @@ fi
1111

1212
# Read basic server settings from mgmt vars entries
1313
MGMT_VARS=$(sonic-cfggen -d -t $MGMT_VARS_FILE)
14-
MGMT_VARS=${MGMT_VARS//[\']/\"}
1514

1615
REST_SERVER=$(echo $MGMT_VARS | jq -r '.rest_server')
1716

1817
if [ -n "$REST_SERVER" ]; then
19-
SERVER_PORT=$(echo $REST_SERVER | jq -r '.port')
20-
CLIENT_AUTH=$(echo $REST_SERVER | jq -r '.client_auth')
21-
LOG_LEVEL=$(echo $REST_SERVER | jq -r '.log_level')
18+
SERVER_PORT=$(echo $REST_SERVER | jq -r '.port // empty')
19+
CLIENT_AUTH=$(echo $REST_SERVER | jq -r '.client_auth // empty')
20+
LOG_LEVEL=$(echo $REST_SERVER | jq -r '.log_level // empty')
2221

23-
SERVER_CRT=$(echo $REST_SERVER | jq -r '.server_crt')
24-
SERVER_KEY=$(echo $REST_SERVER | jq -r '.server_key')
25-
CA_CRT=$(echo $REST_SERVER | jq -r '.ca_crt')
22+
SERVER_CRT=$(echo $REST_SERVER | jq -r '.server_crt // empty')
23+
SERVER_KEY=$(echo $REST_SERVER | jq -r '.server_key // empty')
24+
CA_CRT=$(echo $REST_SERVER | jq -r '.ca_crt // empty')
2625
fi
2726

2827
if [[ -z $SERVER_CRT ]] && [[ -z $SERVER_KEY ]] && [[ -z $CA_CRT ]]; then
@@ -31,9 +30,9 @@ fi
3130

3231
# Read certificate file paths from DEVICE_METADATA|x509 entry.
3332
if [ -n "$X509" ]; then
34-
SERVER_CRT=$(echo $X509 | jq -r '.server_crt')
35-
SERVER_KEY=$(echo $X509 | jq -r '.server_key')
36-
CA_CRT=$(echo $X509 | jq -r '.ca_crt')
33+
SERVER_CRT=$(echo $X509 | jq -r '.server_crt // empty')
34+
SERVER_KEY=$(echo $X509 | jq -r '.server_key // empty')
35+
CA_CRT=$(echo $X509 | jq -r '.ca_crt // empty')
3736
fi
3837

3938
# Create temporary server certificate if they not configured in ConfigDB

src/sonic-config-engine/sonic-cfggen

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ def _get_jinja2_env(paths):
242242
env.filters['unique_name'] = unique_name
243243
env.filters['pfx_filter'] = pfx_filter
244244
env.filters['ip_network'] = ip_network
245+
env.filters['json'] = json.dumps
245246
for attr in ['ip', 'network', 'prefixlen', 'netmask', 'broadcast']:
246247
env.filters[attr] = partial(prefix_attr, attr)
247248

0 commit comments

Comments
 (0)