Session log: Machine deletion API implementation
This commit is contained in:
134
session-logs/2025-12-29-session.md
Normal file
134
session-logs/2025-12-29-session.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# GuruConnect Session Log - 2025-12-29
|
||||
|
||||
## Session Summary
|
||||
|
||||
### What Was Accomplished
|
||||
1. **Cleaned up stale persistent sessions** - Deleted 12 offline machines from PostgreSQL database
|
||||
2. **Added machine deletion API with uninstall support** - Implemented full machine management endpoints
|
||||
3. **Added AdminCommand protobuf message** - For server-to-agent commands (uninstall, restart, update)
|
||||
4. **Implemented machine history export** - Sessions and events can be exported before deletion
|
||||
|
||||
### Key Decisions
|
||||
- Machine deletion has two modes:
|
||||
- **Delete Only** (`DELETE /api/machines/:agent_id`) - Removes from DB, allows re-registration
|
||||
- **Delete with Uninstall** (`DELETE /api/machines/:agent_id?uninstall=true`) - Sends uninstall command to agent if online
|
||||
- History export available via `?export=true` query param or separate endpoint
|
||||
- AdminCommand message types: ADMIN_UNINSTALL, ADMIN_RESTART, ADMIN_UPDATE
|
||||
|
||||
### Problems Encountered
|
||||
- Server endpoint returning 404 - new binary may not have been properly deployed
|
||||
- Cross-compilation issues with ring crate for Windows MSVC on Linux
|
||||
|
||||
---
|
||||
|
||||
## Credentials
|
||||
|
||||
### GuruConnect Database (PostgreSQL)
|
||||
- **Host:** 172.16.3.30 (localhost from server)
|
||||
- **Database:** guruconnect
|
||||
- **User:** guruconnect
|
||||
- **Password:** gc_a7f82d1e4b9c3f60
|
||||
- **DATABASE_URL:** `postgres://guruconnect:gc_a7f82d1e4b9c3f60@localhost:5432/guruconnect`
|
||||
|
||||
### Build Server SSH
|
||||
- **Host:** 172.16.3.30
|
||||
- **User:** guru
|
||||
- **Password:** Gptf*77ttb123!@#-rmm
|
||||
- **Sudo Password:** Gptf*77ttb123!@#-rmm
|
||||
|
||||
---
|
||||
|
||||
## Infrastructure
|
||||
|
||||
### GuruConnect Server
|
||||
- **Host:** 172.16.3.30
|
||||
- **Port:** 3002
|
||||
- **Binary:** `/home/guru/guru-connect/target/release/guruconnect-server`
|
||||
- **Service:** guruconnect.service (systemd)
|
||||
- **Log:** ~/gc-server.log
|
||||
|
||||
### API Endpoints (NEW)
|
||||
```
|
||||
GET /api/machines - List all persistent machines
|
||||
GET /api/machines/:agent_id - Get machine info
|
||||
GET /api/machines/:agent_id/history - Get full session/event history
|
||||
DELETE /api/machines/:agent_id - Delete machine
|
||||
Query params:
|
||||
?uninstall=true - Send uninstall command to agent
|
||||
?export=true - Include history in response
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Files Modified
|
||||
|
||||
### Protobuf Schema
|
||||
- `proto/guruconnect.proto` - Added AdminCommand message and AdminCommandType enum
|
||||
|
||||
### Server Changes
|
||||
- `server/src/main.rs` - Added machine API routes and handlers
|
||||
- `server/src/api/mod.rs` - Added MachineInfo, MachineHistory, DeleteMachineParams types
|
||||
- `server/src/db/machines.rs` - Existing delete_machine function used
|
||||
- `server/src/db/sessions.rs` - Added get_sessions_for_machine()
|
||||
- `server/src/db/events.rs` - Added get_events_for_machine()
|
||||
- `server/src/session/mod.rs` - Added send_admin_command() and remove_agent() methods
|
||||
|
||||
### Agent Changes
|
||||
- `agent/src/session/mod.rs` - Added AdminCommand message handler
|
||||
- `agent/src/main.rs` - Added ADMIN_UNINSTALL and ADMIN_RESTART error handlers
|
||||
|
||||
---
|
||||
|
||||
## Important Commands
|
||||
|
||||
### Query/Delete Machines from PostgreSQL
|
||||
```bash
|
||||
# Query all machines
|
||||
ssh guru@172.16.3.30 'PGPASSWORD=gc_a7f82d1e4b9c3f60 psql -h localhost -U guruconnect -d guruconnect -c "SELECT agent_id, hostname, status FROM connect_machines;"'
|
||||
|
||||
# Delete all offline machines
|
||||
ssh guru@172.16.3.30 'PGPASSWORD=gc_a7f82d1e4b9c3f60 psql -h localhost -U guruconnect -d guruconnect -c "DELETE FROM connect_machines WHERE status = '\''offline'\'';"'
|
||||
```
|
||||
|
||||
### Build Server
|
||||
```bash
|
||||
# Build for Linux
|
||||
ssh guru@172.16.3.30 'cd ~/guru-connect && source ~/.cargo/env && cargo build -p guruconnect-server --release --target x86_64-unknown-linux-gnu'
|
||||
|
||||
# Restart server
|
||||
ssh guru@172.16.3.30 'pkill -f guruconnect-server; cd ~/guru-connect/server && DATABASE_URL="postgres://guruconnect:gc_a7f82d1e4b9c3f60@localhost:5432/guruconnect" nohup ~/guru-connect/target/release/guruconnect-server > ~/gc-server.log 2>&1 &'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pending Tasks
|
||||
|
||||
1. **Debug 404 on /api/machines endpoint** - The new routes aren't being recognized
|
||||
- May need to verify the correct binary is being executed
|
||||
- Check if old process is still running on port 3002
|
||||
|
||||
2. **Test machine deletion flow end-to-end**
|
||||
- Connect an agent
|
||||
- Delete with uninstall flag
|
||||
- Verify agent receives command and uninstalls
|
||||
|
||||
3. **Build Windows agent binary** - Cross-compilation needs MSVC tools or use Windows build
|
||||
|
||||
---
|
||||
|
||||
## Git Status
|
||||
|
||||
Committed and pushed:
|
||||
```
|
||||
commit dc7b742: Add machine deletion API with uninstall command support
|
||||
- 8 files changed, 380 insertions(+), 6 deletions(-)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Next Steps for Future Sessions
|
||||
|
||||
1. Investigate why `/api/machines` returns 404 - likely old binary running
|
||||
2. Use systemd properly for server management (need root access)
|
||||
3. Build and test Windows agent with uninstall command handling
|
||||
4. Add dashboard UI for machine management (list, delete with options)
|
||||
Reference in New Issue
Block a user