Skip to content

Commit

Permalink
Update fw-set edit commands to add/remove firmware from fw-sets (#19)
Browse files Browse the repository at this point in the history
* Use fw uuids passed via CLI in fw-set removal

* Add flag to add fw to fw-set

Separate the flags for add/remove individual fw in a fw-set and update
the call sites to use the appropriate flag

* Fix no-op for fw-set name update

* Use log.Fatal() instead of log.Println()

* Use StringSliceVar for list of firmware commands

This way we use the CLI processor to parse the given comma separated
list of fw UUIDs into a []string

* log.Fatal() doesn't require os.Exit() afterwards
  • Loading branch information
diogomatsubara authored Jul 31, 2023
1 parent 46a429a commit 30214b4
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 17 deletions.
9 changes: 3 additions & 6 deletions cmd/create/firmware_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package create
import (
"fmt"
"log"
"os"
"strings"

"github.com/google/uuid"
mctl "github.com/metal-toolbox/mctl/cmd"
Expand Down Expand Up @@ -44,11 +42,10 @@ var createFirmwareSet = &cobra.Command{
payload.Attributes = []ss.Attributes{*attrs}
}

for _, id := range strings.Split(definedfirmwareSetFlags.FirmwareUUIDs, ",") {
for _, id := range definedfirmwareSetFlags.AddFirmwareUUIDs {
_, err = uuid.Parse(id)
if err != nil {
log.Println(err.Error())
os.Exit(1)
log.Fatal(err)
}

payload.ComponentFirmwareUUIDs = append(payload.ComponentFirmwareUUIDs, id)
Expand All @@ -70,7 +67,7 @@ var createFirmwareSet = &cobra.Command{
func init() {
definedfirmwareSetFlags = &mctl.FirmwareSetFlags{}

createFirmwareSet.PersistentFlags().StringVar(&definedfirmwareSetFlags.FirmwareUUIDs, "firmware-uuids", "", "comma separated list of UUIDs of firmware to be included in the set to be created")
createFirmwareSet.PersistentFlags().StringSliceVar(&definedfirmwareSetFlags.AddFirmwareUUIDs, "firmware-uuids", []string{}, "comma separated list of UUIDs of firmware to be included in the set to be created")
createFirmwareSet.PersistentFlags().StringVar(&definedfirmwareSetFlags.FirmwareSetName, "name", "", "A name for the firmware set")
createFirmwareSet.PersistentFlags().StringToStringVar(&definedfirmwareSetFlags.Labels, "labels", nil, "Labels to assign to the firmware set - 'vendor=foo,model=bar'")

Expand Down
39 changes: 30 additions & 9 deletions cmd/edit/firmware_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package edit
import (
"fmt"
"log"
"os"
"strings"

"github.com/google/uuid"
mctl "github.com/metal-toolbox/mctl/cmd"
Expand Down Expand Up @@ -40,26 +38,49 @@ var editFirmwareSet = &cobra.Command{
}

var attrs *ss.Attributes
var payloadUpdated bool

if len(editFWSetFlags.Labels) > 0 {
attrs, err = mctl.AttributeFromLabels(model.AttributeNSFirmwareSetLabels, editFWSetFlags.Labels)
if err != nil {
log.Fatal(err)
}

payload.Attributes = []ss.Attributes{*attrs}
payloadUpdated = true

}

if len(editFWSetFlags.AddFirmwareUUIDs) > 0 {
for _, id := range editFWSetFlags.AddFirmwareUUIDs {
_, err = uuid.Parse(id)
if err != nil {
log.Fatal(err)
}

payload.ComponentFirmwareUUIDs = append(payload.ComponentFirmwareUUIDs, id)
payloadUpdated = true
}
}

if len(editFWSetFlags.FirmwareSetName) > 0 {
payload.Name = editFWSetFlags.FirmwareSetName
payloadUpdated = true
}

if payloadUpdated {
_, err = client.UpdateComponentFirmwareSetRequest(cmd.Context(), id, payload)
if err != nil {
log.Fatal(err)
}
fmt.Println("firmware set updated: " + id.String())
}

if len(payload.ComponentFirmwareUUIDs) > 0 {
for _, id := range strings.Split(editFWSetFlags.FirmwareUUIDs, ",") {
if len(editFWSetFlags.RemoveFirmwareUUIDs) > 0 {
for _, id := range editFWSetFlags.RemoveFirmwareUUIDs {
_, err = uuid.Parse(id)
if err != nil {
log.Println(err.Error())
os.Exit(1)
log.Fatal(err)
}

payload.ComponentFirmwareUUIDs = append(payload.ComponentFirmwareUUIDs, id)
Expand All @@ -69,9 +90,8 @@ var editFirmwareSet = &cobra.Command{
if err != nil {
log.Fatal(err)
}
fmt.Println("firmware set uuids removed: " + id.String())
}

fmt.Println("firmware set updated: " + id.String())
},
}

Expand All @@ -85,6 +105,7 @@ func init() {
log.Fatal(err)
}

cmdFlags.StringVar(&editFWSetFlags.FirmwareUUIDs, "remove-firmware-uuids", "", "UUIDs of firmware to be removed from the set")
cmdFlags.StringSliceVar(&editFWSetFlags.RemoveFirmwareUUIDs, "remove-firmware-uuids", []string{}, "UUIDs of firmware to be removed from the set")
cmdFlags.StringSliceVar(&editFWSetFlags.AddFirmwareUUIDs, "add-firmware-uuids", []string{}, "UUIDs of firmware to be added to the set")

}
6 changes: 4 additions & 2 deletions cmd/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ type FirmwareSetFlags struct {
Labels map[string]string
// id is the firmware set id
ID string
// comma separated list of firmware UUIDs
FirmwareUUIDs string
// list of firmware UUIDs to be added to the set
AddFirmwareUUIDs []string
// list of firmware UUIDs to be removed from the set
RemoveFirmwareUUIDs []string
// name for the firmware set to be created/edited
FirmwareSetName string
}

0 comments on commit 30214b4

Please sign in to comment.