From e2253c2709a6e7dd132aec08ea34a86bef038fe7 Mon Sep 17 00:00:00 2001 From: Alva Zhang <140438385+Alva8756@users.noreply.github.com> Date: Tue, 26 Sep 2023 09:58:49 -0700 Subject: [PATCH] FS-928 Optimize bom cmd according to thread discussion. (#49) * optimize bom cmd * fix typo and defer to Cobra --- cmd/create/bomupload.go | 2 +- cmd/create/create.go | 2 +- cmd/get/aoc-mac-address.go | 47 -------------- cmd/get/bmc-mac-address.go | 47 -------------- cmd/get/bom.go | 65 +++++++++++++++++++ cmd/get/get.go | 3 +- docs/mctl_create.md | 2 +- docs/mctl_create_bom.md | 28 ++++++++ docs/mctl_get.md | 3 +- ...l_get_aocMacAddress.md => mctl_get_bom.md} | 11 ++-- 10 files changed, 104 insertions(+), 106 deletions(-) delete mode 100644 cmd/get/aoc-mac-address.go delete mode 100644 cmd/get/bmc-mac-address.go create mode 100644 cmd/get/bom.go create mode 100644 docs/mctl_create_bom.md rename docs/{mctl_get_aocMacAddress.md => mctl_get_bom.md} (62%) diff --git a/cmd/create/bomupload.go b/cmd/create/bomupload.go index 08191ee2..04731c27 100644 --- a/cmd/create/bomupload.go +++ b/cmd/create/bomupload.go @@ -20,7 +20,7 @@ var ( ) var uploadBomFile = &cobra.Command{ - Use: "uploadbom", + Use: "bom", Short: "Upload Bom File", Run: func(cmd *cobra.Command, args []string) { theApp := mctl.MustCreateApp(cmd.Context()) diff --git a/cmd/create/create.go b/cmd/create/create.go index 3a1614f2..5056a671 100644 --- a/cmd/create/create.go +++ b/cmd/create/create.go @@ -13,7 +13,7 @@ var create = &cobra.Command{ Use: "create", Short: "Create resources", Run: func(cmd *cobra.Command, args []string) { - commands := []string{"firmware", "firmware-set", "uploadbom"} + commands := []string{"firmware", "firmware-set", "bom"} log.Fatal("A valid create command parameter was expected: " + strings.Join(commands, ", ")) }, } diff --git a/cmd/get/aoc-mac-address.go b/cmd/get/aoc-mac-address.go deleted file mode 100644 index dfcef2fe..00000000 --- a/cmd/get/aoc-mac-address.go +++ /dev/null @@ -1,47 +0,0 @@ -package get - -import ( - "log" - - mctl "github.com/metal-toolbox/mctl/cmd" - "github.com/metal-toolbox/mctl/internal/app" - "github.com/spf13/cobra" -) - -type getBomInfoByAocMacAddressFlags struct { - macAddr string -} - -var ( - flagsGetBomByAocMacAddress *getBomInfoByAocMacAddressFlags -) - -var getBomInfoByAocMacAddress = &cobra.Command{ - Use: "aocmacaddress", - Short: "Get bom object by aocMacAddr", - Run: func(cmd *cobra.Command, args []string) { - theApp := mctl.MustCreateApp(cmd.Context()) - - client, err := app.NewServerserviceClient(cmd.Context(), theApp.Config.Serverservice, theApp.Reauth) - if err != nil { - log.Fatal(err) - } - - bomInfo, _, err := client.GetBomInfoByAOCMacAddr(cmd.Context(), flagsGetBomByAocMacAddress.macAddr) - if err != nil { - log.Fatal(err) - } - - writeResults(bomInfo) - }, -} - -func init() { - flagsGetBomByAocMacAddress = &getBomInfoByAocMacAddressFlags{} - - getBomInfoByAocMacAddress.PersistentFlags().StringVar(&flagsGetBomByAocMacAddress.macAddr, "get-bom-by-aoc-mac-address", "", "get bom info by aocMacAddr") - - if err := getBomInfoByAocMacAddress.MarkPersistentFlagRequired("get-bom-by-aoc-mac-address"); err != nil { - log.Fatal(err) - } -} diff --git a/cmd/get/bmc-mac-address.go b/cmd/get/bmc-mac-address.go deleted file mode 100644 index 708d9430..00000000 --- a/cmd/get/bmc-mac-address.go +++ /dev/null @@ -1,47 +0,0 @@ -package get - -import ( - "log" - - mctl "github.com/metal-toolbox/mctl/cmd" - "github.com/metal-toolbox/mctl/internal/app" - "github.com/spf13/cobra" -) - -type getBomInfoByBmcMacAddressFlags struct { - macAddr string -} - -var ( - flagsGetBomByBmcMacAddress *getBomInfoByBmcMacAddressFlags -) - -var getBomInfoByBmcMacAddress = &cobra.Command{ - Use: "bmcmacaddress", - Short: "Get bom object by bmcMacAddr", - Run: func(cmd *cobra.Command, args []string) { - theApp := mctl.MustCreateApp(cmd.Context()) - - client, err := app.NewServerserviceClient(cmd.Context(), theApp.Config.Serverservice, theApp.Reauth) - if err != nil { - log.Fatal(err) - } - - bomInfo, _, err := client.GetBomInfoByBMCMacAddr(cmd.Context(), flagsGetBomByBmcMacAddress.macAddr) - if err != nil { - log.Fatal(err) - } - - writeResults(bomInfo) - }, -} - -func init() { - flagsGetBomByBmcMacAddress = &getBomInfoByBmcMacAddressFlags{} - - getBomInfoByBmcMacAddress.PersistentFlags().StringVar(&flagsGetBomByBmcMacAddress.macAddr, "get-bom-by-bmc-mac-address", "", "get bom info by bmcMacAddr") - - if err := getBomInfoByBmcMacAddress.MarkPersistentFlagRequired("get-bom-by-bmc-mac-address"); err != nil { - log.Fatal(err) - } -} diff --git a/cmd/get/bom.go b/cmd/get/bom.go new file mode 100644 index 00000000..5ef30983 --- /dev/null +++ b/cmd/get/bom.go @@ -0,0 +1,65 @@ +package get + +import ( + "log" + + mctl "github.com/metal-toolbox/mctl/cmd" + "github.com/metal-toolbox/mctl/internal/app" + "github.com/spf13/cobra" + serverservice "go.hollow.sh/serverservice/pkg/api/v1" +) + +type getBomInfoByBmcMacAddressFlags struct { + aocMacAddr string + bmcMacAddr string +} + +func (gb *getBomInfoByBmcMacAddressFlags) hasAOCMacAddr() bool { + return gb.aocMacAddr != "" +} + +func (gb *getBomInfoByBmcMacAddressFlags) hasBMCMacAddr() bool { + return gb.bmcMacAddr != "" +} + +var ( + flagsGetBomByMacAddress *getBomInfoByBmcMacAddressFlags +) + +var getBomInfoByMacAddress = &cobra.Command{ + Use: "bom", + Short: "Get bom object by AOC or BMC Addr", + Run: func(cmd *cobra.Command, args []string) { + if !flagsGetBomByMacAddress.hasAOCMacAddr() && !flagsGetBomByMacAddress.hasBMCMacAddr() { + log.Fatalf("--aoc-mac and --bmc-mac not set") + } + + theApp := mctl.MustCreateApp(cmd.Context()) + + client, err := app.NewServerserviceClient(cmd.Context(), theApp.Config.Serverservice, theApp.Reauth) + if err != nil { + log.Fatal(err) + } + + var bomInfo *serverservice.Bom + if flagsGetBomByMacAddress.hasAOCMacAddr() { + bomInfo, _, err = client.GetBomInfoByAOCMacAddr(cmd.Context(), flagsGetBomByMacAddress.aocMacAddr) + } else { + bomInfo, _, err = client.GetBomInfoByBMCMacAddr(cmd.Context(), flagsGetBomByMacAddress.bmcMacAddr) + } + if err != nil { + log.Fatal(err) + } + + writeResults(bomInfo) + }, +} + +func init() { + flagsGetBomByMacAddress = &getBomInfoByBmcMacAddressFlags{} + + getBomInfoByMacAddress.PersistentFlags().StringVar(&flagsGetBomByMacAddress.aocMacAddr, "aoc-mac", "", "get bom info by aoc mac address") + getBomInfoByMacAddress.PersistentFlags().StringVar(&flagsGetBomByMacAddress.bmcMacAddr, "bmc-mac", "", "get bom info by bmc mac address") + + getBomInfoByMacAddress.MarkFlagsMutuallyExclusive("aoc-mac", "bmc-mac") +} diff --git a/cmd/get/get.go b/cmd/get/get.go index 3cc30ecd..88b7a79d 100644 --- a/cmd/get/get.go +++ b/cmd/get/get.go @@ -25,8 +25,7 @@ func init() { cmdGet.AddCommand(getFirmware) cmdGet.AddCommand(getFirmwareSet) cmdGet.AddCommand(getBiosConfig) - cmdGet.AddCommand(getBomInfoByAocMacAddress) - cmdGet.AddCommand(getBomInfoByBmcMacAddress) + cmdGet.AddCommand(getBomInfoByMacAddress) cmdGet.PersistentFlags().StringVarP(&output, "output", "o", "json", "{json|text}") } diff --git a/docs/mctl_create.md b/docs/mctl_create.md index e83e1a21..ebf42bba 100644 --- a/docs/mctl_create.md +++ b/docs/mctl_create.md @@ -24,7 +24,7 @@ mctl create [flags] ### SEE ALSO * [mctl](mctl.md) - mctl is a CLI utility to interact with metal toolbox services +* [mctl create bom](mctl_create_bom.md) - Upload Bom File * [mctl create firmware](mctl_create_firmware.md) - Create firmware * [mctl create firmware-set](mctl_create_firmware-set.md) - Create a firmware set -* [mctl create uploadbom](mctl_create_uploadbom.md) - Upload Bom File diff --git a/docs/mctl_create_bom.md b/docs/mctl_create_bom.md new file mode 100644 index 00000000..2e72d293 --- /dev/null +++ b/docs/mctl_create_bom.md @@ -0,0 +1,28 @@ +[Auto generated by spf13/cobra]: <> + +## mctl create bom + +Upload Bom File + +``` +mctl create bom [flags] +``` + +### Options + +``` + --from-xlsx-file string Xlsx file with bom informations + -h, --help help for bom +``` + +### Options inherited from parent commands + +``` + --config string config file (default is $XDG_CONFIG_HOME/mctl/config.yml) + --reauth re-authenticate with oauth services +``` + +### SEE ALSO + +* [mctl create](mctl_create.md) - Create resources + diff --git a/docs/mctl_get.md b/docs/mctl_get.md index ba7aa074..8f8c8336 100644 --- a/docs/mctl_get.md +++ b/docs/mctl_get.md @@ -25,9 +25,8 @@ mctl get [flags] ### SEE ALSO * [mctl](mctl.md) - mctl is a CLI utility to interact with metal toolbox services -* [mctl get aocmacaddress](mctl_get_aocmacaddress.md) - Get bom object by aocMacAddr * [mctl get bios-config](mctl_get_bios-config.md) - Get bios configuration information for a server -* [mctl get bmcmacaddress](mctl_get_bmcmacaddress.md) - Get bom object by bmcMacAddr +* [mctl get bom](mctl_get_bom.md) - Get bom object by AOC or BMC Addr * [mctl get component](mctl_get_component.md) - get server components * [mctl get condition](mctl_get_condition.md) - get server condition * [mctl get firmware](mctl_get_firmware.md) - Get information for given firmware identifier diff --git a/docs/mctl_get_aocMacAddress.md b/docs/mctl_get_bom.md similarity index 62% rename from docs/mctl_get_aocMacAddress.md rename to docs/mctl_get_bom.md index 85be2425..22a017ba 100644 --- a/docs/mctl_get_aocMacAddress.md +++ b/docs/mctl_get_bom.md @@ -1,18 +1,19 @@ [Auto generated by spf13/cobra]: <> -## mctl get aocmacaddress +## mctl get bom -Get bom object by aocMacAddr +Get bom object by AOC or BMC Addr ``` -mctl get aocmacaddress [flags] +mctl get bom [flags] ``` ### Options ``` - --get-bom-by-aoc-mac-address string get bom info by aocMacAddr - -h, --help help for aocmacaddress + --aoc-mac string get bom info by aoc mac address + --bmc-mac string get bom info by bmc mac address + -h, --help help for bom ``` ### Options inherited from parent commands