Skip to content

Commit 6b00a67

Browse files
authored
feat: add debug logging to all action/mutation functions (#105)
## Summary - Add `shared.Debugf` logging to all 58 action/mutation functions across 18 files - Covers server CRUD, volume ops, FIP ops, router/network/SG ops, LB delete - All create modals, picker views, and server operations (rename, rebuild, resize, snapshot) - Each action logs before API call, after success, and after error - Complements the existing refresh-cycle debug logging from #98 ## Test plan - [ ] Run with `--debug`, create a server, check log shows `[servercreate]` entries - [ ] Delete a resource, check log shows `[action]` entries - [ ] `go build ./...` and `go test ./...` pass
2 parents e428741 + 17cc80f commit 6b00a67

18 files changed

Lines changed: 170 additions & 0 deletions

File tree

src/internal/app/actions_image.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,21 +88,27 @@ func (m Model) openImageDeactivateConfirm() (Model, tea.Cmd) {
8888
func (m Model) doDeactivateImage(id, name string) tea.Cmd {
8989
imgClient := m.client.Image
9090
return func() tea.Msg {
91+
shared.Debugf("[action] deactivating image %s", name)
9192
err := image.DeactivateImage(context.Background(), imgClient, id)
9293
if err != nil {
94+
shared.Debugf("[action] deactivate image %s failed: %s", name, err)
9395
return shared.ResourceActionErrMsg{Action: "Deactivate image", Name: name, Err: err}
9496
}
97+
shared.Debugf("[action] deactivated image %s", name)
9598
return shared.ResourceActionMsg{Action: "Deactivated image", Name: name}
9699
}
97100
}
98101

99102
func (m Model) doReactivateImage(id, name string) tea.Cmd {
100103
imgClient := m.client.Image
101104
return func() tea.Msg {
105+
shared.Debugf("[action] reactivating image %s", name)
102106
err := image.ReactivateImage(context.Background(), imgClient, id)
103107
if err != nil {
108+
shared.Debugf("[action] reactivate image %s failed: %s", name, err)
104109
return shared.ResourceActionErrMsg{Action: "Reactivate image", Name: name, Err: err}
105110
}
111+
shared.Debugf("[action] reactivated image %s", name)
106112
return shared.ResourceActionMsg{Action: "Reactivated image", Name: name}
107113
}
108114
}

src/internal/app/actions_resource.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,22 @@ func (m Model) doAllocateFIP() (Model, tea.Cmd) {
174174
m.statusBar.Hint = "Allocating floating IP..."
175175
networkClient := m.client.Network
176176
return m, func() tea.Msg {
177+
shared.Debugf("[action] allocating floating IP")
177178
nets, err := network.ListExternalNetworks(context.Background(), networkClient)
178179
if err != nil {
180+
shared.Debugf("[action] allocate floating IP failed: %s", err)
179181
return shared.ResourceActionErrMsg{Action: "Allocate", Name: "floating IP", Err: err}
180182
}
181183
if len(nets) == 0 {
184+
shared.Debugf("[action] allocate floating IP failed: no external networks available")
182185
return shared.ResourceActionErrMsg{Action: "Allocate", Name: "floating IP", Err: fmt.Errorf("no external networks available")}
183186
}
184187
fip, err := network.AllocateFloatingIP(context.Background(), networkClient, nets[0].ID)
185188
if err != nil {
189+
shared.Debugf("[action] allocate floating IP failed: %s", err)
186190
return shared.ResourceActionErrMsg{Action: "Allocate", Name: "floating IP", Err: err}
187191
}
192+
shared.Debugf("[action] allocated floating IP %s", fip.FloatingIP)
188193
return shared.ResourceActionMsg{Action: "Allocated", Name: fip.FloatingIP}
189194
}
190195
}

src/internal/app/actions_server.go

Lines changed: 86 additions & 0 deletions
Large diffs are not rendered by default.

src/internal/ui/fippicker/fippicker.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,14 +249,18 @@ func (m Model) associateFIP(fip network.FloatingIP) tea.Cmd {
249249
fipID := fip.ID
250250
fipAddr := fip.FloatingIP
251251
return func() tea.Msg {
252+
shared.Debugf("[fippicker] associating FIP %s (%s) to server %s", fipID, fipAddr, serverName)
252253
portID, err := network.FindServerPortID(context.Background(), client, serverID)
253254
if err != nil {
255+
shared.Debugf("[fippicker] error finding port for server %s: %v", serverID, err)
254256
return associateErrMsg{err: err}
255257
}
256258
err = network.AssociateFloatingIP(context.Background(), client, fipID, portID)
257259
if err != nil {
260+
shared.Debugf("[fippicker] error associating FIP %s: %v", fipID, err)
258261
return associateErrMsg{err: err}
259262
}
263+
shared.Debugf("[fippicker] associated FIP %s to server %s", fipAddr, serverName)
260264
return associateDoneMsg{fipAddr: fipAddr, serverName: serverName}
261265
}
262266
}
@@ -266,25 +270,32 @@ func (m Model) allocateAndAssociate() tea.Cmd {
266270
serverID := m.serverID
267271
serverName := m.serverName
268272
return func() tea.Msg {
273+
shared.Debugf("[fippicker] allocating and associating FIP for server %s", serverName)
269274
nets, err := network.ListExternalNetworks(context.Background(), client)
270275
if err != nil {
276+
shared.Debugf("[fippicker] error listing external networks: %v", err)
271277
return allocateErrMsg{err: err}
272278
}
273279
if len(nets) == 0 {
280+
shared.Debugf("[fippicker] no external networks available")
274281
return allocateErrMsg{err: fmt.Errorf("no external networks available")}
275282
}
276283
fip, err := network.AllocateFloatingIP(context.Background(), client, nets[0].ID)
277284
if err != nil {
285+
shared.Debugf("[fippicker] error allocating FIP: %v", err)
278286
return allocateErrMsg{err: err}
279287
}
280288
portID, err := network.FindServerPortID(context.Background(), client, serverID)
281289
if err != nil {
290+
shared.Debugf("[fippicker] error finding port for server %s: %v", serverID, err)
282291
return allocateErrMsg{err: err}
283292
}
284293
err = network.AssociateFloatingIP(context.Background(), client, fip.ID, portID)
285294
if err != nil {
295+
shared.Debugf("[fippicker] error associating FIP %s: %v", fip.ID, err)
286296
return allocateErrMsg{err: err}
287297
}
298+
shared.Debugf("[fippicker] allocated and associated FIP %s to server %s", fip.FloatingIP, serverName)
288299
return allocateDoneMsg{fipAddr: fip.FloatingIP, serverName: serverName}
289300
}
290301
}

src/internal/ui/keypaircreate/keypaircreate.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,21 +476,27 @@ func (m Model) submit() (Model, tea.Cmd) {
476476

477477
if publicKey != "" {
478478
return m, tea.Batch(m.spinner.Tick, func() tea.Msg {
479+
shared.Debugf("[keypaircreate] importing keypair %q", name)
479480
kp, err := compute.ImportKeyPair(context.Background(), client, name, publicKey)
480481
if err != nil {
482+
shared.Debugf("[keypaircreate] error importing keypair %q: %v", name, err)
481483
return keypairCreateErrMsg{err: err}
482484
}
485+
shared.Debugf("[keypaircreate] imported keypair %q", name)
483486
return keypairCreatedMsg{kp: kp}
484487
})
485488
}
486489

487490
algo := kt.algorithm
488491
keySize := kt.keySize
489492
return m, tea.Batch(m.spinner.Tick, func() tea.Msg {
493+
shared.Debugf("[keypaircreate] generating keypair %q (algo=%s)", name, algo)
490494
kp, err := compute.GenerateAndImportKeyPair(context.Background(), client, name, algo, keySize)
491495
if err != nil {
496+
shared.Debugf("[keypaircreate] error generating keypair %q: %v", name, err)
492497
return keypairCreateErrMsg{err: err}
493498
}
499+
shared.Debugf("[keypaircreate] generated keypair %q", name)
494500
return keypairCreatedMsg{kp: kp}
495501
})
496502
}

src/internal/ui/networkcreate/networkcreate.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,13 @@ func (m Model) submit() (Model, tea.Cmd) {
221221
client := m.client
222222

223223
return m, tea.Batch(m.spinner.Tick, func() tea.Msg {
224+
shared.Debugf("[networkcreate] creating network %q", name)
224225
_, err := network.CreateNetwork(context.Background(), client, name, adminUp)
225226
if err != nil {
227+
shared.Debugf("[networkcreate] error creating network %q: %v", name, err)
226228
return netCreateErrMsg{err: err}
227229
}
230+
shared.Debugf("[networkcreate] created network %q", name)
228231
return netCreatedMsg{}
229232
})
230233
}

src/internal/ui/routercreate/routercreate.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,10 +334,13 @@ func (m Model) submit() (Model, tea.Cmd) {
334334
client := m.client
335335

336336
return m, tea.Batch(m.spinner.Tick, func() tea.Msg {
337+
shared.Debugf("[routercreate] creating router %q", name)
337338
_, err := network.CreateRouter(context.Background(), client, name, extNetworkID, adminUp)
338339
if err != nil {
340+
shared.Debugf("[routercreate] error creating router %q: %v", name, err)
339341
return routerCreateErrMsg{err: err}
340342
}
343+
shared.Debugf("[routercreate] created router %q", name)
341344
return routerCreatedMsg{}
342345
})
343346
}

src/internal/ui/servercreate/servercreate.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,10 +625,13 @@ func (m Model) submit() (Model, tea.Cmd) {
625625
m.err = ""
626626
client := m.computeClient
627627
return m, tea.Batch(m.spinner.Tick, func() tea.Msg {
628+
shared.Debugf("[servercreate] creating server %q", name)
628629
srv, err := compute.CreateServerWithOpts(context.Background(), client, createOpts)
629630
if err != nil {
631+
shared.Debugf("[servercreate] error creating server %q: %v", name, err)
630632
return serverCreateErrMsg{err: err}
631633
}
634+
shared.Debugf("[servercreate] created server %q (id=%s)", name, srv.ID)
632635
return serverCreatedMsg{server: srv}
633636
})
634637
}

src/internal/ui/serverpicker/serverpicker.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,13 @@ func (m Model) attachVolume(srv compute.Server) tea.Cmd {
269269
serverName := srv.Name
270270
_ = volumeName // used in the msg struct
271271
return func() tea.Msg {
272+
shared.Debugf("[serverpicker] attaching volume %s to server %s (%s)", volumeID, serverID, serverName)
272273
err := volume.AttachVolume(context.Background(), client, serverID, volumeID)
273274
if err != nil {
275+
shared.Debugf("[serverpicker] error attaching volume %s to server %s: %v", volumeID, serverID, err)
274276
return attachErrMsg{err: err}
275277
}
278+
shared.Debugf("[serverpicker] attached volume %s to server %s (%s)", volumeName, serverID, serverName)
276279
return attachDoneMsg{serverName: serverName, volumeName: volumeName}
277280
}
278281
}

src/internal/ui/serverrebuild/serverrebuild.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,13 @@ func (m Model) doRebuild(img image.Image) (Model, tea.Cmd) {
216216
id := m.serverID
217217
imageID := img.ID
218218
return m, tea.Batch(m.spinner.Tick, func() tea.Msg {
219+
shared.Debugf("[serverrebuild] rebuilding server %s (%s) with image %s", id, name, imageID)
219220
err := compute.RebuildServer(context.Background(), client, id, imageID)
220221
if err != nil {
222+
shared.Debugf("[serverrebuild] error rebuilding server %s: %v", id, err)
221223
return rebuildErrMsg{err: err}
222224
}
225+
shared.Debugf("[serverrebuild] rebuilt server %s (%s)", id, name)
223226
return rebuildDoneMsg{name: name}
224227
})
225228
}

0 commit comments

Comments
 (0)