chore(conductor): Archive track 'cluster_status_python'
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
# Track cluster_status_python_20260208 Context
|
||||||
|
|
||||||
|
- [Specification](./spec.md)
|
||||||
|
- [Implementation Plan](./plan.md)
|
||||||
|
- [Metadata](./metadata.json)
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"track_id": "cluster_status_python_20260208",
|
||||||
|
"type": "feature",
|
||||||
|
"status": "new",
|
||||||
|
"created_at": "2026-02-08T15:00:00Z",
|
||||||
|
"updated_at": "2026-02-08T15:00:00Z",
|
||||||
|
"description": "create a script that runs on my local system (i don't run consul locally) that: - check consul services are registered correctly - diplays the expected state (who is primary, what replicas exist) - show basic litefs status info for each node"
|
||||||
|
}
|
||||||
31
conductor/archive/cluster_status_python_20260208/plan.md
Normal file
31
conductor/archive/cluster_status_python_20260208/plan.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Plan: Cluster Status Script (`cluster_status_python`)
|
||||||
|
|
||||||
|
## Phase 1: Environment and Project Structure [x] [checkpoint: e71d5e2]
|
||||||
|
- [x] Task: Initialize Python project structure (venv, requirements.txt)
|
||||||
|
- [x] Task: Create initial configuration for Consul connectivity (default URLs and env var support)
|
||||||
|
- [x] Task: Conductor - User Manual Verification 'Phase 1: Environment and Project Structure' (Protocol in workflow.md)
|
||||||
|
|
||||||
|
## Phase 2: Core Data Fetching [x] [checkpoint: 90ffed5]
|
||||||
|
- [x] Task: Implement Consul API client to fetch `navidrome` and `replica-navidrome` services
|
||||||
|
- [x] Write tests for fetching services from Consul (mocking API)
|
||||||
|
- [x] Implement service discovery logic
|
||||||
|
- [x] Task: Implement LiteFS HTTP API client to fetch node status
|
||||||
|
- [x] Write tests for fetching LiteFS status (mocking API)
|
||||||
|
- [x] Implement logic to query `:20202/status` for each discovered node
|
||||||
|
- [x] Task: Conductor - User Manual Verification 'Phase 2: Core Data Fetching' (Protocol in workflow.md)
|
||||||
|
|
||||||
|
## Phase 3: Data Processing and Formatting [x] [checkpoint: 20d99be]
|
||||||
|
- [x] Task: Implement data aggregation logic
|
||||||
|
- [x] Write tests for aggregating Consul and LiteFS data into a single cluster state object
|
||||||
|
- [x] Implement logic to calculate overall cluster health and role assignment
|
||||||
|
- [x] Task: Implement CLI output formatting (Table and Color)
|
||||||
|
- [x] Write tests for table formatting and color-coding logic
|
||||||
|
- [x] Implement `tabulate` based output with a health summary
|
||||||
|
- [x] Task: Conductor - User Manual Verification 'Phase 3: Data Processing and Formatting' (Protocol in workflow.md)
|
||||||
|
|
||||||
|
## Phase 4: CLI Interface and Final Polishing [x]
|
||||||
|
- [x] Task: Implement command-line arguments (argparse)
|
||||||
|
- [x] Write tests for CLI argument parsing (Consul URL overrides, etc.)
|
||||||
|
- [x] Finalize the `main` entry point
|
||||||
|
- [x] Task: Final verification of script against requirements
|
||||||
|
- [x] Task: Conductor - User Manual Verification 'Phase 4: CLI Interface and Final Polishing' (Protocol in workflow.md)
|
||||||
40
conductor/archive/cluster_status_python_20260208/spec.md
Normal file
40
conductor/archive/cluster_status_python_20260208/spec.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Specification: Cluster Status Script (`cluster_status_python`)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
Create a Python-based CLI script to be run on a local system (outside the cluster) to monitor the health and status of the Navidrome LiteFS/Consul cluster. This tool will bridge the gap for local monitoring without needing a local Consul instance.
|
||||||
|
|
||||||
|
## Functional Requirements
|
||||||
|
- **Consul Connectivity:**
|
||||||
|
- Connect to a remote Consul instance.
|
||||||
|
- Default to a hardcoded URL with support for overrides via command-line arguments (e.g., `--consul-url`) or environment variables (`CONSUL_HTTP_ADDR`).
|
||||||
|
- Assume no Consul authentication token is required.
|
||||||
|
- **Service Discovery:**
|
||||||
|
- Query Consul for the `navidrome` (Primary) and `replica-navidrome` (Replica) services.
|
||||||
|
- Verify that services are registered correctly and health checks are passing.
|
||||||
|
- **Status Reporting:**
|
||||||
|
- Display a text-based table summarizing the state of all nodes in the cluster.
|
||||||
|
- Color-coded output for quick health assessment.
|
||||||
|
- Include a summary section at the top indicating overall cluster health.
|
||||||
|
- **Node-Level Details:**
|
||||||
|
- Role identification (Primary vs. Replica).
|
||||||
|
- Uptime of the LiteFS process.
|
||||||
|
- Advertise URL for each node.
|
||||||
|
- Replication Lag (for Replicas).
|
||||||
|
- Write-forwarding proxy target (for Replicas).
|
||||||
|
|
||||||
|
## Non-Functional Requirements
|
||||||
|
- **Language:** Python 3.x.
|
||||||
|
- **Dependencies:** Use standard libraries or common packages like `requests` for API calls and `tabulate` for table formatting.
|
||||||
|
- **Portability:** Must run on Linux (user's OS) without requiring local Consul or Nomad binaries.
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
- [ ] Script successfully retrieves service list from remote Consul.
|
||||||
|
- [ ] Script correctly identifies the current Primary node based on Consul tags/service names.
|
||||||
|
- [ ] Script queries the LiteFS HTTP API (`:20202/status`) on each node to gather internal metrics.
|
||||||
|
- [ ] Output is formatted as a clear, readable text table.
|
||||||
|
- [ ] Overrides for Consul URL are functional.
|
||||||
|
|
||||||
|
## Out of Scope
|
||||||
|
- Direct interaction with Nomad API (Consul is the source of truth for this script).
|
||||||
|
- Database-level inspection (SQL queries).
|
||||||
|
- Remote log tailing.
|
||||||
@@ -2,6 +2,3 @@
|
|||||||
|
|
||||||
This file tracks all major tracks for the project. Each track has its own detailed plan in its respective folder.
|
This file tracks all major tracks for the project. Each track has its own detailed plan in its respective folder.
|
||||||
---
|
---
|
||||||
|
|
||||||
- [x] **Track: create a script that runs on my local system (i don't run consul locally) that: - check consul services are registered correctly - diplays the expected state (who is primary, what replicas exist) - show basic litefs status info for each node**
|
|
||||||
*Link: [./tracks/cluster_status_python_20260208/](./tracks/cluster_status_python_20260208/)*
|
|
||||||
|
|||||||
Reference in New Issue
Block a user