diff --git a/dockers/docker-orchagent-centec b/dockers/docker-orchagent-centec new file mode 120000 index 000000000000..8d52609c56e5 --- /dev/null +++ b/dockers/docker-orchagent-centec @@ -0,0 +1 @@ +docker-orchagent \ No newline at end of file diff --git a/platform/centec/docker-orchagent-centec.mk b/platform/centec/docker-orchagent-centec.mk new file mode 100644 index 000000000000..86b214cdcb85 --- /dev/null +++ b/platform/centec/docker-orchagent-centec.mk @@ -0,0 +1,16 @@ +# docker image for orchagent + +DOCKER_ORCHAGENT_CENTEC = docker-orchagent-centec.gz +$(DOCKER_ORCHAGENT_CENTEC)_PATH = $(DOCKERS_PATH)/docker-orchagent +$(DOCKER_ORCHAGENT_CENTEC)_DEPENDS += $(SWSS) $(REDIS_TOOLS) +$(DOCKER_ORCHAGENT_CENTEC)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE) +SONIC_DOCKER_IMAGES += $(DOCKER_ORCHAGENT_CENTEC) +SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_ORCHAGENT_CENTEC) + +$(DOCKER_ORCHAGENT_CENTEC)_CONTAINER_NAME = swss +$(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += --volumes-from database +$(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += -v /etc/network/interfaces:/etc/network/interfaces:ro +$(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += -v /etc/network/interfaces.d/:/etc/network/interfaces.d/:ro +$(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += -v /host/machine.conf:/host/machine.conf +$(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/centec/docker-syncd-centec.mk b/platform/centec/docker-syncd-centec.mk new file mode 100644 index 000000000000..0e64713e0ca5 --- /dev/null +++ b/platform/centec/docker-syncd-centec.mk @@ -0,0 +1,16 @@ +# docker image for centec syncd + +DOCKER_SYNCD_CENTEC = docker-syncd-centec.gz +$(DOCKER_SYNCD_CENTEC)_PATH = $(PLATFORM_PATH)/docker-syncd-centec +$(DOCKER_SYNCD_CENTEC)_DEPENDS += $(SYNCD) +$(DOCKER_SYNCD_CENTEC)_LOAD_DOCKERS += $(DOCKER_BASE) +SONIC_DOCKER_IMAGES += $(DOCKER_SYNCD_CENTEC) +SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_SYNCD_CENTEC) + +$(DOCKER_SYNCD_CENTEC)_CONTAINER_NAME = syncd +$(DOCKER_SYNCD_CENTEC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_CENTEC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf +$(DOCKER_SYNCD_CENTEC)_RUN_OPT += -v /var/run/docker-syncd:/var/run/sswsyncd +$(DOCKER_SYNCD_CENTEC)_RUN_OPT += -v /lib/modules:/libmodules +$(DOCKER_SYNCD_CENTEC)_RUN_OPT += --volumes-from database +$(DOCKER_SYNCD_CENTEC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/centec/docker-syncd-centec/Dockerfile.j2 b/platform/centec/docker-syncd-centec/Dockerfile.j2 new file mode 100755 index 000000000000..cad9e5fa1b36 --- /dev/null +++ b/platform/centec/docker-syncd-centec/Dockerfile.j2 @@ -0,0 +1,32 @@ +FROM docker-base + +## Make apt-get non-interactive +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update + +COPY \ +{% for deb in docker_syncd_centec_debs.split(' ') -%} +debs/{{ deb }}{{' '}} +{%- endfor -%} +debs/ + +RUN dpkg -i \ +{% for deb in docker_syncd_centec_debs.split(' ') -%} +debs/{{ deb }}{{' '}} +{%- endfor %} + +## add kmod into Depends +RUN apt-get install -f kmod +RUN apt-get install -f gcc -y +RUN apt-get install -f gdb -y +RUN apt-get install -f make -y + +COPY ["start.sh", "/usr/bin/"] + +## Clean up +RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y +RUN rm -rf /debs + +ENTRYPOINT ["/bin/bash"] +CMD ["/usr/bin/start.sh"] diff --git a/platform/centec/docker-syncd-centec/start.sh b/platform/centec/docker-syncd-centec/start.sh new file mode 100755 index 000000000000..9fd517890751 --- /dev/null +++ b/platform/centec/docker-syncd-centec/start.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +function clean_up { + service syncd stop + service rsyslog stop + exit +} + +trap clean_up SIGTERM SIGKILL + +# FIXME: the script cannot trap SIGTERM signal and it exits without clean_up +# Remove rsyslogd.pid file manually so that to start the rsyslog instantly +[ -e /var/run/rsyslogd.pid ] && rm /var/run/rsyslogd.pid +service rsyslog start +service syncd start + +read diff --git a/platform/centec/one-image.mk b/platform/centec/one-image.mk new file mode 100644 index 000000000000..95342eda42a4 --- /dev/null +++ b/platform/centec/one-image.mk @@ -0,0 +1,7 @@ +# sonic centec one image installer + +SONIC_ONE_IMAGE = sonic-centec.bin +$(SONIC_ONE_IMAGE)_MACHINE = centec +$(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie +$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES) +SONIC_INSTALLERS += $(SONIC_ONE_IMAGE) diff --git a/platform/centec/platform.conf b/platform/centec/platform.conf new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/platform/centec/rules.mk b/platform/centec/rules.mk new file mode 100644 index 000000000000..4a3f07338b95 --- /dev/null +++ b/platform/centec/rules.mk @@ -0,0 +1,13 @@ +include $(PLATFORM_PATH)/sai.mk +include $(PLATFORM_PATH)/docker-orchagent-centec.mk +include $(PLATFORM_PATH)/docker-syncd-centec.mk +include $(PLATFORM_PATH)/one-image.mk + + +SONIC_ALL += $(SONIC_ONE_IMAGE) + +# Inject centec sai into sairedis +$(LIBSAIREDIS)_DEPENDS += $(CENTEC_SAI) + +# Runtime dependency on centec sai is set only for syncd +$(SYNCD)_RDEPENDS += $(CENTEC_SAI) diff --git a/platform/centec/sai.mk b/platform/centec/sai.mk new file mode 100644 index 000000000000..d8c376357f6b --- /dev/null +++ b/platform/centec/sai.mk @@ -0,0 +1,5 @@ +# Centec SAI +CENTEC_SAI = libsai_1.0.0.deb +$(CENTEC_SAI)_URL = https://github.com/CentecNetworks/goldengate-sai/lib/libsai_1.0.0.deb + +SONIC_ONLINE_DEBS += $(CENTEC_SAI)