diff --git a/src/control/SConscript b/src/control/SConscript index 9b893d54f68..6d1cb12bc0f 100644 --- a/src/control/SConscript +++ b/src/control/SConscript @@ -50,6 +50,8 @@ def get_build_tags(benv): tags.append("firmware") if is_ucx_build(benv): tags.append("ucx") + if not is_release_build(benv): + tags.append("fault_injection") if len(tags) == 0: return "" return "-tags {}".format(','.join(tags)) diff --git a/src/control/cmd/dmg/fi.go b/src/control/cmd/dmg/fi.go new file mode 100644 index 00000000000..a3838fc2a5b --- /dev/null +++ b/src/control/cmd/dmg/fi.go @@ -0,0 +1,152 @@ +// +// (C) Copyright 2019-2022 Intel Corporation. +// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +//go:build fault_injection +// +build fault_injection + +package main + +import ( + "context" + "encoding/json" + "io/ioutil" + "math/rand" + "strconv" + "strings" + "time" + + "github.com/google/uuid" + "github.com/jessevdk/go-flags" + "github.com/pkg/errors" + "google.golang.org/grpc" + "google.golang.org/protobuf/proto" + + "github.com/daos-stack/daos/src/control/common/cmdutil" + chkpb "github.com/daos-stack/daos/src/control/common/proto/chk" + mgmtpb "github.com/daos-stack/daos/src/control/common/proto/mgmt" + "github.com/daos-stack/daos/src/control/lib/control" + "github.com/daos-stack/daos/src/control/system/checker" +) + +type faultsCmdRoot struct { + Faults faultCmd `command:"faults" description:"Inject system fault"` +} + +type faultCmd struct { + AddCheckerReport addCheckerReportCmd `command:"add-checker-report" description:"Add a system checker report"` +} + +type chkRptCls chkpb.CheckInconsistClass + +func (c chkRptCls) String() string { + return chkpb.CheckInconsistClass_name[int32(c)] +} + +func (c chkRptCls) Complete(match string) (comps []flags.Completion) { + for _, v := range chkpb.CheckInconsistClass_name { + if strings.HasPrefix(v, match) { + comps = append(comps, flags.Completion{Item: v}) + } + } + return +} + +func (c *chkRptCls) UnmarshalFlag(value string) error { + for i, v := range chkpb.CheckInconsistClass_name { + if v == value { + *c = chkRptCls(i) + return nil + } + } + + if v, err := strconv.Atoi(value); err == nil { + if _, found := chkpb.CheckInconsistClass_name[int32(v)]; found { + *c = chkRptCls(v) + return nil + } + } + return errors.Errorf("invalid class %s", value) +} + +type addCheckerReportCmd struct { + cmdutil.LogCmd + cfgCmd + ctlInvokerCmd + jsonOutputCmd + + File string `short:"f" long:"file" description:"File containing checker report in JSON format"` + Class chkRptCls `short:"c" long:"class" description:"Checker report class (canned reports)"` +} + +func (cmd *addCheckerReportCmd) Execute(_ []string) (errOut error) { + defer func() { + errOut = errors.Wrap(errOut, "add checker finding") + }() + + var rpt *chkpb.CheckReport + if cmd.File != "" { + buf, err := ioutil.ReadFile(cmd.File) + if err != nil { + return errors.Wrapf(err, "failed to open file %s", cmd.File) + } + rpt = new(chkpb.CheckReport) + if err := json.Unmarshal(buf, rpt); err != nil { + return errors.Wrapf(err, "failed to parse file %s", cmd.File) + } + } else { + rand.Seed(time.Now().UnixNano()) + + cls := chkpb.CheckInconsistClass(cmd.Class) + // Define some canned reports based on class. These can be used + // for prototyping and testing. For more control, define a report + // in JSON format and load it with the --file option. + switch cls { + case chkpb.CheckInconsistClass_CIC_POOL_BAD_LABEL: + rpt = &chkpb.CheckReport{ + Seq: rand.Uint64(), + Class: cls, + Action: chkpb.CheckInconsistAction_CIA_INTERACT, + PoolUuid: uuid.New().String(), + ActChoices: []chkpb.CheckInconsistAction{ + chkpb.CheckInconsistAction_CIA_TRUST_MS, + chkpb.CheckInconsistAction_CIA_TRUST_PS, + chkpb.CheckInconsistAction_CIA_IGNORE, + }, + ActDetails: []string{"ms-label", "ps-label"}, + } + default: + return errors.Errorf("no canned report for class: %s", cls) + } + + // For canned reports, annotate the report for nice messages. + // For reports loaded from file, don't annotate them, just use them as-is. + f := checker.AnnotateFinding(checker.NewFinding(rpt)) + rpt = &f.CheckReport + } + + if rpt.Class == chkpb.CheckInconsistClass_CIC_NONE { + return errors.New("class must be set") + } + + ctx := context.Background() + resp, err := control.InvokeFaultRPC(ctx, cmd.ctlInvoker, + func(ctx context.Context, conn *grpc.ClientConn) (proto.Message, error) { + cmd.Debugf("injecting checker report: %+v", rpt) + return mgmtpb.NewMgmtSvcClient(conn).FaultInjectReport(ctx, rpt) + }, + ) + + if cmd.jsonOutputEnabled() { + return cmd.outputJSON(resp, err) + } + + if err != nil { + return err + } + + cmd.Info("Checker report added") + + return nil +} diff --git a/src/control/cmd/dmg/fi_disabled.go b/src/control/cmd/dmg/fi_disabled.go new file mode 100644 index 00000000000..f52d90ccb90 --- /dev/null +++ b/src/control/cmd/dmg/fi_disabled.go @@ -0,0 +1,11 @@ +// +// (C) Copyright 2019-2022 Intel Corporation. +// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +//go:build !fault_injection +// +build !fault_injection + +package main + +type faultsCmdRoot struct{} diff --git a/src/control/cmd/dmg/main.go b/src/control/cmd/dmg/main.go index c43630fae30..57ed0a9a6fe 100644 --- a/src/control/cmd/dmg/main.go +++ b/src/control/cmd/dmg/main.go @@ -148,23 +148,24 @@ func (c *cfgCmd) setConfig(cfg *control.Config) { } type cliOptions struct { - AllowProxy bool `long:"allow-proxy" description:"Allow proxy configuration via environment"` - HostList string `short:"l" long:"host-list" description:"A comma separated list of addresses to connect to"` - Insecure bool `short:"i" long:"insecure" description:"Have dmg attempt to connect without certificates"` - Debug bool `short:"d" long:"debug" description:"Enable debug output"` - JSON bool `short:"j" long:"json" description:"Enable JSON output"` - JSONLogs bool `short:"J" long:"json-logging" description:"Enable JSON-formatted log output"` - ConfigPath string `short:"o" long:"config-path" description:"Client config file path"` - Server serverCmd `command:"server" alias:"srv" description:"Perform tasks related to remote servers"` - Storage storageCmd `command:"storage" alias:"sto" description:"Perform tasks related to storage attached to remote servers"` - Config configCmd `command:"config" alias:"cfg" description:"Perform tasks related to configuration of hardware on remote servers"` - System SystemCmd `command:"system" alias:"sys" description:"Perform distributed tasks related to DAOS system"` - Network NetCmd `command:"network" alias:"net" description:"Perform tasks related to network devices attached to remote servers"` - Pool PoolCmd `command:"pool" description:"Perform tasks related to DAOS pools"` - Cont ContCmd `command:"container" alias:"cont" description:"Perform tasks related to DAOS containers"` - Version versionCmd `command:"version" description:"Print dmg version"` - Telemetry telemCmd `command:"telemetry" alias:"telem" description:"Perform telemetry operations"` - Check checkCmdRoot `command:"check" description:"Check system health"` + AllowProxy bool `long:"allow-proxy" description:"Allow proxy configuration via environment"` + HostList string `short:"l" long:"host-list" description:"A comma separated list of addresses to connect to"` + Insecure bool `short:"i" long:"insecure" description:"Have dmg attempt to connect without certificates"` + Debug bool `short:"d" long:"debug" description:"Enable debug output"` + JSON bool `short:"j" long:"json" description:"Enable JSON output"` + JSONLogs bool `short:"J" long:"json-logging" description:"Enable JSON-formatted log output"` + ConfigPath string `short:"o" long:"config-path" description:"Client config file path"` + Server serverCmd `command:"server" alias:"srv" description:"Perform tasks related to remote servers"` + Storage storageCmd `command:"storage" alias:"sto" description:"Perform tasks related to storage attached to remote servers"` + Config configCmd `command:"config" alias:"cfg" description:"Perform tasks related to configuration of hardware on remote servers"` + System SystemCmd `command:"system" alias:"sys" description:"Perform distributed tasks related to DAOS system"` + Network NetCmd `command:"network" alias:"net" description:"Perform tasks related to network devices attached to remote servers"` + Pool PoolCmd `command:"pool" description:"Perform tasks related to DAOS pools"` + Cont ContCmd `command:"container" alias:"cont" description:"Perform tasks related to DAOS containers"` + Version versionCmd `command:"version" description:"Print dmg version"` + Telemetry telemCmd `command:"telemetry" alias:"telem" description:"Perform telemetry operations"` + Check checkCmdRoot `command:"check" description:"Check system health"` + faultsCmdRoot firmwareOption // build with tag "firmware" to enable ManPage cmdutil.ManCmd `command:"manpage" hidden:"true"` } diff --git a/src/control/common/proto/mgmt/mgmt.pb.go b/src/control/common/proto/mgmt/mgmt.pb.go index 11e533d9ce0..bec36b41ada 100644 --- a/src/control/common/proto/mgmt/mgmt.pb.go +++ b/src/control/common/proto/mgmt/mgmt.pb.go @@ -13,6 +13,7 @@ package mgmt import ( + chk "github.com/daos-stack/daos/src/control/common/proto/chk" shared "github.com/daos-stack/daos/src/control/common/proto/shared" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -38,132 +39,137 @@ var file_mgmt_mgmt_proto_rawDesc = []byte{ 0x0e, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x73, 0x76, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x61, 0x63, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x32, 0x95, 0x0f, 0x0a, 0x07, 0x4d, 0x67, 0x6d, 0x74, 0x53, 0x76, 0x63, 0x12, 0x27, - 0x0a, 0x04, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4a, 0x6f, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x18, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, - 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x67, - 0x6d, 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x50, 0x6f, - 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x50, 0x6f, 0x6f, 0x6c, 0x44, 0x65, 0x73, - 0x74, 0x72, 0x6f, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, - 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x76, 0x69, 0x63, 0x74, - 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x76, 0x69, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, - 0x45, 0x76, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x50, - 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x6f, 0x6f, - 0x6c, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, - 0x6f, 0x6c, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, - 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, - 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, - 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, - 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, - 0x0a, 0x0b, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x14, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, - 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, - 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x14, 0x2e, 0x6d, 0x67, - 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, - 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x50, 0x6f, - 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x12, 0x0f, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x10, 0x50, 0x6f, - 0x6f, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x41, 0x43, 0x4c, 0x12, 0x12, - 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x41, 0x43, 0x4c, 0x52, - 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x41, 0x43, 0x4c, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x69, - 0x66, 0x79, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x50, 0x6f, 0x6f, - 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x43, 0x4c, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x0d, - 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x42, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, - 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, - 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x11, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x53, 0x65, - 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x6f, - 0x6e, 0x74, 0x53, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, - 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, - 0x74, 0x6f, 0x70, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x3c, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, - 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x12, 0x14, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x12, 0x16, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, - 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x3f, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x00, 0x12, 0x3c, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x53, 0x74, 0x6f, 0x70, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, - 0x3f, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, - 0x12, 0x3c, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, - 0x72, 0x6f, 0x70, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, - 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x70, - 0x61, 0x69, 0x72, 0x12, 0x11, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x41, 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x41, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, - 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x2e, 0x6d, 0x67, - 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x61, 0x6f, 0x73, 0x2d, 0x73, 0x74, - 0x61, 0x63, 0x6b, 0x2f, 0x64, 0x61, 0x6f, 0x73, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x1a, 0x0d, 0x63, 0x68, 0x6b, 0x2f, 0x63, 0x68, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x32, 0xce, 0x0f, 0x0a, 0x07, 0x4d, 0x67, 0x6d, 0x74, 0x53, 0x76, 0x63, 0x12, 0x27, 0x0a, + 0x04, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4a, 0x6f, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x18, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x50, 0x6f, 0x6f, + 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, + 0x6f, 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x50, 0x6f, 0x6f, 0x6c, 0x44, 0x65, 0x73, 0x74, + 0x72, 0x6f, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x44, + 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x76, 0x69, 0x63, 0x74, 0x12, + 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x76, 0x69, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, + 0x76, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x50, 0x6f, + 0x6f, 0x6c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x6f, 0x6f, 0x6c, + 0x44, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, + 0x6c, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x39, 0x0a, 0x0a, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x13, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x0f, 0x50, + 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x18, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, + 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, + 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, + 0x0b, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x14, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, + 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x50, + 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, + 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x2e, 0x0a, 0x0a, 0x50, 0x6f, 0x6f, + 0x6c, 0x47, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x12, 0x0f, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, + 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x10, 0x50, 0x6f, 0x6f, + 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x41, 0x43, 0x4c, 0x12, 0x12, 0x2e, + 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x41, 0x43, 0x4c, 0x52, 0x65, + 0x71, 0x1a, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x43, 0x4c, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, + 0x79, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x41, + 0x43, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x34, 0x0a, 0x0d, 0x50, 0x6f, 0x6f, 0x6c, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x43, 0x4c, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x71, 0x1a, 0x0d, 0x2e, + 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x12, 0x36, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, + 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x11, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x53, 0x65, 0x74, + 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x53, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, + 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, + 0x6f, 0x70, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x3c, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, + 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x12, 0x14, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x12, 0x16, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, + 0x70, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x3f, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x3c, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, + 0x74, 0x6f, 0x70, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3f, + 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, + 0x3c, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x72, + 0x6f, 0x70, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, + 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, + 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x61, + 0x69, 0x72, 0x12, 0x11, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x41, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x50, + 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x37, 0x0a, 0x11, 0x46, 0x61, 0x75, + 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x10, + 0x2e, 0x63, 0x68, 0x6b, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x22, 0x00, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x64, 0x61, 0x6f, 0x73, 0x2d, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x64, 0x61, 0x6f, 0x73, + 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_mgmt_mgmt_proto_goTypes = []interface{}{ @@ -198,35 +204,37 @@ var file_mgmt_mgmt_proto_goTypes = []interface{}{ (*CheckPropReq)(nil), // 28: mgmt.CheckPropReq (*CheckActReq)(nil), // 29: mgmt.CheckActReq (*PoolUpgradeReq)(nil), // 30: mgmt.PoolUpgradeReq - (*JoinResp)(nil), // 31: mgmt.JoinResp - (*shared.ClusterEventResp)(nil), // 32: shared.ClusterEventResp - (*LeaderQueryResp)(nil), // 33: mgmt.LeaderQueryResp - (*PoolCreateResp)(nil), // 34: mgmt.PoolCreateResp - (*PoolDestroyResp)(nil), // 35: mgmt.PoolDestroyResp - (*PoolEvictResp)(nil), // 36: mgmt.PoolEvictResp - (*PoolExcludeResp)(nil), // 37: mgmt.PoolExcludeResp - (*PoolDrainResp)(nil), // 38: mgmt.PoolDrainResp - (*PoolExtendResp)(nil), // 39: mgmt.PoolExtendResp - (*PoolReintegrateResp)(nil), // 40: mgmt.PoolReintegrateResp - (*PoolQueryResp)(nil), // 41: mgmt.PoolQueryResp - (*PoolSetPropResp)(nil), // 42: mgmt.PoolSetPropResp - (*PoolGetPropResp)(nil), // 43: mgmt.PoolGetPropResp - (*ACLResp)(nil), // 44: mgmt.ACLResp - (*GetAttachInfoResp)(nil), // 45: mgmt.GetAttachInfoResp - (*ListPoolsResp)(nil), // 46: mgmt.ListPoolsResp - (*ListContResp)(nil), // 47: mgmt.ListContResp - (*ContSetOwnerResp)(nil), // 48: mgmt.ContSetOwnerResp - (*SystemQueryResp)(nil), // 49: mgmt.SystemQueryResp - (*SystemStopResp)(nil), // 50: mgmt.SystemStopResp - (*SystemStartResp)(nil), // 51: mgmt.SystemStartResp - (*SystemEraseResp)(nil), // 52: mgmt.SystemEraseResp - (*SystemCleanupResp)(nil), // 53: mgmt.SystemCleanupResp - (*CheckStartResp)(nil), // 54: mgmt.CheckStartResp - (*CheckStopResp)(nil), // 55: mgmt.CheckStopResp - (*CheckQueryResp)(nil), // 56: mgmt.CheckQueryResp - (*CheckPropResp)(nil), // 57: mgmt.CheckPropResp - (*CheckActResp)(nil), // 58: mgmt.CheckActResp - (*PoolUpgradeResp)(nil), // 59: mgmt.PoolUpgradeResp + (*chk.CheckReport)(nil), // 31: chk.CheckReport + (*JoinResp)(nil), // 32: mgmt.JoinResp + (*shared.ClusterEventResp)(nil), // 33: shared.ClusterEventResp + (*LeaderQueryResp)(nil), // 34: mgmt.LeaderQueryResp + (*PoolCreateResp)(nil), // 35: mgmt.PoolCreateResp + (*PoolDestroyResp)(nil), // 36: mgmt.PoolDestroyResp + (*PoolEvictResp)(nil), // 37: mgmt.PoolEvictResp + (*PoolExcludeResp)(nil), // 38: mgmt.PoolExcludeResp + (*PoolDrainResp)(nil), // 39: mgmt.PoolDrainResp + (*PoolExtendResp)(nil), // 40: mgmt.PoolExtendResp + (*PoolReintegrateResp)(nil), // 41: mgmt.PoolReintegrateResp + (*PoolQueryResp)(nil), // 42: mgmt.PoolQueryResp + (*PoolSetPropResp)(nil), // 43: mgmt.PoolSetPropResp + (*PoolGetPropResp)(nil), // 44: mgmt.PoolGetPropResp + (*ACLResp)(nil), // 45: mgmt.ACLResp + (*GetAttachInfoResp)(nil), // 46: mgmt.GetAttachInfoResp + (*ListPoolsResp)(nil), // 47: mgmt.ListPoolsResp + (*ListContResp)(nil), // 48: mgmt.ListContResp + (*ContSetOwnerResp)(nil), // 49: mgmt.ContSetOwnerResp + (*SystemQueryResp)(nil), // 50: mgmt.SystemQueryResp + (*SystemStopResp)(nil), // 51: mgmt.SystemStopResp + (*SystemStartResp)(nil), // 52: mgmt.SystemStartResp + (*SystemEraseResp)(nil), // 53: mgmt.SystemEraseResp + (*SystemCleanupResp)(nil), // 54: mgmt.SystemCleanupResp + (*CheckStartResp)(nil), // 55: mgmt.CheckStartResp + (*CheckStopResp)(nil), // 56: mgmt.CheckStopResp + (*CheckQueryResp)(nil), // 57: mgmt.CheckQueryResp + (*CheckPropResp)(nil), // 58: mgmt.CheckPropResp + (*CheckActResp)(nil), // 59: mgmt.CheckActResp + (*PoolUpgradeResp)(nil), // 60: mgmt.PoolUpgradeResp + (*DaosResp)(nil), // 61: mgmt.DaosResp } var file_mgmt_mgmt_proto_depIdxs = []int32{ 0, // 0: mgmt.MgmtSvc.Join:input_type -> mgmt.JoinReq @@ -261,40 +269,42 @@ var file_mgmt_mgmt_proto_depIdxs = []int32{ 28, // 29: mgmt.MgmtSvc.SystemCheckProp:input_type -> mgmt.CheckPropReq 29, // 30: mgmt.MgmtSvc.SystemCheckRepair:input_type -> mgmt.CheckActReq 30, // 31: mgmt.MgmtSvc.PoolUpgrade:input_type -> mgmt.PoolUpgradeReq - 31, // 32: mgmt.MgmtSvc.Join:output_type -> mgmt.JoinResp - 32, // 33: mgmt.MgmtSvc.ClusterEvent:output_type -> shared.ClusterEventResp - 33, // 34: mgmt.MgmtSvc.LeaderQuery:output_type -> mgmt.LeaderQueryResp - 34, // 35: mgmt.MgmtSvc.PoolCreate:output_type -> mgmt.PoolCreateResp - 35, // 36: mgmt.MgmtSvc.PoolDestroy:output_type -> mgmt.PoolDestroyResp - 36, // 37: mgmt.MgmtSvc.PoolEvict:output_type -> mgmt.PoolEvictResp - 37, // 38: mgmt.MgmtSvc.PoolExclude:output_type -> mgmt.PoolExcludeResp - 38, // 39: mgmt.MgmtSvc.PoolDrain:output_type -> mgmt.PoolDrainResp - 39, // 40: mgmt.MgmtSvc.PoolExtend:output_type -> mgmt.PoolExtendResp - 40, // 41: mgmt.MgmtSvc.PoolReintegrate:output_type -> mgmt.PoolReintegrateResp - 41, // 42: mgmt.MgmtSvc.PoolQuery:output_type -> mgmt.PoolQueryResp - 42, // 43: mgmt.MgmtSvc.PoolSetProp:output_type -> mgmt.PoolSetPropResp - 43, // 44: mgmt.MgmtSvc.PoolGetProp:output_type -> mgmt.PoolGetPropResp - 44, // 45: mgmt.MgmtSvc.PoolGetACL:output_type -> mgmt.ACLResp - 44, // 46: mgmt.MgmtSvc.PoolOverwriteACL:output_type -> mgmt.ACLResp - 44, // 47: mgmt.MgmtSvc.PoolUpdateACL:output_type -> mgmt.ACLResp - 44, // 48: mgmt.MgmtSvc.PoolDeleteACL:output_type -> mgmt.ACLResp - 45, // 49: mgmt.MgmtSvc.GetAttachInfo:output_type -> mgmt.GetAttachInfoResp - 46, // 50: mgmt.MgmtSvc.ListPools:output_type -> mgmt.ListPoolsResp - 47, // 51: mgmt.MgmtSvc.ListContainers:output_type -> mgmt.ListContResp - 48, // 52: mgmt.MgmtSvc.ContSetOwner:output_type -> mgmt.ContSetOwnerResp - 49, // 53: mgmt.MgmtSvc.SystemQuery:output_type -> mgmt.SystemQueryResp - 50, // 54: mgmt.MgmtSvc.SystemStop:output_type -> mgmt.SystemStopResp - 51, // 55: mgmt.MgmtSvc.SystemStart:output_type -> mgmt.SystemStartResp - 52, // 56: mgmt.MgmtSvc.SystemErase:output_type -> mgmt.SystemEraseResp - 53, // 57: mgmt.MgmtSvc.SystemCleanup:output_type -> mgmt.SystemCleanupResp - 54, // 58: mgmt.MgmtSvc.SystemCheckStart:output_type -> mgmt.CheckStartResp - 55, // 59: mgmt.MgmtSvc.SystemCheckStop:output_type -> mgmt.CheckStopResp - 56, // 60: mgmt.MgmtSvc.SystemCheckQuery:output_type -> mgmt.CheckQueryResp - 57, // 61: mgmt.MgmtSvc.SystemCheckProp:output_type -> mgmt.CheckPropResp - 58, // 62: mgmt.MgmtSvc.SystemCheckRepair:output_type -> mgmt.CheckActResp - 59, // 63: mgmt.MgmtSvc.PoolUpgrade:output_type -> mgmt.PoolUpgradeResp - 32, // [32:64] is the sub-list for method output_type - 0, // [0:32] is the sub-list for method input_type + 31, // 32: mgmt.MgmtSvc.FaultInjectReport:input_type -> chk.CheckReport + 32, // 33: mgmt.MgmtSvc.Join:output_type -> mgmt.JoinResp + 33, // 34: mgmt.MgmtSvc.ClusterEvent:output_type -> shared.ClusterEventResp + 34, // 35: mgmt.MgmtSvc.LeaderQuery:output_type -> mgmt.LeaderQueryResp + 35, // 36: mgmt.MgmtSvc.PoolCreate:output_type -> mgmt.PoolCreateResp + 36, // 37: mgmt.MgmtSvc.PoolDestroy:output_type -> mgmt.PoolDestroyResp + 37, // 38: mgmt.MgmtSvc.PoolEvict:output_type -> mgmt.PoolEvictResp + 38, // 39: mgmt.MgmtSvc.PoolExclude:output_type -> mgmt.PoolExcludeResp + 39, // 40: mgmt.MgmtSvc.PoolDrain:output_type -> mgmt.PoolDrainResp + 40, // 41: mgmt.MgmtSvc.PoolExtend:output_type -> mgmt.PoolExtendResp + 41, // 42: mgmt.MgmtSvc.PoolReintegrate:output_type -> mgmt.PoolReintegrateResp + 42, // 43: mgmt.MgmtSvc.PoolQuery:output_type -> mgmt.PoolQueryResp + 43, // 44: mgmt.MgmtSvc.PoolSetProp:output_type -> mgmt.PoolSetPropResp + 44, // 45: mgmt.MgmtSvc.PoolGetProp:output_type -> mgmt.PoolGetPropResp + 45, // 46: mgmt.MgmtSvc.PoolGetACL:output_type -> mgmt.ACLResp + 45, // 47: mgmt.MgmtSvc.PoolOverwriteACL:output_type -> mgmt.ACLResp + 45, // 48: mgmt.MgmtSvc.PoolUpdateACL:output_type -> mgmt.ACLResp + 45, // 49: mgmt.MgmtSvc.PoolDeleteACL:output_type -> mgmt.ACLResp + 46, // 50: mgmt.MgmtSvc.GetAttachInfo:output_type -> mgmt.GetAttachInfoResp + 47, // 51: mgmt.MgmtSvc.ListPools:output_type -> mgmt.ListPoolsResp + 48, // 52: mgmt.MgmtSvc.ListContainers:output_type -> mgmt.ListContResp + 49, // 53: mgmt.MgmtSvc.ContSetOwner:output_type -> mgmt.ContSetOwnerResp + 50, // 54: mgmt.MgmtSvc.SystemQuery:output_type -> mgmt.SystemQueryResp + 51, // 55: mgmt.MgmtSvc.SystemStop:output_type -> mgmt.SystemStopResp + 52, // 56: mgmt.MgmtSvc.SystemStart:output_type -> mgmt.SystemStartResp + 53, // 57: mgmt.MgmtSvc.SystemErase:output_type -> mgmt.SystemEraseResp + 54, // 58: mgmt.MgmtSvc.SystemCleanup:output_type -> mgmt.SystemCleanupResp + 55, // 59: mgmt.MgmtSvc.SystemCheckStart:output_type -> mgmt.CheckStartResp + 56, // 60: mgmt.MgmtSvc.SystemCheckStop:output_type -> mgmt.CheckStopResp + 57, // 61: mgmt.MgmtSvc.SystemCheckQuery:output_type -> mgmt.CheckQueryResp + 58, // 62: mgmt.MgmtSvc.SystemCheckProp:output_type -> mgmt.CheckPropResp + 59, // 63: mgmt.MgmtSvc.SystemCheckRepair:output_type -> mgmt.CheckActResp + 60, // 64: mgmt.MgmtSvc.PoolUpgrade:output_type -> mgmt.PoolUpgradeResp + 61, // 65: mgmt.MgmtSvc.FaultInjectReport:output_type -> mgmt.DaosResp + 33, // [33:66] is the sub-list for method output_type + 0, // [0:33] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name diff --git a/src/control/common/proto/mgmt/mgmt_grpc.pb.go b/src/control/common/proto/mgmt/mgmt_grpc.pb.go index 0817ee34e2b..4c3b0e2c2f5 100644 --- a/src/control/common/proto/mgmt/mgmt_grpc.pb.go +++ b/src/control/common/proto/mgmt/mgmt_grpc.pb.go @@ -4,6 +4,7 @@ package mgmt import ( context "context" + chk "github.com/daos-stack/daos/src/control/common/proto/chk" shared "github.com/daos-stack/daos/src/control/common/proto/shared" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -84,6 +85,8 @@ type MgmtSvcClient interface { SystemCheckRepair(ctx context.Context, in *CheckActReq, opts ...grpc.CallOption) (*CheckActResp, error) // PoolUpgrade queries a DAOS pool. PoolUpgrade(ctx context.Context, in *PoolUpgradeReq, opts ...grpc.CallOption) (*PoolUpgradeResp, error) + // FaultInjectReport injects a checker report. + FaultInjectReport(ctx context.Context, in *chk.CheckReport, opts ...grpc.CallOption) (*DaosResp, error) } type mgmtSvcClient struct { @@ -382,6 +385,15 @@ func (c *mgmtSvcClient) PoolUpgrade(ctx context.Context, in *PoolUpgradeReq, opt return out, nil } +func (c *mgmtSvcClient) FaultInjectReport(ctx context.Context, in *chk.CheckReport, opts ...grpc.CallOption) (*DaosResp, error) { + out := new(DaosResp) + err := c.cc.Invoke(ctx, "/mgmt.MgmtSvc/FaultInjectReport", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MgmtSvcServer is the server API for MgmtSvc service. // All implementations must embed UnimplementedMgmtSvcServer // for forward compatibility @@ -451,6 +463,8 @@ type MgmtSvcServer interface { SystemCheckRepair(context.Context, *CheckActReq) (*CheckActResp, error) // PoolUpgrade queries a DAOS pool. PoolUpgrade(context.Context, *PoolUpgradeReq) (*PoolUpgradeResp, error) + // FaultInjectReport injects a checker report. + FaultInjectReport(context.Context, *chk.CheckReport) (*DaosResp, error) mustEmbedUnimplementedMgmtSvcServer() } @@ -554,6 +568,9 @@ func (UnimplementedMgmtSvcServer) SystemCheckRepair(context.Context, *CheckActRe func (UnimplementedMgmtSvcServer) PoolUpgrade(context.Context, *PoolUpgradeReq) (*PoolUpgradeResp, error) { return nil, status.Errorf(codes.Unimplemented, "method PoolUpgrade not implemented") } +func (UnimplementedMgmtSvcServer) FaultInjectReport(context.Context, *chk.CheckReport) (*DaosResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method FaultInjectReport not implemented") +} func (UnimplementedMgmtSvcServer) mustEmbedUnimplementedMgmtSvcServer() {} // UnsafeMgmtSvcServer may be embedded to opt out of forward compatibility for this service. @@ -1143,6 +1160,24 @@ func _MgmtSvc_PoolUpgrade_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _MgmtSvc_FaultInjectReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(chk.CheckReport) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MgmtSvcServer).FaultInjectReport(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/mgmt.MgmtSvc/FaultInjectReport", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MgmtSvcServer).FaultInjectReport(ctx, req.(*chk.CheckReport)) + } + return interceptor(ctx, in, info, handler) +} + // MgmtSvc_ServiceDesc is the grpc.ServiceDesc for MgmtSvc service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -1278,6 +1313,10 @@ var MgmtSvc_ServiceDesc = grpc.ServiceDesc{ MethodName: "PoolUpgrade", Handler: _MgmtSvc_PoolUpgrade_Handler, }, + { + MethodName: "FaultInjectReport", + Handler: _MgmtSvc_FaultInjectReport_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "mgmt/mgmt.proto", diff --git a/src/control/lib/control/fi.go b/src/control/lib/control/fi.go new file mode 100644 index 00000000000..cb823a7174b --- /dev/null +++ b/src/control/lib/control/fi.go @@ -0,0 +1,36 @@ +// +// (C) Copyright 2022 Intel Corporation. +// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +//go:build fault_injection +// +build fault_injection + +package control + +import ( + "context" + + "google.golang.org/protobuf/proto" +) + +type faultInjectionReq struct { + msRequest + unaryRequest + retryableRequest +} + +// InvokeFaultRPC is meant to be used during fault injection tests. It +// provides a bare-bones RPC client that can be used to invoke any RPC +// directly without translation between protobuf messages and native types. +func InvokeFaultRPC(ctx context.Context, rpcClient UnaryInvoker, rpc unaryRPC) (proto.Message, error) { + req := new(faultInjectionReq) + req.setRPC(rpc) + + ur, err := rpcClient.InvokeUnaryRPC(ctx, req) + if err != nil { + return nil, err + } + + return ur.getMSResponse() +} diff --git a/src/control/run_go_tests.sh b/src/control/run_go_tests.sh index e53a67a9e07..bd495dc4396 100755 --- a/src/control/run_go_tests.sh +++ b/src/control/run_go_tests.sh @@ -133,7 +133,7 @@ function check_formatting() function get_test_runner() { - test_args="-mod vendor -race -cover -v ./... -tags firmware" + test_args="-mod vendor -race -cover -v ./... -tags firmware,fault_injection" test_runner="go test" if which gotestsum >/dev/null; then diff --git a/src/control/security/grpc_authorization.go b/src/control/security/grpc_authorization.go index e4f539dd2a6..f1a434a158b 100644 --- a/src/control/security/grpc_authorization.go +++ b/src/control/security/grpc_authorization.go @@ -67,6 +67,7 @@ var methodAuthorizations = map[string][]Component{ "/mgmt.MgmtSvc/SystemCheckQuery": {ComponentAdmin}, "/mgmt.MgmtSvc/SystemCheckProp": {ComponentAdmin}, "/mgmt.MgmtSvc/SystemCheckRepair": {ComponentAdmin}, + "/mgmt.MgmtSvc/FaultInjectReport": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolUpgrade": {ComponentAdmin}, "/RaftTransport/AppendEntries": {ComponentServer}, "/RaftTransport/AppendEntriesPipeline": {ComponentServer}, diff --git a/src/control/security/grpc_authorization_test.go b/src/control/security/grpc_authorization_test.go index 6483e3ccb92..f6fc2a5e302 100644 --- a/src/control/security/grpc_authorization_test.go +++ b/src/control/security/grpc_authorization_test.go @@ -95,6 +95,7 @@ func TestSecurity_ComponentHasAccess(t *testing.T) { "/mgmt.MgmtSvc/SystemCheckQuery": {ComponentAdmin}, "/mgmt.MgmtSvc/SystemCheckProp": {ComponentAdmin}, "/mgmt.MgmtSvc/SystemCheckRepair": {ComponentAdmin}, + "/mgmt.MgmtSvc/FaultInjectReport": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolUpgrade": {ComponentAdmin}, "/RaftTransport/AppendEntries": {ComponentServer}, "/RaftTransport/AppendEntriesPipeline": {ComponentServer}, diff --git a/src/control/server/mgmt_fi.go b/src/control/server/mgmt_fi.go new file mode 100644 index 00000000000..29392f84eb8 --- /dev/null +++ b/src/control/server/mgmt_fi.go @@ -0,0 +1,35 @@ +// +// (C) Copyright 2022 Intel Corporation. +// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +//go:build fault_injection +// +build fault_injection + +package server + +import ( + "context" + + chkpb "github.com/daos-stack/daos/src/control/common/proto/chk" + mgmtpb "github.com/daos-stack/daos/src/control/common/proto/mgmt" + "github.com/daos-stack/daos/src/control/system/checker" +) + +func (svc *mgmtSvc) FaultInjectReport(ctx context.Context, rpt *chkpb.CheckReport) (resp *mgmtpb.DaosResp, err error) { + if err := svc.checkLeaderRequest(rpt); err != nil { + return nil, err + } + + defer func() { + svc.log.Debugf("Responding to FaultInjectReport RPC: %s (%+v)", mgmtpb.Debug(resp), err) + }() + svc.log.Debugf("Received FaultInjectReport RPC: %+v", rpt) + + cf := checker.NewFinding(rpt) + if err := svc.sysdb.AddCheckerFinding(cf); err != nil { + return nil, err + } + + return new(mgmtpb.DaosResp), nil +} diff --git a/src/proto/mgmt/mgmt.proto b/src/proto/mgmt/mgmt.proto index 247ba7d1d2f..d92d0373c09 100644 --- a/src/proto/mgmt/mgmt.proto +++ b/src/proto/mgmt/mgmt.proto @@ -16,6 +16,7 @@ import "mgmt/cont.proto"; import "mgmt/svc.proto"; import "mgmt/acl.proto"; // ACL-related requests import "mgmt/system.proto"; +import "chk/chk.proto"; // Management Service is replicated on a small number of servers in the system, // these requests will be processed on a host that is a member of the management @@ -89,4 +90,6 @@ service MgmtSvc { rpc SystemCheckRepair(CheckActReq) returns(CheckActResp){} // PoolUpgrade queries a DAOS pool. rpc PoolUpgrade(PoolUpgradeReq) returns (PoolUpgradeResp) {} + // FaultInjectReport injects a checker report. + rpc FaultInjectReport(chk.CheckReport) returns (DaosResp) {} }