feat: routers tab, server stop/start, lock/unlock, PRD gaps#19
Merged
Conversation
Stop/Start (o key): - ACTIVE server → stop (SHUTOFF), SHUTOFF server → start (ACTIVE) - Toggle pattern matching pause/unpause and suspend/resume - Bulk support via space-select Lock/Unlock (ctrl+l): - Lock prevents modifications, unlock removes protection - Auto-detects lock status from server object - Locked servers already show 🔒 icon in server list - Bulk support via space-select Both actions work from server list and detail views with confirmation modals. Help overlay updated.
Router list view:
- Columns: Name (flex), Status, External Gateway, Routes count
- Auto-refresh, sorting with s/S
- Enter opens detail, ctrl+n creates, ctrl+d deletes
Router detail view:
- Properties: Name, ID, Status, Admin State, External Gateway
- Interfaces section with navigable list (subnet + IP + port)
- Static routes section
- ctrl+a opens subnet picker to add interface
- ctrl+t removes selected interface (confirmation)
- ctrl+d deletes router (confirmation)
Router create modal:
- Name (text), External Network (inline picker from external networks),
Admin State (cycle Up/Down)
- Text input guard for vim j/k keys
Subnet picker modal:
- Lists all subnets with name + CIDR
- On select, adds as router interface
Backend (network/routers.go):
- ListRouters, GetRouter, CreateRouter, DeleteRouter
- AddRouterInterface, RemoveRouterInterface, ListRouterInterfaces
Document missing Nova server actions prioritized by usefulness: - High-value: rename, rebuild, create snapshot - Medium: rescue/unrescue, get password - Admin-only: migrate, evacuate, force delete, reset state, metadata Cross-referenced from Phase 5 and Phase 6 sections.
ImportKeyPair was setting client.Microversion to "2.2" then resetting to "" after the call. This wiped the "2.100" microversion set at connection time, causing subsequent server list requests to fail with 503 because the cloud requires the microversion header. Since we removed the Type field from CreateOpts (keys are generated locally now), the microversion override is no longer needed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Commits that were pushed after PR #18 was merged. Cherry-picked onto current main.
Server Stop/Start (
okey)Server Lock/Unlock (
ctrl+l)Router Tab (full CRUD)
ctrl+n): Name, external network picker, admin statectrl+d): Confirmation modalctrl+afrom detail): Subnet picker modalctrl+tfrom detail): Confirmation on selected interfacePRD Update
Fix
Verification
Server Stop/Start
o→ confirm stop → SHUTOFFo→ confirm start → ACTIVEo stop/startServer Lock/Unlock
ctrl+l→ confirm lock → 🔒 appearsctrl+l→ confirm unlock → 🔒 gonectrl+l lock/unlockRouter List
Router Detail
Router Create
ctrl+nopens create modalRouter Delete
ctrl+dfrom list or detail, confirmation modalRouter Interfaces
ctrl+afrom detail opens subnet pickerctrl+ton selected interface removes it (confirmation)General
go build ./...passesgo vet ./...passesgo test ./...passes