diff --git a/dockers/docker-database/database_config.json.j2 b/dockers/docker-database/database_config.json.j2 index 65db6cb72641..f37b64ee9665 100644 --- a/dockers/docker-database/database_config.json.j2 +++ b/dockers/docker-database/database_config.json.j2 @@ -23,7 +23,13 @@ "unix_socket_path": "", "persistence_for_warm_boot" : "yes" } -{% endif %} +{% endif %}, + "redis_bmp":{ + "hostname" : "{{HOST_IP}}", + "port" : {{BMP_DB_PORT}}, + "unix_socket_path" : "/var/run/redis{{DEV}}/redis_bmp.sock", + "persistence_for_warm_boot" : "yes" + } }, "DATABASES" : { "APPL_DB" : { @@ -129,7 +135,12 @@ "separator": ":", "instance" : {% if include_remote_db %} "remote_redis" {% else %} "redis" {% endif %} } -{% endif %} +{% endif %}, + "BMP_STATE_DB" : { + "id" : 20, + "separator": "|", + "instance" : "redis_bmp" + } }, "VERSION" : "1.0" } diff --git a/dockers/docker-database/docker-database-init.sh b/dockers/docker-database/docker-database-init.sh index 467f33c212d1..7bcb2143df7d 100755 --- a/dockers/docker-database/docker-database-init.sh +++ b/dockers/docker-database/docker-database-init.sh @@ -41,6 +41,8 @@ then fi fi +export BMP_DB_PORT=6400 + REDIS_DIR=/var/run/redis$NAMESPACE_ID mkdir -p $REDIS_DIR/sonic-db mkdir -p /etc/supervisor/conf.d/ @@ -48,7 +50,7 @@ mkdir -p /etc/supervisor/conf.d/ if [ -f /etc/sonic/database_config$NAMESPACE_ID.json ]; then cp /etc/sonic/database_config$NAMESPACE_ID.json $REDIS_DIR/sonic-db/database_config.json else - HOST_IP=$host_ip REDIS_PORT=$redis_port DATABASE_TYPE=$DATABASE_TYPE j2 /usr/share/sonic/templates/database_config.json.j2 > $REDIS_DIR/sonic-db/database_config.json + HOST_IP=$host_ip REDIS_PORT=$redis_port DATABASE_TYPE=$DATABASE_TYPE BMP_DB_PORT=$BMP_DB_PORT j2 /usr/share/sonic/templates/database_config.json.j2 > $REDIS_DIR/sonic-db/database_config.json fi # on VoQ system, we only publish redis_chassis instance and CHASSIS_APP_DB when diff --git a/dockers/docker-database/supervisord.conf.j2 b/dockers/docker-database/supervisord.conf.j2 index 232b8ffcbfa7..3c27415fcb0c 100644 --- a/dockers/docker-database/supervisord.conf.j2 +++ b/dockers/docker-database/supervisord.conf.j2 @@ -28,8 +28,18 @@ stdout_logfile=syslog stderr_logfile=syslog dependent_startup=true +[program:flushdb] +command=/bin/bash -c "sleep 300 && /usr/local/bin/flush_unused_database" +priority=2 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog +dependent_startup=true +dependent_startup_wait_for=rsyslogd:running + {% if INSTANCES %} -{% for redis_inst, redis_items in INSTANCES.items() %} +{% for index, (redis_inst, redis_items) in enumerate(INSTANCES.items()) %} {%- if redis_inst != 'remote_redis' %} [program:{{ redis_inst }}] {% if redis_items['hostname'] != '127.0.0.1' %} @@ -42,22 +52,13 @@ dependent_startup=true {%- set ADDITIONAL_OPTS = '' %} {%- endif -%} command=/bin/bash -c "{ [[ -s /var/lib/{{ redis_inst }}/dump.rdb ]] || rm -f /var/lib/{{ redis_inst }}/dump.rdb; } && mkdir -p /var/lib/{{ redis_inst }} && exec /usr/bin/redis-server /etc/redis/redis.conf --bind {{ LOOPBACK_IP }} {{ redis_items['hostname'] }} --port {{ redis_items['port'] }} --unixsocket {{ redis_items['unix_socket_path'] }} --pidfile /var/run/redis/{{ redis_inst }}.pid --dir /var/lib/{{ redis_inst }} {{ ADDITIONAL_OPTS }}" -priority=2 +priority={{ index + 3 }} user=redis autostart=true autorestart=false stdout_logfile=syslog stderr_logfile=syslog -{%- endif -%} + +{% endif %} {% endfor %} {% endif %} - -[program:flushdb] -command=/bin/bash -c "sleep 300 && /usr/local/bin/flush_unused_database" -priority=3 -autostart=false -autorestart=false -stdout_logfile=syslog -stderr_logfile=syslog -dependent_startup=true -dependent_startup_wait_for=rsyslogd:running diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2 index 87f801c1549c..4ef9e308d49e 100644 --- a/files/build_templates/docker_image_ctl.j2 +++ b/files/build_templates/docker_image_ctl.j2 @@ -296,7 +296,9 @@ function postStartAction() fi REDIS_SOCK="/var/run/redis-chassis/redis_chassis.sock" fi + REDIS_BMP_SOCK="/var/run/redis/redis_bmp.sock" chgrp -f redis $REDIS_SOCK && chmod -f 0760 $REDIS_SOCK + chgrp -f redis $REDIS_BMP_SOCK && chmod -f 0760 $REDIS_BMP_SOCK {%- elif docker_container_name == "swss" %} # Wait until swss container state is Running until [[ ($(docker inspect -f {{"'{{.State.Running}}'"}} swss$DEV) == "true") ]]; do diff --git a/platform/vs/docker-sonic-vs/database_config.json b/platform/vs/docker-sonic-vs/database_config.json index 04cb3d3aaaec..da7c27dca892 100644 --- a/platform/vs/docker-sonic-vs/database_config.json +++ b/platform/vs/docker-sonic-vs/database_config.json @@ -11,6 +11,11 @@ "port": 6380, "unix_socket_path": "/var/run/redis/redis_chassis.sock" } + ,"redis_bmp":{ + "hostname" : "127.0.0.1", + "port" : 6400, + "unix_socket_path" : "/var/run/redis/redis_bmp.sock" + } }, "DATABASES" : { "APPL_DB" : { @@ -77,6 +82,11 @@ "id" : 14, "separator": ":", "instance" : "redis" + }, + "BMP_STATE_DB" : { + "id" : 20, + "separator": "|", + "instance" : "redis_bmp" } }, "VERSION" : "1.0"