From e6175d54093cbad8f728bbbf86f31e44347e03e8 Mon Sep 17 00:00:00 2001 From: Dmitry Smirnov Date: Sun, 29 Dec 2024 12:14:15 +0200 Subject: [PATCH] added enabled flag for services config --- lib/environment.sh | 2 +- lib/process_manager.sh | 14 +++++++++++--- src/configs/services.yml | 6 ++++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/environment.sh b/lib/environment.sh index 313ac293..a6b4119c 100644 --- a/lib/environment.sh +++ b/lib/environment.sh @@ -91,7 +91,7 @@ configure_environment() { # Perform process manager setup log_info "Setting up process manager..." if should_generate_config; then - echo "Generating Supervisor configurations..." + echo "Preparing Supervisor configurations..." configure_and_execute_services else echo "No services found in $CONFIG_FILE. Skipping Supervisor configuration." diff --git a/lib/process_manager.sh b/lib/process_manager.sh index 42d947b6..cd63ac3b 100644 --- a/lib/process_manager.sh +++ b/lib/process_manager.sh @@ -7,7 +7,14 @@ FINAL_CONFIG="/home/${USER}/etc/supervisord.conf" # Function to check for service configurations should_generate_config() { - if [ -f "$CONFIG_FILE" ] && [ "$(yq e '.services | length' "$CONFIG_FILE")" -gt 0 ]; then + local enabled_services_count + # Extract enabled services into JSON format + services_yaml=$(yq e -o=json '.services[] | select(.enabled == true)' "$CONFIG_FILE") + # Count the number of items in the JSON array, trimming any newlines or spaces + enabled_services_count=$(echo "$services_yaml" | jq -c '. | length' | tr -d '\n') + + # Check if the configuration file exists and there is at least one enabled service + if [ -f "$CONFIG_FILE" ] && [ "${enabled_services_count:-0}" -gt 0 ]; then return 0 else return 1 @@ -52,9 +59,10 @@ configure_and_execute_services() { # shellcheck disable=SC2016 sed -i '/\[program:\${process_name}\]/,/^$/d' "$FINAL_CONFIG" - # Convert services to JSON and process each. + # Convert enabled services to JSON and process each. local services_yaml - services_yaml=$(yq e -o=json '.services[]' "$CONFIG_FILE" | jq -c .) + # Filter only services with enabled: true + services_yaml=$(yq e -o=json '.services[] | select(.enabled == true)' "$CONFIG_FILE" | jq -c .) if [ -z "$services_yaml" ]; then echo "Failed to parse services from $CONFIG_FILE or no services defined." diff --git a/src/configs/services.yml b/src/configs/services.yml index 91ce27c9..d2cbbe12 100644 --- a/src/configs/services.yml +++ b/src/configs/services.yml @@ -2,7 +2,8 @@ kind: workerService version: udx.io/worker-v1/service services: - - name: "webapp" + - name: "app_service" + enabled: "false" command: "sh /usr/local/scripts/process_example.sh" autostart: "true" autorestart: "false" @@ -10,7 +11,8 @@ services: - "KEY1=value1" - "KEY2=value2" - name: "another_service" + enabled: "true" command: "sh /usr/local/scripts/process_example.sh" autostart: "true" autorestart: "true" - environment: [] # Even if empty, define it as an empty array + environment: []