From 43e6a9f768a9a4d7c23abe02d7dfb45a31befc6d Mon Sep 17 00:00:00 2001 From: Andy Ning Date: Fri, 25 Sep 2020 10:48:11 -0400 Subject: [PATCH] Set up /var/run/nfv-vim as vim's default temp files location nfv vim call the k8s python client to perform a number of operations. The k8s python client creates temp files under /tmp and continues use these tmp files for the life-cycle of the processes. However systemd-tmpfiles-clean.service will run every day to clean up files in /tmp dir that are older than 10 days. If the k8s client code is not triggered for more than 10 days (thus its temp files are not accessed for more than 10 days), these temp files will be removed as part of the cleanup. Certain vim operations then starts to fail with an error that the tmp file is no longer there. This is a known issue of kubernetes python client: https://github.com/kubernetes-client/python/issues/765 The commit fixes this issue by setting TMPDIR to /var/run/nfv-vim when sm starts vim. Change-Id: I4f0544055e9d10ba2374e9fdb5133d767c1fa2c3 Closes-Bug: 1883599 Signed-off-by: Andy Ning --- nfv/nfv-vim/scripts/vim | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/nfv/nfv-vim/scripts/vim b/nfv/nfv-vim/scripts/vim index ad5c8403..459953b1 100755 --- a/nfv/nfv-vim/scripts/vim +++ b/nfv/nfv-vim/scripts/vim @@ -35,6 +35,7 @@ OCF_RESKEY_pid_default="/var/run/${binname}.pid" : ${OCF_RESKEY_pid=${OCF_RESKEY_pid_default}} mydaemon="/usr/bin/${OCF_RESKEY_binary}" +TMP_DIR=/var/run/nfv-vim ####################################################################### @@ -98,6 +99,21 @@ END PROCESS_NOT_RUNNING_FILE="/var/run/.nfv-vim.not_running" +nfv_vim_tmpdir () { + local rc + + if [ ! -d "$TMP_DIR" ]; then + mkdir -p "$TMP_DIR" + rc=$? + if [ $rc -ne 0 ]; then + ocf_log err "NFV Service (${OCF_RESKEY_binary}) failed to create temp dir (rc=${rc})" + return ${OCF_ERR_GENERIC} + fi + fi + export TMPDIR="$TMP_DIR" + return ${OCF_SUCCESS} +} + vim_validate() { check_binary ${OCF_RESKEY_binary} check_binary pidof @@ -297,6 +313,10 @@ esac # Anything except meta-data and help must pass validation vim_validate || exit $? +# Set up tmpfiles directory to avoid temp files being +# cleaned up by systemd tmpfiles clean service. +nfv_vim_tmpdir || exit $? + case ${__OCF_ACTION} in start) vim_start