From b1094f3e2eda099524fc3d92d5c0546131e1052b Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Mon, 30 Oct 2023 17:38:28 -0400 Subject: [PATCH 01/15] autotag docker images based on git tag --- .circleci/config.yml | 2 +- domino-build.sh | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 64be3a4b9e..1ca8ad7abc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -34,7 +34,7 @@ jobs: command: docker login ${DOCKER_REGISTRY} -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD} - run: name: "Seldon-core Domino Build & Push Script" - command: ./domino-build.sh + command: ./domino-build.sh -a - persist_to_workspace: root: ~/ paths: diff --git a/domino-build.sh b/domino-build.sh index 1fa7370410..61e7a81e97 100755 --- a/domino-build.sh +++ b/domino-build.sh @@ -2,11 +2,13 @@ set -o nounset -o errexit -o pipefail set -e -nopush_flag='' +auto_tag_flag='' +no_push_flag='' tag_arg='' -while getopts 'nt:' flag; do +while getopts 'ant:' flag; do case "${flag}" in - n) nopush_flag='true' ;; + a) auto_tag_flag='true' ;; + n) no_push_flag='true' ;; t) tag_arg="${OPTARG}" ;; *) echo "Unexpected option ${flag}" @@ -14,7 +16,8 @@ while getopts 'nt:' flag; do ;; esac done -readonly nopush_flag +readonly auto_tag_flag +readonly no_push_flag readonly tag_arg SELDON_REPO=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) @@ -35,6 +38,11 @@ if [ -n "${tag_arg}" ]; then TARGET_IMAGE_TAGS+=("${tag_arg}") fi +GIT_HEAD_TAG="$(git describe --tags HEAD)" +if [ -n "${auto_tag_flag}" ] && [ -n "${GIT_HEAD_TAG}" ]; then + TARGET_IMAGE_TAGS+=("${GIT_HEAD_TAG}") +fi + echo -e "\n Building operator...\n" cd "$SELDON_REPO/operator" make docker-build-no-test @@ -45,7 +53,7 @@ make docker-build cd "${SELDON_REPO}" -if [ "${nopush_flag}" == "" ]; then +if [ "${no_push_flag}" == "" ]; then if [ -f ~/.docker/config.json ] && [ "$(cat ~/.docker/config.json | jq '.auths | has("quay.io")')" == "true" ]; then echo -e "[Docker is already logged into quay.io, using existing credentials.]" From 4da84a481c4dd6e0b40fd7c95d021d88e1e87e0b Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 09:41:11 -0400 Subject: [PATCH 02/15] cleanup script --- domino-build.sh | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/domino-build.sh b/domino-build.sh index 61e7a81e97..25e2941610 100755 --- a/domino-build.sh +++ b/domino-build.sh @@ -2,23 +2,23 @@ set -o nounset -o errexit -o pipefail set -e -auto_tag_flag='' -no_push_flag='' -tag_arg='' +AUTO_TAG_FLAG='' +NO_PUSH_FLAG='' +TAG_ARG='' while getopts 'ant:' flag; do case "${flag}" in - a) auto_tag_flag='true' ;; - n) no_push_flag='true' ;; - t) tag_arg="${OPTARG}" ;; + a) AUTO_TAG_FLAG='true' ;; + n) NO_PUSH_FLAG='true' ;; + t) TAG_ARG="${OPTARG}" ;; *) echo "Unexpected option ${flag}" exit 1 ;; esac done -readonly auto_tag_flag -readonly no_push_flag -readonly tag_arg +readonly AUTO_TAG_FLAG +readonly NO_PUSH_FLAG +readonly TAG_ARG SELDON_REPO=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) @@ -34,12 +34,12 @@ if [ -n "${BRANCH_NAME}" ]; then TARGET_IMAGE_TAGS+=("${SOURCE_IMAGE_TAG}-${BRANCH_NAME}.latest") fi -if [ -n "${tag_arg}" ]; then - TARGET_IMAGE_TAGS+=("${tag_arg}") +if [ -n "${TAG_ARG}" ]; then + TARGET_IMAGE_TAGS+=("${TAG_ARG}") fi GIT_HEAD_TAG="$(git describe --tags HEAD)" -if [ -n "${auto_tag_flag}" ] && [ -n "${GIT_HEAD_TAG}" ]; then +if [ -n "${AUTO_TAG_FLAG}" ] && [ -n "${GIT_HEAD_TAG}" ]; then TARGET_IMAGE_TAGS+=("${GIT_HEAD_TAG}") fi @@ -53,7 +53,7 @@ make docker-build cd "${SELDON_REPO}" -if [ "${no_push_flag}" == "" ]; then +if [ -z "${NO_PUSH_FLAG}" ]; then if [ -f ~/.docker/config.json ] && [ "$(cat ~/.docker/config.json | jq '.auths | has("quay.io")')" == "true" ]; then echo -e "[Docker is already logged into quay.io, using existing credentials.]" @@ -75,12 +75,12 @@ if [ "${no_push_flag}" == "" ]; then docker tag "seldonio/seldon-core-executor:${SOURCE_IMAGE_TAG}" "quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e " Tagged executor as ${TARGET_IMAGE_TAG}" - operator_target="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" + readonly operator_target="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" echo -e "\n Pushing operator..." docker push "${operator_target}" echo -e " *** Pushed operator to ${operator_target} *** " - executor_target="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" + readonly executor_target="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e "\n Pushing executor...\n" docker push "${executor_target}" echo -e " *** Pushed executor to ${executor_target} *** \n" From 5bf53b6d69bbc125bce9a48afca3b141435e059c Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 09:53:00 -0400 Subject: [PATCH 03/15] try different variable name --- domino-build.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/domino-build.sh b/domino-build.sh index 25e2941610..855f93c613 100755 --- a/domino-build.sh +++ b/domino-build.sh @@ -75,15 +75,15 @@ if [ -z "${NO_PUSH_FLAG}" ]; then docker tag "seldonio/seldon-core-executor:${SOURCE_IMAGE_TAG}" "quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e " Tagged executor as ${TARGET_IMAGE_TAG}" - readonly operator_target="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" + readonly operator_tag="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" echo -e "\n Pushing operator..." - docker push "${operator_target}" - echo -e " *** Pushed operator to ${operator_target} *** " + docker push "${operator_tag]}" + echo -e " *** Pushed operator to ${operator_tag} *** " - readonly executor_target="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" + readonly executor_tag="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e "\n Pushing executor...\n" - docker push "${executor_target}" - echo -e " *** Pushed executor to ${executor_target} *** \n" + docker push "${executor_tag}" + echo -e " *** Pushed executor to ${executor_tag} *** \n" done From f7313b11698197e918120d2cdab258d7939fccd9 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 10:37:13 -0400 Subject: [PATCH 04/15] ensure git tag lookup doesn't fail --- domino-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domino-build.sh b/domino-build.sh index 855f93c613..e24d9ab33c 100755 --- a/domino-build.sh +++ b/domino-build.sh @@ -38,7 +38,7 @@ if [ -n "${TAG_ARG}" ]; then TARGET_IMAGE_TAGS+=("${TAG_ARG}") fi -GIT_HEAD_TAG="$(git describe --tags HEAD)" +GIT_HEAD_TAG="$(git describe --tags --exact-match HEAD 2> /dev/null || echo "")" if [ -n "${AUTO_TAG_FLAG}" ] && [ -n "${GIT_HEAD_TAG}" ]; then TARGET_IMAGE_TAGS+=("${GIT_HEAD_TAG}") fi From 5416c73e0e1e7bd8c75ed426f8c86da5df9bd7d8 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 10:49:32 -0400 Subject: [PATCH 05/15] resolve variable name issue --- domino-build.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/domino-build.sh b/domino-build.sh index e24d9ab33c..31e8b686ef 100755 --- a/domino-build.sh +++ b/domino-build.sh @@ -75,15 +75,15 @@ if [ -z "${NO_PUSH_FLAG}" ]; then docker tag "seldonio/seldon-core-executor:${SOURCE_IMAGE_TAG}" "quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e " Tagged executor as ${TARGET_IMAGE_TAG}" - readonly operator_tag="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" + readonly operator_target="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" echo -e "\n Pushing operator..." - docker push "${operator_tag]}" - echo -e " *** Pushed operator to ${operator_tag} *** " + docker push "${operator_target}" + echo -e " *** Pushed operator to ${operator_target} *** " - readonly executor_tag="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" + readonly executor_target="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e "\n Pushing executor...\n" - docker push "${executor_tag}" - echo -e " *** Pushed executor to ${executor_tag} *** \n" + docker push "${executor_target}" + echo -e " *** Pushed executor to ${executor_target} *** \n" done From ff30360860ca6fbcdbd6945a8deb2fc2d0ec9715 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 11:05:40 -0400 Subject: [PATCH 06/15] test tweak --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1ca8ad7abc..5bcbd95f23 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -53,11 +53,11 @@ jobs: at: ~/ - checkout - helm/install-helm-client: - version: v3.6.3 + version: v3.13.1 - run: name: Install and Launch Kubernetes command: | - curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.24.3+k3s1 sh -x - + curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.28.3+k3s1 sh -x - sleep 10 kubectl wait --for=condition=Available --timeout=60s deployments --all -n kube-system - run: From 9787cea86103be85dea68701c4b53b819de7d3d0 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 11:10:31 -0400 Subject: [PATCH 07/15] remove readonly --- domino-build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/domino-build.sh b/domino-build.sh index 31e8b686ef..f9c2ad3089 100755 --- a/domino-build.sh +++ b/domino-build.sh @@ -75,12 +75,12 @@ if [ -z "${NO_PUSH_FLAG}" ]; then docker tag "seldonio/seldon-core-executor:${SOURCE_IMAGE_TAG}" "quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e " Tagged executor as ${TARGET_IMAGE_TAG}" - readonly operator_target="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" + operator_target="quay.io/domino/seldon-core-operator:${TARGET_IMAGE_TAG}" echo -e "\n Pushing operator..." docker push "${operator_target}" echo -e " *** Pushed operator to ${operator_target} *** " - readonly executor_target="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" + executor_target="quay.io/domino/seldon-core-executor:${TARGET_IMAGE_TAG}" echo -e "\n Pushing executor...\n" docker push "${executor_target}" echo -e " *** Pushed executor to ${executor_target} *** \n" From df938993ac9c1b1362859787c1fb2b16f538f9c2 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 11:32:35 -0400 Subject: [PATCH 08/15] match tags to our scheme --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5bcbd95f23..af8df1eaa3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -94,7 +94,7 @@ workflows: - org-global filters: tags: - only: /v\d+(\.\d+)*(-.*)*/ + only: /\d+(\.\d+)*(-.*)*-rabbitmq(-.*)*/ - test: context: - org-global @@ -102,4 +102,4 @@ workflows: - build-and-push filters: tags: - only: /v\d+(\.\d+)*(-.*)*/ + only: /\d+(\.\d+)*(-.*)*-rabbitmq(-.*)*/ From 363189238093fb8b947ce56b0dc8d772df8b76dc Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 11:49:14 -0400 Subject: [PATCH 09/15] fix test resources --- test/models/cifar10-rest-rabbitmq.yaml | 26 ++++++++++++++++++++++++++ test/models/iris-model-rabbitmq.yaml | 26 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/test/models/cifar10-rest-rabbitmq.yaml b/test/models/cifar10-rest-rabbitmq.yaml index d10b721f29..90925f5298 100644 --- a/test/models/cifar10-rest-rabbitmq.yaml +++ b/test/models/cifar10-rest-rabbitmq.yaml @@ -1,5 +1,31 @@ # Source: https://docs.seldon.io/projects/seldon-core/en/latest/streaming/kafka.html --- +apiVersion: rabbitmq.com/v1beta1 +kind: Queue +metadata: + name: cifar10-rest-input + namespace: seldon-regression-test +spec: + name: cifar10-rest-input + autoDelete: false + durable: true + rabbitmqClusterReference: + name: rabbitmq-cluster + namespace: rabbitmq +--- +apiVersion: rabbitmq.com/v1beta1 +kind: Queue +metadata: + name: cifar10-rest-output + namespace: seldon-regression-test +spec: + name: cifar10-rest-output + autoDelete: false + durable: true + rabbitmqClusterReference: + name: rabbitmq-cluster + namespace: rabbitmq +--- apiVersion: machinelearning.seldon.io/v1 kind: SeldonDeployment metadata: diff --git a/test/models/iris-model-rabbitmq.yaml b/test/models/iris-model-rabbitmq.yaml index e9e10712a2..c2b5a12d34 100644 --- a/test/models/iris-model-rabbitmq.yaml +++ b/test/models/iris-model-rabbitmq.yaml @@ -1,6 +1,32 @@ # Iris sample model # Source: https://docs.seldon.io/projects/seldon-core/en/latest/workflow/github-readme.html#deploy-your-model-using-pre-packaged-model-servers --- +apiVersion: rabbitmq.com/v1beta1 +kind: Queue +metadata: + name: iris-model-rabbitmq-input + namespace: seldon-regression-test +spec: + name: iris-model-rabbitmq-input + autoDelete: false + durable: true + rabbitmqClusterReference: + name: rabbitmq-cluster + namespace: rabbitmq +--- +apiVersion: rabbitmq.com/v1beta1 +kind: Queue +metadata: + name: iris-model-rabbitmq-output + namespace: seldon-regression-test +spec: + name: iris-model-rabbitmq-output + autoDelete: false + durable: true + rabbitmqClusterReference: + name: rabbitmq-cluster + namespace: rabbitmq +--- apiVersion: machinelearning.seldon.io/v1 kind: SeldonDeployment metadata: From 05225600fe1f75dfa81f094e87ac6bd544fceb5b Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 12:14:58 -0400 Subject: [PATCH 10/15] update test result --- test/seldon/model/test-rabbit-models | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/seldon/model/test-rabbit-models b/test/seldon/model/test-rabbit-models index e0fb5d961a..bc97db9455 100755 --- a/test/seldon/model/test-rabbit-models +++ b/test/seldon/model/test-rabbit-models @@ -12,7 +12,7 @@ COMPUTE_NAMESPACE=seldon-regression-test RABBITMQ_USER=$(kubectl -n rabbitmq get secret rabbitmq-cluster-default-user -o jsonpath="{.data.username}" | base64 --decode) RABBITMQ_PASSWORD=$(kubectl -n rabbitmq get secret rabbitmq-cluster-default-user -o jsonpath="{.data.password}" | base64 --decode) -EXPECTED_IRIS_RESULT_PAYLOAD='{"data":{"names":["t:0","t:1","t:2"],"ndarray":[[0.0006985194531162835,0.00366803903943666,0.995633441507447]]},"meta":{"requestPath":{"classifier":"seldonio/sklearnserver:1.14.1"}}}' +EXPECTED_IRIS_RESULT_PAYLOAD='{"data":{"names":["t:0","t:1","t:2"],"ndarray":[[0.0006985194531162835,0.00366803903943666,0.995633441507447]]},"meta":{"requestPath":{"classifier":"seldonio/sklearnserver:1.17.1"}}}' EXPECTED_CIFAR10_RESULT_PAYLOAD='1.45e-08,1.25e-09,1.63e-07,1.15e-01,1.74e-07,6.19e-06,8.85e-01,6.07e-09,7.44e-08,4.73e-09,' echo ">>> Sending predict message to iris rabbitmq model input queue..." From 48397dcdca947e380c57c2a5948204c40b1dc5e4 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 15:56:50 -0400 Subject: [PATCH 11/15] disable tensorflow test --- test/seldon/model/create-rabbit-models | 15 +++++--- test/seldon/model/test-rabbit-models | 53 ++++++++++++++------------ 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/test/seldon/model/create-rabbit-models b/test/seldon/model/create-rabbit-models index 8bb7867084..2f3f23ca82 100755 --- a/test/seldon/model/create-rabbit-models +++ b/test/seldon/model/create-rabbit-models @@ -11,15 +11,20 @@ COMPUTE_NAMESPACE=seldon-regression-test echo ">>> Creating iris rabbitmq model..." kubectl apply -f $MODELS_DIR/iris-model-rabbitmq.yaml -n $COMPUTE_NAMESPACE -echo ">>> Creating cifar10 rabbitmq model..." -kubectl apply -f $MODELS_DIR/cifar10-rest-rabbitmq.yaml -n $COMPUTE_NAMESPACE - sleep 5 echo ">>> Waiting for iris model deployment to become available..." kubectl wait deployment.apps/iris-model-rabbitmq-default-0-classifier -n $COMPUTE_NAMESPACE --for condition=Available=True --timeout=600s -echo ">>> Waiting for cifar10 model deployment to become available..." -kubectl wait deployment.apps/tfserving-cifar10-rabbitmq-model-0-resnet32 -n $COMPUTE_NAMESPACE --for condition=Available=True --timeout=600s +# +# Tensorflow model does not work as our RabbitMQ server only accepts payloads in Seldon format, not raw tensorflow +# +#echo ">>> Creating cifar10 rabbitmq model..." +#kubectl apply -f $MODELS_DIR/cifar10-rest-rabbitmq.yaml -n $COMPUTE_NAMESPACE +# +#sleep 5 +# +#echo ">>> Waiting for cifar10 model deployment to become available..." +#kubectl wait deployment.apps/tfserving-cifar10-rabbitmq-model-0-resnet32 -n $COMPUTE_NAMESPACE --for condition=Available=True --timeout=600s echo ">>> Done deploying models." diff --git a/test/seldon/model/test-rabbit-models b/test/seldon/model/test-rabbit-models index bc97db9455..75324340b5 100755 --- a/test/seldon/model/test-rabbit-models +++ b/test/seldon/model/test-rabbit-models @@ -13,7 +13,6 @@ COMPUTE_NAMESPACE=seldon-regression-test RABBITMQ_USER=$(kubectl -n rabbitmq get secret rabbitmq-cluster-default-user -o jsonpath="{.data.username}" | base64 --decode) RABBITMQ_PASSWORD=$(kubectl -n rabbitmq get secret rabbitmq-cluster-default-user -o jsonpath="{.data.password}" | base64 --decode) EXPECTED_IRIS_RESULT_PAYLOAD='{"data":{"names":["t:0","t:1","t:2"],"ndarray":[[0.0006985194531162835,0.00366803903943666,0.995633441507447]]},"meta":{"requestPath":{"classifier":"seldonio/sklearnserver:1.17.1"}}}' -EXPECTED_CIFAR10_RESULT_PAYLOAD='1.45e-08,1.25e-09,1.63e-07,1.15e-01,1.74e-07,6.19e-06,8.85e-01,6.07e-09,7.44e-08,4.73e-09,' echo ">>> Sending predict message to iris rabbitmq model input queue..." kubectl -n rabbitmq exec rabbitmq-cluster-server-0 -c rabbitmq -- \ @@ -38,27 +37,31 @@ if [ "${EXPECTED_IRIS_RESULT_PAYLOAD}" != "${IRIS_RESULT_PAYLOAD}" ]; then exit 1 fi -CIFAR10_REQUEST_PAYLOAD="$(<$MODELS_DIR/cifar10_tensorflow_single.json)" -echo ">>> Sending predict message to cifar10 rabbitmq model input queue..." -kubectl -n rabbitmq exec rabbitmq-cluster-server-0 -c rabbitmq -- \ - curl -X POST "http://localhost:15672/api/exchanges/%2F/amq.default/publish" \ - --user "${RABBITMQ_USER}:${RABBITMQ_PASSWORD}" \ - -H "Content-type: application/json" \ - -H "Accept: application/json" \ - -d "${CIFAR10_REQUEST_PAYLOAD}" - -function retrieveCifar10Result { - CIFAR10_RESULT_PAYLOAD=$(kubectl -n rabbitmq exec rabbitmq-cluster-server-0 -c rabbitmq -- \ - curl -X POST "http://localhost:15672/api/queues/%2F/cifar10-rest-output/get" \ - --user "${RABBITMQ_USER}:${RABBITMQ_PASSWORD}" \ - -H "Content-type: application/json" \ - -H "Accept: application/json" \ - -d '{"count":1,"ackmode":"ack_requeue_false","encoding":"auto"}' | \ - jq -e -r '.[0].payload' | jq -r '.predictions[0][]' | xargs -I{} printf "%.2e," "{}") -} -with_backoff retrieveCifar10Result - -if [ "${EXPECTED_CIFAR10_RESULT_PAYLOAD}" != "${CIFAR10_RESULT_PAYLOAD}" ]; then - echo "UNEXPECTED CIFAR10 MODEL RESULT: ${CIFAR10_RESULT_PAYLOAD}" - exit 1 -fi +# +# Tensorflow model does not work as our RabbitMQ server only accepts payloads in Seldon format, not raw tensorflow +# +#EXPECTED_CIFAR10_RESULT_PAYLOAD='1.45e-08,1.25e-09,1.63e-07,1.15e-01,1.74e-07,6.19e-06,8.85e-01,6.07e-09,7.44e-08,4.73e-09,' +#CIFAR10_REQUEST_PAYLOAD="$(<$MODELS_DIR/cifar10_tensorflow_single.json)" +#echo ">>> Sending predict message to cifar10 rabbitmq model input queue..." +#kubectl -n rabbitmq exec rabbitmq-cluster-server-0 -c rabbitmq -- \ +# curl -X POST "http://localhost:15672/api/exchanges/%2F/amq.default/publish" \ +# --user "${RABBITMQ_USER}:${RABBITMQ_PASSWORD}" \ +# -H "Content-type: application/json" \ +# -H "Accept: application/json" \ +# -d "${CIFAR10_REQUEST_PAYLOAD}" +# +#function retrieveCifar10Result { +# CIFAR10_RESULT_PAYLOAD=$(kubectl -n rabbitmq exec rabbitmq-cluster-server-0 -c rabbitmq -- \ +# curl -X POST "http://localhost:15672/api/queues/%2F/cifar10-rest-output/get" \ +# --user "${RABBITMQ_USER}:${RABBITMQ_PASSWORD}" \ +# -H "Content-type: application/json" \ +# -H "Accept: application/json" \ +# -d '{"count":1,"ackmode":"ack_requeue_false","encoding":"auto"}' | \ +# jq -e -r '.[0].payload' | jq -r '.predictions[0][]' | xargs -I{} printf "%.2e," "{}") +#} +#with_backoff retrieveCifar10Result +# +#if [ "${EXPECTED_CIFAR10_RESULT_PAYLOAD}" != "${CIFAR10_RESULT_PAYLOAD}" ]; then +# echo "UNEXPECTED CIFAR10 MODEL RESULT: ${CIFAR10_RESULT_PAYLOAD}" +# exit 1 +#fi From 4c0cc8fe5548ae9abe586c8d43b59faeec0a06d6 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 16:21:16 -0400 Subject: [PATCH 12/15] disable some seldon github workflows --- .github/workflows/alibidetect_tests.yml | 4 ++-- .github/workflows/alibiexplainer_tests.yml | 4 ++-- .github/workflows/docs.yml | 4 ++-- .github/workflows/executor_tests.yml | 4 ++-- .github/workflows/python_lint.yml | 4 ++-- .github/workflows/python_tests.yml | 4 ++-- .github/workflows/security_tests.yml | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/alibidetect_tests.yml b/.github/workflows/alibidetect_tests.yml index e04dc3dc1f..099469b79f 100644 --- a/.github/workflows/alibidetect_tests.yml +++ b/.github/workflows/alibidetect_tests.yml @@ -2,9 +2,9 @@ name: V1 Alibi Detect Tests on: push: - branches: [ master, rabbitmq* ] + branches: [ master ] pull_request: - branches: [ master, rabbitmq* ] + branches: [ master ] jobs: lint: diff --git a/.github/workflows/alibiexplainer_tests.yml b/.github/workflows/alibiexplainer_tests.yml index 01e594d171..e661bdec90 100644 --- a/.github/workflows/alibiexplainer_tests.yml +++ b/.github/workflows/alibiexplainer_tests.yml @@ -2,9 +2,9 @@ name: V1 Alibi Explainer Tests on: push: - branches: [ master, rabbitmq* ] + branches: [ master ] pull_request: - branches: [ master, rabbitmq* ] + branches: [ master ] jobs: lint: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index f7adb25d05..0e8afa74ae 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -2,9 +2,9 @@ name: V1 Docs Test on: push: - branches: [ master, rabbitmq* ] + branches: [ master ] pull_request: - branches: [ master, rabbitmq* ] + branches: [ master ] jobs: docs-lint: diff --git a/.github/workflows/executor_tests.yml b/.github/workflows/executor_tests.yml index be23257726..dafa00d7e4 100644 --- a/.github/workflows/executor_tests.yml +++ b/.github/workflows/executor_tests.yml @@ -2,9 +2,9 @@ name: V1 Executor Tests on: push: - branches: [ master, rabbitmq* ] + branches: [ master ] pull_request: - branches: [ master, rabbitmq* ] + branches: [ master ] jobs: executor-tests: diff --git a/.github/workflows/python_lint.yml b/.github/workflows/python_lint.yml index 92fe960d96..e92a1405b6 100644 --- a/.github/workflows/python_lint.yml +++ b/.github/workflows/python_lint.yml @@ -2,9 +2,9 @@ name: V1 Python Lint on: push: - branches: [ master, rabbitmq* ] + branches: [ master ] pull_request: - branches: [ master, rabbitmq* ] + branches: [ master ] jobs: python-lint: diff --git a/.github/workflows/python_tests.yml b/.github/workflows/python_tests.yml index 4a20ecb751..5dbca7438d 100644 --- a/.github/workflows/python_tests.yml +++ b/.github/workflows/python_tests.yml @@ -2,9 +2,9 @@ name: V1 Python Tests on: push: - branches: [ master, rabbitmq* ] + branches: [ master ] pull_request: - branches: [ master, rabbitmq* ] + branches: [ master ] jobs: python-tests: diff --git a/.github/workflows/security_tests.yml b/.github/workflows/security_tests.yml index 0e9b41bea4..f7ba9d6f49 100644 --- a/.github/workflows/security_tests.yml +++ b/.github/workflows/security_tests.yml @@ -2,9 +2,9 @@ name: V1 Security Tests on: push: - branches: [ master, rabbitmq* ] + branches: [ master ] pull_request: - branches: [ master, rabbitmq* ] + branches: [ master ] workflow_dispatch: jobs: From 04b5182ab23aaf73a3f0d2766056b6f74609cf64 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 16:23:15 -0400 Subject: [PATCH 13/15] linting --- executor/licenses/dep.txt | 115 ++++++++++++++++++++++++++++++++++++++ operator/licenses/dep.txt | 1 + 2 files changed, 116 insertions(+) diff --git a/executor/licenses/dep.txt b/executor/licenses/dep.txt index a938fda166..c49367fb67 100644 --- a/executor/licenses/dep.txt +++ b/executor/licenses/dep.txt @@ -1,13 +1,127 @@ github.com/seldonio/seldon-core/executor cloud.google.com/go +cloud.google.com/go/accessapproval +cloud.google.com/go/accesscontextmanager +cloud.google.com/go/aiplatform +cloud.google.com/go/analytics +cloud.google.com/go/apigateway +cloud.google.com/go/apigeeconnect +cloud.google.com/go/apigeeregistry +cloud.google.com/go/apikeys +cloud.google.com/go/appengine +cloud.google.com/go/area120 +cloud.google.com/go/artifactregistry +cloud.google.com/go/asset +cloud.google.com/go/assuredworkloads +cloud.google.com/go/automl +cloud.google.com/go/baremetalsolution +cloud.google.com/go/batch +cloud.google.com/go/beyondcorp cloud.google.com/go/bigquery +cloud.google.com/go/billing +cloud.google.com/go/binaryauthorization +cloud.google.com/go/certificatemanager +cloud.google.com/go/channel +cloud.google.com/go/cloudbuild +cloud.google.com/go/clouddms +cloud.google.com/go/cloudtasks cloud.google.com/go/compute +cloud.google.com/go/compute/metadata +cloud.google.com/go/contactcenterinsights +cloud.google.com/go/container +cloud.google.com/go/containeranalysis +cloud.google.com/go/datacatalog +cloud.google.com/go/dataflow +cloud.google.com/go/dataform +cloud.google.com/go/datafusion +cloud.google.com/go/datalabeling +cloud.google.com/go/dataplex +cloud.google.com/go/dataproc +cloud.google.com/go/dataqna cloud.google.com/go/datastore +cloud.google.com/go/datastream +cloud.google.com/go/deploy +cloud.google.com/go/dialogflow +cloud.google.com/go/dlp +cloud.google.com/go/documentai +cloud.google.com/go/domains +cloud.google.com/go/edgecontainer +cloud.google.com/go/errorreporting +cloud.google.com/go/essentialcontacts +cloud.google.com/go/eventarc +cloud.google.com/go/filestore cloud.google.com/go/firestore +cloud.google.com/go/functions +cloud.google.com/go/gaming +cloud.google.com/go/gkebackup +cloud.google.com/go/gkeconnect +cloud.google.com/go/gkehub +cloud.google.com/go/gkemulticloud +cloud.google.com/go/gsuiteaddons cloud.google.com/go/iam +cloud.google.com/go/iap +cloud.google.com/go/ids +cloud.google.com/go/iot +cloud.google.com/go/kms +cloud.google.com/go/language +cloud.google.com/go/lifesciences +cloud.google.com/go/logging +cloud.google.com/go/longrunning +cloud.google.com/go/managedidentities +cloud.google.com/go/maps +cloud.google.com/go/mediatranslation +cloud.google.com/go/memcache +cloud.google.com/go/metastore cloud.google.com/go/monitoring +cloud.google.com/go/networkconnectivity +cloud.google.com/go/networkmanagement +cloud.google.com/go/networksecurity +cloud.google.com/go/notebooks +cloud.google.com/go/optimization +cloud.google.com/go/orchestration +cloud.google.com/go/orgpolicy +cloud.google.com/go/osconfig +cloud.google.com/go/oslogin +cloud.google.com/go/phishingprotection +cloud.google.com/go/policytroubleshooter +cloud.google.com/go/privatecatalog cloud.google.com/go/pubsub +cloud.google.com/go/pubsublite +cloud.google.com/go/recaptchaenterprise/v2 +cloud.google.com/go/recommendationengine +cloud.google.com/go/recommender +cloud.google.com/go/redis +cloud.google.com/go/resourcemanager +cloud.google.com/go/resourcesettings +cloud.google.com/go/retail +cloud.google.com/go/run +cloud.google.com/go/scheduler +cloud.google.com/go/secretmanager +cloud.google.com/go/security +cloud.google.com/go/securitycenter +cloud.google.com/go/servicecontrol +cloud.google.com/go/servicedirectory +cloud.google.com/go/servicemanagement +cloud.google.com/go/serviceusage +cloud.google.com/go/shell +cloud.google.com/go/spanner +cloud.google.com/go/speech cloud.google.com/go/storage +cloud.google.com/go/storagetransfer +cloud.google.com/go/talent +cloud.google.com/go/texttospeech +cloud.google.com/go/tpu +cloud.google.com/go/trace +cloud.google.com/go/translate +cloud.google.com/go/video +cloud.google.com/go/videointelligence +cloud.google.com/go/vision/v2 +cloud.google.com/go/vmmigration +cloud.google.com/go/vmwareengine +cloud.google.com/go/vpcaccess +cloud.google.com/go/webrisk +cloud.google.com/go/websecurityscanner +cloud.google.com/go/workflows contrib.go.opencensus.io/exporter/ocagent contrib.go.opencensus.io/exporter/prometheus contrib.go.opencensus.io/exporter/zipkin @@ -111,6 +225,7 @@ github.com/elastic/go-elasticsearch/v7 github.com/elazarl/goproxy github.com/emicklei/go-restful github.com/emicklei/go-restful-swagger12 +github.com/emicklei/go-restful/v3 github.com/emissary-ingress/emissary/v3 github.com/envoyproxy/go-control-plane github.com/envoyproxy/protoc-gen-validate diff --git a/operator/licenses/dep.txt b/operator/licenses/dep.txt index b2f98d606a..8c74c1f4da 100644 --- a/operator/licenses/dep.txt +++ b/operator/licenses/dep.txt @@ -115,6 +115,7 @@ github.com/elastic/go-elasticsearch/v7 github.com/elazarl/goproxy github.com/emicklei/go-restful github.com/emicklei/go-restful-swagger12 +github.com/emicklei/go-restful/v3 github.com/emissary-ingress/emissary/v3 github.com/envoyproxy/go-control-plane github.com/envoyproxy/protoc-gen-validate From 294f8a32edeee7cfab42334bb311e733aefe6013 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 16:27:10 -0400 Subject: [PATCH 14/15] go 1.20 --- .github/workflows/executor_lint.yml | 2 +- .github/workflows/executor_tests.yml | 2 +- .github/workflows/operator_lint.yml | 2 +- .github/workflows/operator_tests.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/executor_lint.yml b/.github/workflows/executor_lint.yml index fccfc8ecf0..f01ed47c32 100644 --- a/.github/workflows/executor_lint.yml +++ b/.github/workflows/executor_lint.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v3 with: - go-version: '^1.17.0' + go-version: '^1.20.0' - name: test-executor run: | make -C executor lint diff --git a/.github/workflows/executor_tests.yml b/.github/workflows/executor_tests.yml index dafa00d7e4..3c2d725c5d 100644 --- a/.github/workflows/executor_tests.yml +++ b/.github/workflows/executor_tests.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v3 with: - go-version: '^1.17.0' + go-version: '^1.20.0' - name: test-executor run: | make -C executor test diff --git a/.github/workflows/operator_lint.yml b/.github/workflows/operator_lint.yml index c4f9befe7a..9190de7ae0 100644 --- a/.github/workflows/operator_lint.yml +++ b/.github/workflows/operator_lint.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v3 with: - go-version: '^1.17.0' + go-version: '^1.20.0' - name: test-executor run: | make -C operator lint diff --git a/.github/workflows/operator_tests.yml b/.github/workflows/operator_tests.yml index be68f3b01c..dfa032f5ef 100644 --- a/.github/workflows/operator_tests.yml +++ b/.github/workflows/operator_tests.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v3 with: - go-version: '^1.17.0' + go-version: '^1.20.0' - name: test-operator run: | make -C operator test From c0a024470c5c135061e6701432e787e85492d6c3 Mon Sep 17 00:00:00 2001 From: David McWhorter Date: Tue, 31 Oct 2023 16:33:17 -0400 Subject: [PATCH 15/15] enable tests --- .github/workflows/executor_tests.yml | 4 ++-- domino-build.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/executor_tests.yml b/.github/workflows/executor_tests.yml index 3c2d725c5d..a5195b9b38 100644 --- a/.github/workflows/executor_tests.yml +++ b/.github/workflows/executor_tests.yml @@ -2,9 +2,9 @@ name: V1 Executor Tests on: push: - branches: [ master ] + branches: [ master, rabbitmq* ] pull_request: - branches: [ master ] + branches: [ master, rabbitmq* ] jobs: executor-tests: diff --git a/domino-build.sh b/domino-build.sh index f9c2ad3089..c7eac21a16 100755 --- a/domino-build.sh +++ b/domino-build.sh @@ -45,7 +45,7 @@ fi echo -e "\n Building operator...\n" cd "$SELDON_REPO/operator" -make docker-build-no-test +make docker-build echo -e "\n Building executor...\n" cd "$SELDON_REPO/executor"