Skip to content

Commit 3f99894

Browse files
authored
Merge branch 'main' into vc/list-server
2 parents dae6c39 + 68b8771 commit 3f99894

File tree

7 files changed

+120
-25
lines changed

7 files changed

+120
-25
lines changed

.github/workflows/release.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
fetch-depth: 0
2121
-
2222
name: Set up Go
23-
uses: actions/setup-go@v4
23+
uses: actions/setup-go@v5
2424
with:
2525
go-version-file: go.mod
2626
-

.golangci.yml

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@ service:
66
linters-settings:
77
govet:
88
auto-fix: true
9+
shadow: true
910
settings:
1011
printf:
1112
funcs:
1213
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof
1314
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
1415
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
1516
- (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
16-
revive:
17-
min-confidence: 0
1817
gocyclo:
1918
min-complexity: 15
2019
dupl:
@@ -64,7 +63,6 @@ linters:
6463
- gocritic
6564
- err113
6665
- goimports
67-
- revive
6866
- misspell
6967
- noctx
7068
- stylecheck

cmd/validate_firmware.go

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package cmd
2+
3+
import (
4+
"log"
5+
6+
"github.com/google/uuid"
7+
"github.com/metal-toolbox/conditionorc/pkg/api/v1/conditions/types"
8+
"github.com/spf13/cobra"
9+
10+
"github.com/metal-toolbox/mctl/internal/app"
11+
)
12+
13+
type validationFlags struct {
14+
srvIDStr, fwSetIDStr, output string
15+
}
16+
17+
var (
18+
// incoming command line parameters
19+
fwvFlags = &validationFlags{}
20+
)
21+
22+
var validateFirmwareCmd = &cobra.Command{
23+
Use: "validate-firmware",
24+
Short: "validate a firmware set",
25+
Run: func(c *cobra.Command, _ []string) {
26+
theApp := MustCreateApp(c.Context())
27+
28+
client, err := app.NewConditionsClient(c.Context(), theApp.Config.Conditions, theApp.Reauth)
29+
if err != nil {
30+
log.Fatalf("creating app structure: %s", err.Error())
31+
}
32+
33+
srvID, err := uuid.Parse(fwvFlags.srvIDStr)
34+
if err != nil {
35+
log.Fatalf("parsing server id: %s", err.Error())
36+
}
37+
38+
fwSetID, err := uuid.Parse(fwvFlags.fwSetIDStr)
39+
if err != nil {
40+
log.Fatalf("parsing firmware set id: %s", err.Error())
41+
}
42+
43+
fvr := &types.FirmwareValidationRequest{
44+
ServerID: srvID,
45+
FirmwareSetID: fwSetID,
46+
}
47+
48+
resp, err := client.ValidateFirmwareSet(c.Context(), fvr)
49+
if err != nil {
50+
log.Fatalf("making validate firmware call: %s", err.Error())
51+
}
52+
53+
PrintResults(fwvFlags.output, resp)
54+
},
55+
}
56+
57+
func init() {
58+
RootCmd.AddCommand(validateFirmwareCmd)
59+
60+
AddOutputFlag(validateFirmwareCmd, &fwvFlags.output)
61+
AddFirmwareSetFlag(validateFirmwareCmd, &fwvFlags.fwSetIDStr)
62+
AddServerFlag(validateFirmwareCmd, &fwvFlags.srvIDStr)
63+
RequireFlag(validateFirmwareCmd, ServerFlag)
64+
RequireFlag(validateFirmwareCmd, FirmwareSetFlag)
65+
}

docs/mctl.md

+1
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@ mctl is a CLI utility to interact with metal toolbox services
2626
* [mctl install](mctl_install.md) - Install actions
2727
* [mctl list](mctl_list.md) - List resources
2828
* [mctl power](mctl_power.md) - Execute server/bmc power, set next-boot commands: [on|off|cycle|reset|soft|status|bmc-reset|boot-pxe-persistent]
29+
* [mctl validate-firmware](mctl_validate-firmware.md) - validate a firmware set
2930
* [mctl version](mctl_version.md) - Print mctl version
3031

docs/mctl_validate-firmware.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
[Auto generated by spf13/cobra]: <>
2+
3+
## mctl validate-firmware
4+
5+
validate a firmware set
6+
7+
```
8+
mctl validate-firmware -s SERVER --set-id SETID [flags]
9+
```
10+
11+
### Options
12+
13+
```
14+
-h, --help help for validate-firmware
15+
-o, --output outputType {json|text} (default json)
16+
-s, --server string [required] ID of the server
17+
--set-id string [required] ID of the firmware set
18+
```
19+
20+
### Options inherited from parent commands
21+
22+
```
23+
-c, --config string config file (default is $XDG_CONFIG_HOME/mctl/config.yml)
24+
--reauth re-authenticate with oauth services
25+
```
26+
27+
### SEE ALSO
28+
29+
* [mctl](mctl.md) - mctl is a CLI utility to interact with metal toolbox services
30+

go.mod

+8-7
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/dustin/go-humanize v1.0.1
1313
github.com/google/uuid v1.6.0
1414
github.com/metal-toolbox/bomservice v0.1.6
15-
github.com/metal-toolbox/conditionorc v1.1.11
15+
github.com/metal-toolbox/conditionorc v1.11.2
1616
github.com/metal-toolbox/fleetdb v1.19.5
1717
github.com/metal-toolbox/rivets v1.3.10
1818
github.com/nirasan/go-oauth-pkce-code-verifier v0.0.0-20220510032225-4f9f17eaec4c
@@ -23,13 +23,14 @@ require (
2323
github.com/spf13/viper v1.19.0
2424
github.com/zalando/go-keyring v0.2.5
2525
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56
26-
golang.org/x/net v0.28.0
26+
golang.org/x/net v0.30.0
2727
golang.org/x/oauth2 v0.22.0
2828
gopkg.in/go-jose/go-jose.v2 v2.6.3
2929
)
3030

3131
require (
32-
github.com/alessio/shellescape v1.4.1 // indirect
32+
33+
github.com/alessio/shellescape v1.4.2 // indirect
3334
github.com/banzaicloud/logrus-runtime-formatter v0.0.0-20190729070250-5ae5475bae5e // indirect
3435
github.com/beorn7/perks v1.0.1 // indirect
3536
github.com/bytedance/sonic v1.12.1 // indirect
@@ -40,7 +41,7 @@ require (
4041
github.com/cockroachdb/cockroach-go/v2 v2.3.8 // indirect
4142
github.com/coreos/go-oidc v2.2.1+incompatible // indirect
4243
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
43-
github.com/danieljoos/wincred v1.2.0 // indirect
44+
github.com/danieljoos/wincred v1.2.1 // indirect
4445
github.com/ericlagergren/decimal v0.0.0-20240411145413-00de7ca16731 // indirect
4546
github.com/felixge/httpsnoop v1.0.4 // indirect
4647
github.com/friendsofgo/errors v0.9.2 // indirect
@@ -131,9 +132,9 @@ require (
131132
go.uber.org/zap v1.27.0 // indirect
132133
gocloud.dev v0.38.0 // indirect
133134
golang.org/x/arch v0.9.0 // indirect
134-
golang.org/x/crypto v0.26.0 // indirect
135-
golang.org/x/sys v0.24.0 // indirect
136-
golang.org/x/text v0.17.0 // indirect
135+
golang.org/x/crypto v0.28.0 // indirect
136+
golang.org/x/sys v0.26.0 // indirect
137+
golang.org/x/text v0.19.0 // indirect
137138
golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 // indirect
138139
google.golang.org/api v0.189.0 // indirect
139140
google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect

go.sum

+14-14
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy
9090
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
9191
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
9292
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
93-
github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0=
94-
github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
93+
github.com/alessio/shellescape v1.4.2 h1:MHPfaU+ddJ0/bYWpgIeUnQUqKrlJ1S7BfEYPM4uEoM0=
94+
github.com/alessio/shellescape v1.4.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
9595
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
9696
github.com/apmckinlay/gsuneido v0.0.0-20190404155041-0b6cd442a18f/go.mod h1:JU2DOj5Fc6rol0yaT79Csr47QR0vONGwJtBNGRD7jmc=
9797
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
@@ -154,8 +154,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lV
154154
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
155155
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
156156
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
157-
github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE=
158-
github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec=
157+
github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs=
158+
github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps=
159159
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
160160
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
161161
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
@@ -552,8 +552,8 @@ github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxU
552552
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
553553
github.com/metal-toolbox/bomservice v0.1.6 h1:pmb0HXk/js27DEsT697sJkdBneEhPse13nM7Bj97tOM=
554554
github.com/metal-toolbox/bomservice v0.1.6/go.mod h1:FaBgXqh5ad0bCxVJoUNYKQ1ABL/y1+844W9mZ/4Dfyw=
555-
github.com/metal-toolbox/conditionorc v1.1.11 h1:ukHCQvOJh+z4C3Y18VjXizxnlM1rPIqh9pbEFaoiKwQ=
556-
github.com/metal-toolbox/conditionorc v1.1.11/go.mod h1:COiaJSl8GOoIfpaSscTfCzAKjp2VDjCUjm5iw9KEm/E=
555+
github.com/metal-toolbox/conditionorc v1.11.2 h1:92KeJ2oALrpL3T/6GeqW1CiBTh7BsgJxtJETDLHCJOc=
556+
github.com/metal-toolbox/conditionorc v1.11.2/go.mod h1:COiaJSl8GOoIfpaSscTfCzAKjp2VDjCUjm5iw9KEm/E=
557557
github.com/metal-toolbox/fleetdb v1.19.5 h1:ERgdFAUtWnT/AeVhCGclsENmwPhU88JUcgOZAdxWKYI=
558558
github.com/metal-toolbox/fleetdb v1.19.5/go.mod h1:k9MZXQsJX4NfBoANst6g1468papSs0tzsSyzN3gGWuQ=
559559
github.com/metal-toolbox/rivets v1.3.10 h1:UgYQSx/QJF6Yuzf+YSRF/t9soL6QjMY8sLugf/aMmII=
@@ -838,8 +838,8 @@ golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0
838838
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
839839
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
840840
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
841-
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
842-
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
841+
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
842+
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
843843
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
844844
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
845845
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -932,8 +932,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
932932
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
933933
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
934934
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
935-
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
936-
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
935+
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
936+
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
937937
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
938938
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
939939
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1063,8 +1063,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10631063
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10641064
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10651065
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1066-
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
1067-
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
1066+
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
1067+
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
10681068
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
10691069
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
10701070
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1083,8 +1083,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
10831083
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
10841084
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
10851085
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
1086-
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
1087-
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
1086+
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
1087+
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
10881088
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10891089
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
10901090
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

0 commit comments

Comments
 (0)