#!/bin/bash
# Script to test the ExtensionConfig CRUD API endpoints
SERVER="localhost:8080"
EXT_CONFIG_NAME="test_lua_filter"
# Define the ExtensionConfig YAML
EXT_CONFIG_YAML=$(cat <<EOF
resources:
- "@type": type.googleapis.com/envoy.config.core.v3.TypedExtensionConfig
name: ${EXT_CONFIG_NAME}
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
inline_code: |
function envoy_on_request(request_handle)
request_handle:headers():add("x-lua-filter", "applied")
request_handle:logInfo("Lua filter '${EXT_CONFIG_NAME}' applied.")
end
EOF
)
# --- ESCAPING FOR ADD EXTENSION CONFIG (CASE 1) ---
# Escape double quotes and newlines
ESCAPED_YAML=$(echo "${EXT_CONFIG_YAML}" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
JSON_ADD_PAYLOAD="{\"YAML\": \"${ESCAPED_YAML}\", \"Name\": \"${EXT_CONFIG_NAME}\", \"Upsert\": true}"
# --- PAYLOAD FOR REMOVE EXTENSION CONFIG (CASE 3) ---
JSON_REMOVE_PAYLOAD="{\"name\":\"${EXT_CONFIG_NAME}\"}"
# -----------------------------------------------------------------------------
# Case 1: ADD a ExtensionConfig (Create/Update)
# -----------------------------------------------------------------------------
echo "š 1. Attempting to ADD ExtensionConfig: ${EXT_CONFIG_NAME}"
curl -X POST "${SERVER}/add-extensionconfig" \
-H "Content-Type: application/json" \
-d "${JSON_ADD_PAYLOAD}"
if [ $? -eq 0 ]; then
echo -e "\nā
ADD successful (check server logs for details)."
else
echo -e "\nā ADD FAILED."
fi
echo "---"
# -----------------------------------------------------------------------------
# Case 2: LIST / GET the ExtensionConfig (Read)
# -----------------------------------------------------------------------------
echo "š 2. Attempting to LIST ALL ExtensionConfigs"
curl -X GET "${SERVER}/list-extensionconfigs"
echo -e "\n---"
echo "š 2. Attempting to GET ExtensionConfig by name: ${EXT_CONFIG_NAME}"
curl -X GET "${SERVER}/get-extensionconfig?name=${EXT_CONFIG_NAME}&format=yaml"
echo -e "\nā
LIST/GET requests sent."
echo "---"
# -----------------------------------------------------------------------------
# Case 3: REMOVE the ExtensionConfig (Delete)
# -----------------------------------------------------------------------------
echo "šļø 3. Attempting to REMOVE ExtensionConfig: ${EXT_CONFIG_NAME}"
curl -X POST "${SERVER}/remove-extensionconfig" \
-H "Content-Type: application/json" \
-d "${JSON_REMOVE_PAYLOAD}"
if [ $? -eq 0 ]; then
echo -e "\nā
REMOVE successful (check server logs for details)."
else
echo -e "\nā REMOVE FAILED."
fi
echo "---"
# -----------------------------------------------------------------------------
# Optional Verification: LIST after removal
# -----------------------------------------------------------------------------
echo "⨠Optional: LIST ALL ExtensionConfigs after removal to verify cache update"
curl -X GET "${SERVER}/list-extensionconfigs"
echo -e "\n\nScript finished."