Feature 11019: Workflow for cloud-native operations in OSM following Gitops model

Change-Id: Ie763936b095715669741197e36456d8e644c7456
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
diff --git a/docker/osm-krm-functions/scripts/docker-entrypoint.sh b/docker/osm-krm-functions/scripts/docker-entrypoint.sh
new file mode 100755
index 0000000..cab54e4
--- /dev/null
+++ b/docker/osm-krm-functions/scripts/docker-entrypoint.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+
+# "Debug mode" variable
+DEBUG="${DEBUG:-}"
+[[ "${DEBUG,,}" == "true" ]] && set -x
+
+# If there is an input stream, dumps it into a temporary file and sets it as INFILE
+if [[ -n "${INSTREAM}" ]];
+then
+    # Save input stream to temporary file
+    TMPFILE=$(mktemp /tmp/INSTREAM.XXXXXXXXXX) || exit 1
+    echo "${INSTREAM}" > "${TMPFILE}"
+    export INFILE="${TMPFILE}"
+fi
+
+# Sets default INPUT and OUTPUT
+INFILE="${INFILE:-/dev/stdin}"
+OUTFILE="${OUTFILE:-/dev/stdout}"
+
+# Loads helper functions and KRM functions
+source /app/scripts/library/helper-functions.rc
+source /app/scripts/library/krm-functions.rc
+
+# If applicable, loads additional environment variables
+if [[ -n "${CUSTOM_ENV}" ]];
+then
+    set -a
+    source <(echo "${CUSTOM_ENV}")
+    set +a
+fi
+
+# In case INFILE and OUTFILE are the same, it uses a temporary output file
+if [[ "${INFILE}" == "${OUTFILE}" ]];
+then
+    TMPOUTFILE="$(mktemp "/results/OUTFILE.XXXXXXXXXX")" || exit 1
+else
+    TMPOUTFILE="${OUTFILE}"
+fi
+
+#################### EXECUTION ####################
+# Debug mode:
+if [[ "${DEBUG,,}" == "true" ]];
+then
+    "$@" < "${INFILE}" | tee "${TMPOUTFILE}"
+# Normal mode:
+else
+    "$@" < "${INFILE}" > "${TMPOUTFILE}"
+fi
+###################################################
+
+# In case INFILE and OUTFILE are the same, it renames the temporary file over the OUTFILE (i.e., the same as INFILE)
+if [[ "${INFILE}" == "${OUTFILE}" ]];
+then
+    mv -f "${TMPOUTFILE}" "${OUTFILE}"
+fi