version: 0.1 component: command timeoutInSeconds: 900 shell: bash failImmediatelyOnError: true steps: - type: Command name: Validate remediation parameters command: | required_vars=( APP_NAMESPACE CONFIGMAP_NAME OCI_REGION OKE_CLUSTER_OCID OKE_ENDPOINT_TYPE ORDER_MANUAL_REVIEW_RATE_THRESHOLD ORDER_REVENUE_AT_RISK_THRESHOLD ORDER_STUCK_REVIEW_MODE PAYMENT_FORCE_TIMEOUT INVENTORY_FORCE_OUTAGE WAIT_TIMEOUT ) for var_name in "${required_vars[@]}"; do if [ -z "${!var_name}" ]; then echo "Required parameter is missing: ${var_name}" exit 1 fi done echo "APP_NAMESPACE=${APP_NAMESPACE}" echo "CONFIGMAP_NAME=${CONFIGMAP_NAME}" echo "OCI_REGION=${OCI_REGION}" echo "OKE_CLUSTER_OCID=${OKE_CLUSTER_OCID}" echo "OKE_ENDPOINT_TYPE=${OKE_ENDPOINT_TYPE}" echo "ORDER_MANUAL_REVIEW_RATE_THRESHOLD=${ORDER_MANUAL_REVIEW_RATE_THRESHOLD}" echo "ORDER_REVENUE_AT_RISK_THRESHOLD=${ORDER_REVENUE_AT_RISK_THRESHOLD}" echo "ORDER_STUCK_REVIEW_MODE=${ORDER_STUCK_REVIEW_MODE}" echo "PAYMENT_FORCE_TIMEOUT=${PAYMENT_FORCE_TIMEOUT}" echo "INVENTORY_FORCE_OUTAGE=${INVENTORY_FORCE_OUTAGE}" echo "WAIT_TIMEOUT=${WAIT_TIMEOUT}" - type: Command name: Configure kubeconfig command: | mkdir -p "${HOME}/.kube" oci ce cluster create-kubeconfig \ --cluster-id "${OKE_CLUSTER_OCID}" \ --file "${HOME}/.kube/config" \ --region "${OCI_REGION}" \ --token-version 2.0.0 \ --kube-endpoint "${OKE_ENDPOINT_TYPE}" export KUBECONFIG="${HOME}/.kube/config" echo "KUBECONFIG=${KUBECONFIG}" kubectl config current-context kubectl cluster-info - type: Command name: Apply business ConfigMap remediation command: | kubectl patch configmap "${CONFIGMAP_NAME}" -n "${APP_NAMESPACE}" \ --type merge \ -p "{ \"data\": { \"ORDER_MANUAL_REVIEW_RATE_THRESHOLD\": \"${ORDER_MANUAL_REVIEW_RATE_THRESHOLD}\", \"ORDER_REVENUE_AT_RISK_THRESHOLD\": \"${ORDER_REVENUE_AT_RISK_THRESHOLD}\", \"ORDER_STUCK_REVIEW_MODE\": \"${ORDER_STUCK_REVIEW_MODE}\", \"PAYMENT_FORCE_TIMEOUT\": \"${PAYMENT_FORCE_TIMEOUT}\", \"INVENTORY_FORCE_OUTAGE\": \"${INVENTORY_FORCE_OUTAGE}\" } }" - type: Command name: Restart order service command: | kubectl rollout restart deployment/order-service -n "${APP_NAMESPACE}" kubectl rollout status deployment/order-service -n "${APP_NAMESPACE}" --timeout="${WAIT_TIMEOUT}" - type: Command name: Show remediated configuration command: | kubectl get configmap "${CONFIGMAP_NAME}" -n "${APP_NAMESPACE}" -o yaml kubectl get pods -n "${APP_NAMESPACE}" -o wide