[Git][root/netboxadm][main] feat: add device delete subcommand

Theo pushed to branch main at Root / Netboxadm Commits: 120453b1 by Theo at 2025-07-28T21:43:37-03:00 feat: add device delete subcommand - - - - - 2 changed files: - cmd/device.go - + cmd/device/delete.go Changes: ===================================== cmd/device.go ===================================== @@ -16,5 +16,6 @@ var NetboxClient any func init() { deviceCmd.AddCommand( device.CreateCmd, + device.DeleteCmd, ) } ===================================== cmd/device/delete.go ===================================== @@ -0,0 +1,76 @@ +package device + +import ( + "fmt" + + "gitlab.c3sl.ufpr.br/root/netboxadm/internal/models" + "gitlab.c3sl.ufpr.br/root/netboxadm/internal/nethuh" + "gitlab.c3sl.ufpr.br/root/netboxadm/internal/route" + "gitlab.c3sl.ufpr.br/root/netboxadm/pkg/rest" + + "github.com/fatih/color" + "github.com/jedib0t/go-pretty/v6/list" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var DeleteCmd = &cobra.Command{ + Use: "delete", + Short: "Delete a Netbox device", + RunE: deleteDeviceCmd, +} + +func deleteDeviceCmd(cmd *cobra.Command, args []string) error { + c := rest.NewClient( + viper.GetString("netbox.url"), + viper.GetString("netbox.token"), + ) + + selected, err := nethuh.SelectDevice(c) + if err != nil { + return err + } + + color.Red("The following device will be deleted:") + printDevice(selected) + color.Yellow("\nPS: interfaces, ips, macs... will too, be deleted!\n\n") + ok := nethuh.Confirm("Are you sure?") + if !ok { + return fmt.Errorf("User Aborted") + } + + err = rest.DELETE(c, route.Devices, selected.Id) + if err != nil { + return err + } + + fmt.Println(color.GreenString("Device deleted sucessfully!"), color.RedString(">:)\n")) + return nil +} + +func printDevice(d *models.Device) error { + l := list.NewWriter() + l.AppendItem("Device: " + d.Display) + l.Indent() + l.AppendItem("Type: " + d.DeviceType.Display) + l.AppendItem("Role: " + d.Role.Display) + l.AppendItem("Status: " + d.Status.Label) + if d.Serial != "" { + l.AppendItem("Serial: " + d.Serial) + } + if d.Description != "" { + l.AppendItem("Description: " + d.Description) + } + if d.Comments != "" { + l.AppendItem("Comments: " + d.Comments) + } + if d.PrimaryIp4 != nil { + l.AppendItem("IPv4: " + d.PrimaryIp4.Address) + } + if d.PrimaryIp6 != nil { + l.AppendItem("IPv6: " + d.PrimaryIp6.Address) + } + l.SetStyle(list.StyleConnectedRounded) + fmt.Println(l.Render()) + return nil +} View it on GitLab: https://gitlab.c3sl.ufpr.br/root/netboxadm/-/commit/120453b1ff8cca4429b3979d... -- View it on GitLab: https://gitlab.c3sl.ufpr.br/root/netboxadm/-/commit/120453b1ff8cca4429b3979d... You're receiving this email because of your account on gitlab.c3sl.ufpr.br.
participantes (1)
-
Theo (@tss24)