endpoint-with-microcks-cli
Prerequisites:
- Have
yqinstalled to load resource’s params. - Have
microcksCLI installed to import the API service into Microcks.
Outputs an endpoint URL for connecting to an other workload (a Microcks mock is generated if not found).
type: endpoint
supported_params:
- port
- openapi_file
expected_outputs:
- url10-endpoint-with-microcks-cli.provisioners.yaml
(view on GitHub)
:
- uri: cmd://bash#endpoint-with-microcks-cli
type: endpoint
description: Outputs an endpoint URL for connecting to an other workload (a Microcks mock is generated if not found).
supported_params:
- port
- openapi_file
expected_outputs:
- url
args:
- -c
- |
STDIN=$(cat)
PARAM_PORT=$(echo $STDIN | yq eval -p json '.resource_params.port')
PARAM_OPENAPI_FILE=$(echo $STDIN | yq eval -p json '.resource_params.openapi_file')
WORKLOAD=$(echo $STDIN | yq eval -p json '.resource_id | split(".") | .[-1]')
WORKLOAD_EXISTS=$(echo $STDIN | WORKLOAD=${WORKLOAD} yq eval -p json '.workload_services | has(strenv(WORKLOAD))')
URL_HOSTNAME=${WORKLOAD}:${PARAM_PORT}
URL_SCHEME="http"
URL_PATH=""
if [ "$WORKLOAD_EXISTS" != "true" ]; then
URL_HOSTNAME="microcks.127.0.0.1.nip.io"
URL_SCHEME="https"
SPEC_FILE="${PARAM_OPENAPI_FILE}"
URL_PATH=/rest/$(cat $SPEC_FILE | yq eval '.info.title' | yq '. |= sub(" ", "+")')
set -eu -o pipefail
microcks import ${SPEC_FILE}:true --microcksURL=https://${URL_HOSTNAME} --insecure-tls --keycloakClientId=foo --keycloakClientSecret=bar >&2
fi
OUTPUTS='{"resource_outputs":{"url":"%s://%s%s"},"manifests":[]}'
printf "$OUTPUTS" "$URL_SCHEME" "$URL_HOSTNAME" "$URL_PATH"