#!/bin/bash # Service Gateway Registration Script # Usage: ./register-service.sh [OPTIONS] # # Options: # -p, --prefix Service prefix (default: activity) # -v, --version API version (default: v1) # -g, --gateway-url Gateway URL (default: http://localhost:5000) # -a, --address Service address (default: http://localhost:5001) # -d, --destination Destination ID (default: {prefix}-1) # -w, --weight Instance weight (default: 1) # -G, --global Create global route (default: true) # -t, --tenant-code Tenant code for tenant-specific route # -h, --help Show this help set -e # Default values SERVICE_PREFIX="activity" API_VERSION="v1" GATEWAY_URL="http://localhost:5000" SERVICE_ADDRESS="http://localhost:5001" WEIGHT=1 IS_GLOBAL=true TENANT_CODE="" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' # Parse arguments while [[ $# -gt 0 ]]; do case $1 in -p|--prefix) SERVICE_PREFIX="$2" shift 2 ;; -v|--version) API_VERSION="$2" shift 2 ;; -g|--gateway-url) GATEWAY_URL="$2" shift 2 ;; -a|--address) SERVICE_ADDRESS="$2" shift 2 ;; -d|--destination) DESTINATION_ID="$2" shift 2 ;; -w|--weight) WEIGHT="$2" shift 2 ;; -G|--global) IS_GLOBAL=true shift ;; -t|--tenant-code) IS_GLOBAL=false TENANT_CODE="$2" shift 2 ;; -h|--help) grep -A 50 '# Usage:' "$0" | tail -n +2 | head -n 20 exit 0 ;; *) echo "Unknown option: $1" exit 1 ;; esac done # Set derived values CLUSTER_ID="${SERVICE_PREFIX}-service" DESTINATION_ID="${DESTINATION_ID:-${SERVICE_PREFIX}-1}" PATH_PATTERN="/${SERVICE_PREFIX}/${API_VERSION}/{**path}" echo -e "${CYAN}╔════════════════════════════════════════════════════════════╗${NC}" echo -e "${CYAN}║ Service Gateway Registration ║${NC}" echo -e "${CYAN}╚════════════════════════════════════════════════════════════╝${NC}" echo "" # Step 1: Add Service Instance echo -e "${YELLOW}[1/3] Adding service instance...${NC}" INSTANCE_BODY=$(cat < $SERVICE_ADDRESS${NC}" else echo -e " ${YELLOW}ℹ Instance may already exist${NC}" fi # Step 2: Add Route echo "" echo -e "${YELLOW}[2/3] Configuring gateway route...${NC}" if [ "$IS_GLOBAL" = true ]; then ROUTE_URL="$GATEWAY_URL/api/gateway/routes/global" ROUTE_BODY=$(cat < $CLUSTER_ID${NC}" else echo -e " ${YELLOW}ℹ Route may already exist${NC}" fi # Step 3: Reload Config echo "" echo -e "${YELLOW}[3/3] Reloading gateway configuration...${NC}" curl -s -X POST "$GATEWAY_URL/api/gateway/reload" > /dev/null echo -e " ${GREEN}✓ Configuration reloaded${NC}" # Summary echo "" echo -e "${CYAN}════════════════════════════════════════════════════════════${NC}" echo -e "${CYAN} Service Registered Successfully!${NC}" echo -e "${CYAN}════════════════════════════════════════════════════════════${NC}" echo "" echo -e " ${WHITE}Service:${NC} $SERVICE_PREFIX" echo -e " ${WHITE}Version:${NC} $API_VERSION" echo -e " ${WHITE}Cluster:${NC} $CLUSTER_ID" echo -e " ${WHITE}Type:${NC} $ROUTE_TYPE" echo -e " ${WHITE}Pattern:${NC} $PATH_PATTERN" echo -e " ${WHITE}Address:${NC} $SERVICE_ADDRESS" echo "" echo -e " ${CYAN}Available Endpoints:${NC}" echo -e " GET $GATEWAY_URL/${SERVICE_PREFIX}/${API_VERSION}/campaigns" echo -e " POST $GATEWAY_URL/${SERVICE_PREFIX}/${API_VERSION}/campaigns" echo -e " GET $GATEWAY_URL/${SERVICE_PREFIX}/${API_VERSION}/campaigns/\{id\}" echo -e " POST $GATEWAY_URL/${SERVICE_PREFIX}/${API_VERSION}/campaigns/\{id\}/publish" echo ""