No description
Find a file
Graham McIntire 930885e21a
Add agent rename functionality
Implemented ability to rename agents through a new edit page following TDD:

Backend changes:
- Added update_agent_token/2 in Agents context for updating agent names
- Added update_changeset/2 in AgentToken schema that only allows name updates
- Security: Token field cannot be changed, only name field is allowed

LiveView implementation:
- Created AgentLive.Edit module with mount, validate, and save handlers
- Created edit.html.heex template with form for renaming agents
- Added route /orgs/:org_slug/agents/:id/edit
- Added Edit button to agent show page header
- Validates organization ownership using Repo.get_by!

Tests:
- Added comprehensive context tests for update_agent_token/2
- Added LiveView tests for edit page functionality
- Tests cover: loading, validation, save/redirect, auth, and org ownership

All 801 tests passing, no Credo warnings.
2026-01-17 15:48:47 -06:00
.gitlab/agents Add aprs.me project to home-cluster-agent configuration 2026-01-14 13:31:23 -06:00
assets Fix clipboard copy and org settings navigation 2026-01-17 12:18:49 -06:00
config credo cleanup 2026-01-17 15:00:52 -06:00
docs Add comprehensive Pangolin security rules 2026-01-15 12:25:21 -06:00
k8s Add zero-downtime deployment configuration 2026-01-17 12:44:22 -06:00
lib Add agent rename functionality 2026-01-17 15:48:47 -06:00
priv rename equipment to device 2026-01-17 14:48:46 -06:00
rel/overlays/bin add release 2026-01-02 14:36:38 -06:00
scripts Improve monitor script to eliminate screen flicker 2026-01-15 13:04:41 -06:00
test Add agent rename functionality 2026-01-17 15:48:47 -06:00
towerops Add towerops/gitlab-agent-helm-release.yaml via glab file sync 2026-01-02 14:22:22 -06:00
.credo.exs credo tweak 2026-01-17 15:32:33 -06:00
.dockerignore add release 2026-01-02 14:36:38 -06:00
.formatter.exs format 2025-12-21 11:31:08 -06:00
.gitignore update gitignore 2026-01-09 13:17:43 -06:00
.gitlab-ci.yml Set DEPLOY_TIMESTAMP from GitLab CI instead of pod metadata 2026-01-17 11:17:07 -06:00
.sourceignore Add .sourceignore to exclude non-k8s files from Flux 2026-01-02 14:43:57 -06:00
.test-watch.exs add test watch 2026-01-03 12:35:26 -06:00
.tool-versions Add comprehensive Dialyzer type specifications 2026-01-17 10:52:02 -06:00
AGENT_IMPLEMENTATION.md set up ses 2026-01-09 16:52:11 -06:00
AGENT_PROTOCOL.md agent improvements and agent config 2026-01-16 17:26:51 -06:00
AGENTS.md 1. User Authentication 2025-12-21 13:31:59 -06:00
AWS_SES_SETUP.md set up ses 2026-01-09 16:52:11 -06:00
CLAUDE.md fix neighbors 2026-01-16 16:09:15 -06:00
DEPLOYMENT.md more features 2026-01-02 14:06:44 -06:00
Dockerfile Silence debconf warnings in Docker builds 2026-01-03 16:00:54 -06:00
IMPLEMENTATION_PLAN.md more features 2026-01-02 14:06:44 -06:00
mix.exs Add gen_smtp dependency for Swoosh AmazonSES adapter 2026-01-11 15:41:21 -06:00
mix.lock update liveview 2026-01-14 13:54:48 -06:00
MOBILE_API.md add api for mobile login 2026-01-15 15:36:14 -06:00
README.md timescaledb 2025-12-21 17:17:26 -06:00
tail_logs.sh add logs helper script 2026-01-11 15:45:02 -06:00
TIMESCALEDB.md more features 2026-01-02 14:06:44 -06:00
TODOS.md credo tweak 2026-01-17 15:32:33 -06:00
WEBSOCKET_MIGRATION.md agent improvements and agent config 2026-01-16 17:26:51 -06:00

TowerOps

Network monitoring and alerting platform built with Phoenix LiveView.

Features

  • Multi-tenant architecture - Organizations with role-based permissions
  • Site hierarchy - Organize equipment across multiple sites
  • Automated monitoring - Real-time ping monitoring with configurable intervals
  • Time-series data - Efficient storage with TimescaleDB (optional)
  • Real-time updates - LiveView dashboard with PubSub
  • Equipment tracking - Monitor network devices by IP address

Quick Start

Prerequisites

  • Elixir 1.14+
  • PostgreSQL 14+
  • (Optional) TimescaleDB for production-grade time-series performance

Setup

# Install dependencies
mix setup

# Start the server
mix phx.server

Visit localhost:4000 from your browser.

TimescaleDB (Production Only)

Development: Uses standard PostgreSQL (no TimescaleDB required).

Production: TimescaleDB is automatically enabled for optimal performance with time-series data.

# Production deployment - install TimescaleDB first
brew tap timescale/tap && brew install timescaledb  # macOS
# Then run migrations with MIX_ENV=prod
MIX_ENV=prod mix ecto.migrate

See TIMESCALEDB.md for detailed installation and configuration.

How it works: Migrations detect the environment (MIX_ENV) and only enable TimescaleDB features (hypertables, compression, retention policies, continuous aggregates) in production.

Development

Database

mix ecto.create       # Create database
mix ecto.migrate      # Run migrations
mix ecto.reset        # Drop, create, and migrate

Testing

mix test              # Run all tests
mix test --trace      # Run with detailed output

Code Quality

mix format            # Format code with Styler
mix compile --warnings-as-errors

Learn more