package delete import ( "context" "github.com/peterbourgon/ff/v3" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/edgeadmin/commands/operatorintervention/edgeextension" "edge-infra.dev/pkg/edge/edgecli" "edge-infra.dev/pkg/edge/edgecli/flagutil" "edge-infra.dev/pkg/lib/cli/command" "edge-infra.dev/pkg/lib/cli/rags" ) func NewDeleteRoleMapping(cfg *edgecli.Config) *command.Command { var ( edge = &edgeextension.Ext{Cfg: cfg} ) var cmd *command.Command cmd = &command.Command{ ShortUsage: "edge operatorintervention delete role-mapping", ShortHelp: "Deletes a single privilege from an existing role mapping", Options: []ff.Option{}, Flags: []*rags.Rag{ { Name: flagutil.OIRole, Usage: "Role whose mapping is to be updated", Value: &rags.String{}, Required: true, }, { Name: flagutil.OIPrivilege, Usage: "Privilege to be removed from the role mapping", Value: &rags.String{}, Required: true, }, }, Extensions: []command.Extension{edge}, Exec: func(ctx context.Context, _ []string) error { var mutation struct { DeleteOperatorInterventionRoleMapping struct { model.DeleteOperatorInterventionResponse } `graphql:"deleteOperatorInterventionRoleMapping(mapping: $mapping)"` } var variables = map[string]interface{}{ "mapping": model.DeleteOperatorInterventionMappingInput{ Role: flagutil.GetStringFlag(cmd.Rags, flagutil.OIRole), Privilege: &model.OperatorInterventionPrivilegeInput{Name: flagutil.GetStringFlag(cmd.Rags, flagutil.OIPrivilege)}, }, } err := edge.Client.Mutate(ctx, &mutation, variables) if err != nil { return err } return handleResponseFormatting( "Role Mapping", mutation.DeleteOperatorInterventionRoleMapping.Errors, ) }, } return cmd }