...
1 package securitycompliance
2
3 import (
4 "context"
5 "fmt"
6 "time"
7
8 "edge-infra.dev/pkg/edge/api/graph/model"
9 "edge-infra.dev/pkg/edge/edgeadmin/registrar"
10 "edge-infra.dev/pkg/edge/edgecli"
11 "edge-infra.dev/pkg/edge/edgecli/constructors"
12 "edge-infra.dev/pkg/edge/edgecli/flagutil"
13 "edge-infra.dev/pkg/lib/cli/command"
14 "edge-infra.dev/pkg/lib/cli/rags"
15 )
16
17
18 func NewCmd(cfg *edgecli.Config) *command.Command {
19 flagsets := append(flagutil.GetCommonFlags(), flagutil.GetConnectionFlags(cfg)...)
20 var cmd *command.Command
21
22 cmd = &command.Command{
23 ShortUsage: "edge banner security-compliance",
24 ShortHelp: "Update the banner security compliance",
25 Flags: append(flagsets,
26 &rags.Rag{
27 Name: flagutil.BannerFlag,
28 Value: &rags.String{},
29 Usage: "Banner name",
30 Required: true,
31 },
32 &rags.Rag{
33 Name: flagutil.OptInEdgeSecurityCompliance,
34 Value: &rags.String{},
35 Usage: "Opt in edge security compliance",
36 Required: true,
37 },
38 ),
39 Exec: func(_ context.Context, _ []string) error {
40
41 if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil {
42 return err
43 }
44
45 registrar, err := constructors.BuildRegistrar(cmd.Rags)
46 if err != nil {
47 return err
48 }
49
50 updated, err := updateEdgeSecurityCompliance(cmd, registrar)
51 if err != nil {
52 fmt.Println("failed to update edge security compliance")
53 return err
54 }
55 if updated.StatusCode == 200 {
56 fmt.Println("edge security compliance updated")
57 } else {
58 fmt.Printf("edge security compliance not updated")
59 }
60
61 return nil
62 },
63 }
64 return cmd
65 }
66
67 func updateEdgeSecurityCompliance(cmd *command.Command, registrar *registrar.Registrar) (*model.EdgeResponsePayload, error) {
68 bannerName := flagutil.GetStringFlag(cmd.Rags, flagutil.BannerFlag)
69 optIn := flagutil.GetStringFlag(cmd.Rags, flagutil.OptInEdgeSecurityCompliance)
70
71 reqCtx, cancelReq := context.WithTimeout(context.Background(), time.Duration(30)*time.Second)
72 defer cancelReq()
73
74 updated, err := registrar.UpdateEdgeSecurityCompliance(reqCtx, bannerName, optIn)
75 if err != nil {
76 return &model.EdgeResponsePayload{}, err
77 }
78 return updated, nil
79 }
80
View as plain text