re-uploading work
This commit is contained in:
160
scripts/setup_timer_echo_rule.sh
Executable file
160
scripts/setup_timer_echo_rule.sh
Executable file
@@ -0,0 +1,160 @@
|
||||
#!/bin/bash
|
||||
# Setup Timer Echo Rule
|
||||
# Creates a rule that runs "echo Hello World" every 10 seconds using the timer trigger
|
||||
|
||||
set -e
|
||||
|
||||
# Configuration
|
||||
API_URL="${ATTUNE_API_URL:-http://localhost:8080}"
|
||||
API_USER="${ATTUNE_API_USER:-admin}"
|
||||
API_PASSWORD="${ATTUNE_API_PASSWORD:-admin}"
|
||||
|
||||
echo "=== Attune Timer Echo Rule Setup ==="
|
||||
echo "API URL: $API_URL"
|
||||
echo ""
|
||||
|
||||
# Step 1: Login and get JWT token
|
||||
echo "Step 1: Authenticating..."
|
||||
LOGIN_RESPONSE=$(curl -s -X POST "$API_URL/auth/login" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"username\":\"$API_USER\",\"password\":\"$API_PASSWORD\"}")
|
||||
|
||||
ACCESS_TOKEN=$(echo "$LOGIN_RESPONSE" | jq -r '.data.access_token')
|
||||
|
||||
if [ "$ACCESS_TOKEN" == "null" ] || [ -z "$ACCESS_TOKEN" ]; then
|
||||
echo "Error: Failed to authenticate"
|
||||
echo "Response: $LOGIN_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Authentication successful"
|
||||
echo ""
|
||||
|
||||
# Step 2: Check if core pack exists
|
||||
echo "Step 2: Checking for core pack..."
|
||||
PACK_RESPONSE=$(curl -s -X GET "$API_URL/api/v1/packs/core" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN")
|
||||
|
||||
PACK_ID=$(echo "$PACK_RESPONSE" | jq -r '.data.id')
|
||||
|
||||
if [ "$PACK_ID" == "null" ] || [ -z "$PACK_ID" ]; then
|
||||
echo "Error: Core pack not found. Please run seed_core_pack.sql first"
|
||||
echo "Response: $PACK_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Core pack found (ID: $PACK_ID)"
|
||||
echo ""
|
||||
|
||||
# Step 3: Check if timer trigger exists
|
||||
echo "Step 3: Checking for timer trigger..."
|
||||
TRIGGER_RESPONSE=$(curl -s -X GET "$API_URL/api/v1/triggers/core.timer_10s" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN")
|
||||
|
||||
TRIGGER_ID=$(echo "$TRIGGER_RESPONSE" | jq -r '.data.id')
|
||||
|
||||
if [ "$TRIGGER_ID" == "null" ] || [ -z "$TRIGGER_ID" ]; then
|
||||
echo "Error: Timer trigger core.timer_10s not found. Please run seed_core_pack.sql first"
|
||||
echo "Response: $TRIGGER_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Timer trigger found (ID: $TRIGGER_ID)"
|
||||
echo ""
|
||||
|
||||
# Step 4: Check if echo action exists
|
||||
echo "Step 4: Checking for echo action..."
|
||||
ACTION_RESPONSE=$(curl -s -X GET "$API_URL/api/v1/actions/core.echo" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN")
|
||||
|
||||
ACTION_ID=$(echo "$ACTION_RESPONSE" | jq -r '.data.id')
|
||||
|
||||
if [ "$ACTION_ID" == "null" ] || [ -z "$ACTION_ID" ]; then
|
||||
echo "Error: Echo action core.echo not found. Please run seed_core_pack.sql first"
|
||||
echo "Response: $ACTION_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Echo action found (ID: $ACTION_ID)"
|
||||
echo ""
|
||||
|
||||
# Step 5: Create or update the rule
|
||||
echo "Step 5: Creating timer echo rule..."
|
||||
|
||||
RULE_REF="core.timer_echo_10s"
|
||||
|
||||
# Check if rule already exists
|
||||
EXISTING_RULE=$(curl -s -X GET "$API_URL/api/v1/rules/$RULE_REF" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN")
|
||||
|
||||
EXISTING_RULE_ID=$(echo "$EXISTING_RULE" | jq -r '.data.id // empty')
|
||||
|
||||
if [ -n "$EXISTING_RULE_ID" ]; then
|
||||
echo "Rule already exists (ID: $EXISTING_RULE_ID), updating..."
|
||||
|
||||
UPDATE_RESPONSE=$(curl -s -X PUT "$API_URL/api/v1/rules/$RULE_REF" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"enabled": true,
|
||||
"label": "Timer Echo Every 10 Seconds",
|
||||
"description": "Echoes Hello World every 10 seconds using timer trigger"
|
||||
}')
|
||||
|
||||
RULE_ID=$(echo "$UPDATE_RESPONSE" | jq -r '.data.id')
|
||||
echo "✓ Rule updated (ID: $RULE_ID)"
|
||||
else
|
||||
echo "Creating new rule..."
|
||||
|
||||
CREATE_RESPONSE=$(curl -s -X POST "$API_URL/api/v1/rules" \
|
||||
-H "Authorization: Bearer $ACCESS_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
\"ref\": \"$RULE_REF\",
|
||||
\"pack\": $PACK_ID,
|
||||
\"pack_ref\": \"core\",
|
||||
\"label\": \"Timer Echo Every 10 Seconds\",
|
||||
\"description\": \"Echoes Hello World every 10 seconds using timer trigger\",
|
||||
\"enabled\": true,
|
||||
\"trigger\": $TRIGGER_ID,
|
||||
\"trigger_ref\": \"core.timer_10s\",
|
||||
\"action\": $ACTION_ID,
|
||||
\"action_ref\": \"core.echo\",
|
||||
\"action_params\": {
|
||||
\"message\": \"Hello World from timer trigger!\"
|
||||
}
|
||||
}")
|
||||
|
||||
RULE_ID=$(echo "$CREATE_RESPONSE" | jq -r '.data.id')
|
||||
|
||||
if [ "$RULE_ID" == "null" ] || [ -z "$RULE_ID" ]; then
|
||||
echo "Error: Failed to create rule"
|
||||
echo "Response: $CREATE_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ Rule created (ID: $RULE_ID)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Setup Complete ==="
|
||||
echo ""
|
||||
echo "Rule Details:"
|
||||
echo " Ref: $RULE_REF"
|
||||
echo " ID: $RULE_ID"
|
||||
echo " Trigger: core.timer_10s (every 10 seconds)"
|
||||
echo " Action: core.echo"
|
||||
echo " Message: Hello World from timer trigger!"
|
||||
echo ""
|
||||
echo "The rule is now active. The echo action will run every 10 seconds."
|
||||
echo "Check logs with:"
|
||||
echo " - Sensor service logs for timer events"
|
||||
echo " - Executor service logs for enforcement/scheduling"
|
||||
echo " - Worker service logs for action execution"
|
||||
echo ""
|
||||
echo "To monitor executions via API:"
|
||||
echo " curl -H 'Authorization: Bearer $ACCESS_TOKEN' $API_URL/api/v1/executions"
|
||||
echo ""
|
||||
echo "To disable the rule:"
|
||||
echo " curl -X PUT -H 'Authorization: Bearer $ACCESS_TOKEN' -H 'Content-Type: application/json' \\"
|
||||
echo " -d '{\"enabled\": false}' $API_URL/api/v1/rules/$RULE_REF"
|
||||
Reference in New Issue
Block a user