Skip to content

Commit 075b5d4

Browse files
committed
add validate-firmware as a command
1 parent 53d628b commit 075b5d4

File tree

5 files changed

+104
-6
lines changed

5 files changed

+104
-6
lines changed

.golangci.yml

+2-5
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:
@@ -62,9 +61,8 @@ linters:
6261
# additional linters
6362
- bodyclose
6463
- gocritic
65-
- goerr113
64+
- err113
6665
- goimports
67-
- revive
6866
- misspell
6967
- noctx
7068
- stylecheck
@@ -77,7 +75,6 @@ linters:
7775
- nilerr
7876
- reassign
7977
- whitespace
80-
- exportloopref
8178

8279
enable-all: false
8380
disable-all: true

cmd/bios/bios.go

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//nolint:gocritic,err113 // the commented code and dynamic error are intentional
12
package bios
23

34
import (

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+
}

go.mod

+20-1
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
@@ -29,18 +29,21 @@ require (
2929
)
3030

3131
require (
32+
github.com/KyleBanks/depth v1.2.1 // indirect
3233
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
3637
github.com/bytedance/sonic/loader v0.2.0 // indirect
38+
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
3739
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3840
github.com/cloudwego/base64x v0.1.4 // indirect
3941
github.com/cloudwego/iasm v0.2.0 // indirect
4042
github.com/cockroachdb/cockroach-go/v2 v2.3.8 // indirect
4143
github.com/coreos/go-oidc v2.2.1+incompatible // indirect
4244
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
4345
github.com/danieljoos/wincred v1.2.1 // indirect
46+
github.com/equinix-labs/otel-init-go v0.0.9 // indirect
4447
github.com/ericlagergren/decimal v0.0.0-20240411145413-00de7ca16731 // indirect
4548
github.com/felixge/httpsnoop v1.0.4 // indirect
4649
github.com/friendsofgo/errors v0.9.2 // indirect
@@ -51,6 +54,10 @@ require (
5154
github.com/go-jose/go-jose/v4 v4.0.2 // indirect
5255
github.com/go-logr/logr v1.4.2 // indirect
5356
github.com/go-logr/stdr v1.2.2 // indirect
57+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
58+
github.com/go-openapi/jsonreference v0.21.0 // indirect
59+
github.com/go-openapi/spec v0.21.0 // indirect
60+
github.com/go-openapi/swag v0.23.0 // indirect
5461
github.com/go-playground/locales v0.14.1 // indirect
5562
github.com/go-playground/universal-translator v0.18.1 // indirect
5663
github.com/go-playground/validator/v10 v10.22.0 // indirect
@@ -62,6 +69,7 @@ require (
6269
github.com/gorilla/websocket v1.5.3 // indirect
6370
github.com/gosimple/slug v1.14.0 // indirect
6471
github.com/gosimple/unidecode v1.0.1 // indirect
72+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 // indirect
6573
github.com/hashicorp/errwrap v1.1.0 // indirect
6674
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
6775
github.com/hashicorp/go-multierror v1.1.1 // indirect
@@ -78,12 +86,14 @@ require (
7886
github.com/jackc/pgtype v1.14.3 // indirect
7987
github.com/jackc/pgx/v4 v4.18.3 // indirect
8088
github.com/jmoiron/sqlx v1.4.0 // indirect
89+
github.com/josharian/intern v1.0.0 // indirect
8190
github.com/json-iterator/go v1.1.12 // indirect
8291
github.com/klauspost/compress v1.17.9 // indirect
8392
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
8493
github.com/leodido/go-urn v1.4.0 // indirect
8594
github.com/lib/pq v1.10.9 // indirect
8695
github.com/magiconair/properties v1.8.7 // indirect
96+
github.com/mailru/easyjson v0.7.7 // indirect
8797
github.com/mattn/go-isatty v0.0.20 // indirect
8898
github.com/mattn/go-runewidth v0.0.9 // indirect
8999
github.com/mitchellh/mapstructure v1.5.0 // indirect
@@ -112,6 +122,9 @@ require (
112122
github.com/stretchr/objx v0.5.2 // indirect
113123
github.com/stretchr/testify v1.9.0 // indirect
114124
github.com/subosito/gotenv v1.6.0 // indirect
125+
github.com/swaggo/files v1.0.1 // indirect
126+
github.com/swaggo/gin-swagger v1.6.0 // indirect
127+
github.com/swaggo/swag v1.16.3 // indirect
115128
github.com/tealeg/xlsx v1.0.5 // indirect
116129
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
117130
github.com/ugorji/go/codec v1.2.12 // indirect
@@ -125,17 +138,23 @@ require (
125138
go.opencensus.io v0.24.0 // indirect
126139
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
127140
go.opentelemetry.io/otel v1.28.0 // indirect
141+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect
142+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect
128143
go.opentelemetry.io/otel/metric v1.28.0 // indirect
144+
go.opentelemetry.io/otel/sdk v1.28.0 // indirect
129145
go.opentelemetry.io/otel/trace v1.28.0 // indirect
146+
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
130147
go.uber.org/multierr v1.11.0 // indirect
131148
go.uber.org/zap v1.27.0 // indirect
132149
gocloud.dev v0.38.0 // indirect
133150
golang.org/x/arch v0.9.0 // indirect
134151
golang.org/x/crypto v0.26.0 // indirect
135152
golang.org/x/sys v0.24.0 // indirect
136153
golang.org/x/text v0.17.0 // indirect
154+
golang.org/x/tools v0.23.0 // indirect
137155
golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 // indirect
138156
google.golang.org/api v0.189.0 // indirect
157+
google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf // indirect
139158
google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect
140159
google.golang.org/grpc v1.65.0 // indirect
141160
google.golang.org/protobuf v1.34.2 // indirect

go.sum

+16
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ github.com/bytedance/sonic v1.12.1/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKz
113113
github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
114114
github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM=
115115
github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
116+
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
117+
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
116118
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
117119
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
118120
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -175,6 +177,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m
175177
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
176178
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
177179
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
180+
github.com/equinix-labs/otel-init-go v0.0.9 h1:hdh0Qifs1vzFnaN6UpJz0pO6A6ZejXjvkEFi8OGTfpE=
181+
github.com/equinix-labs/otel-init-go v0.0.9/go.mod h1:5h8apPuPWz/KaMvAb3d0HoPEisQrUnqPmkc2T5SSpX4=
178182
github.com/ericlagergren/decimal v0.0.0-20190420051523-6335edbaa640/go.mod h1:mdYyfAkzn9kyJ/kMk/7WE9ufl9lflh+2NvecQ5mAghs=
179183
github.com/ericlagergren/decimal v0.0.0-20240411145413-00de7ca16731 h1:R/ZjJpjQKsZ6L/+Gf9WHbt31GG8NMVcpRqUE+1mMIyo=
180184
github.com/ericlagergren/decimal v0.0.0-20240411145413-00de7ca16731/go.mod h1:M9R1FoZ3y//hwwnJtO51ypFGwm8ZfpxPT/ZLtO1mcgQ=
@@ -366,7 +370,10 @@ github.com/gosimple/slug v1.14.0/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818J
366370
github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
367371
github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc=
368372
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
373+
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
369374
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
375+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0 h1:CWyXh/jylQWp2dtiV33mY4iSSp6yf4lmn+c7/tN+ObI=
376+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.21.0/go.mod h1:nCLIt0w3Ept2NwF8ThLmrppXsfT07oC8k0XNDxd8sVU=
370377
github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0=
371378
github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=
372379
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -554,6 +561,8 @@ github.com/metal-toolbox/bomservice v0.1.6 h1:pmb0HXk/js27DEsT697sJkdBneEhPse13n
554561
github.com/metal-toolbox/bomservice v0.1.6/go.mod h1:FaBgXqh5ad0bCxVJoUNYKQ1ABL/y1+844W9mZ/4Dfyw=
555562
github.com/metal-toolbox/conditionorc v1.1.11 h1:ukHCQvOJh+z4C3Y18VjXizxnlM1rPIqh9pbEFaoiKwQ=
556563
github.com/metal-toolbox/conditionorc v1.1.11/go.mod h1:COiaJSl8GOoIfpaSscTfCzAKjp2VDjCUjm5iw9KEm/E=
564+
github.com/metal-toolbox/conditionorc v1.11.2 h1:92KeJ2oALrpL3T/6GeqW1CiBTh7BsgJxtJETDLHCJOc=
565+
github.com/metal-toolbox/conditionorc v1.11.2/go.mod h1:COiaJSl8GOoIfpaSscTfCzAKjp2VDjCUjm5iw9KEm/E=
557566
github.com/metal-toolbox/fleetdb v1.19.5 h1:ERgdFAUtWnT/AeVhCGclsENmwPhU88JUcgOZAdxWKYI=
558567
github.com/metal-toolbox/fleetdb v1.19.5/go.mod h1:k9MZXQsJX4NfBoANst6g1468papSs0tzsSyzN3gGWuQ=
559568
github.com/metal-toolbox/rivets v1.3.10 h1:UgYQSx/QJF6Yuzf+YSRF/t9soL6QjMY8sLugf/aMmII=
@@ -786,13 +795,19 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIX
786795
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
787796
go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
788797
go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
798+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY=
799+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI=
800+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s=
801+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw=
789802
go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q=
790803
go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s=
791804
go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE=
792805
go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg=
793806
go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g=
794807
go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI=
795808
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
809+
go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
810+
go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
796811
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
797812
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
798813
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
@@ -930,6 +945,7 @@ golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su
930945
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
931946
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
932947
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
948+
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
933949
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
934950
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
935951
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=

0 commit comments

Comments
 (0)