diff --git a/src/control/cmd/dmg/command_test.go b/src/control/cmd/dmg/command_test.go index 8f70322f328..0eb96613607 100644 --- a/src/control/cmd/dmg/command_test.go +++ b/src/control/cmd/dmg/command_test.go @@ -165,8 +165,8 @@ func (bci *bridgeConnInvoker) InvokeUnaryRPC(ctx context.Context, uReq control.U resp = control.MockMSResponse("", nil, &mgmtpb.PoolDrainResp{}) case *control.PoolExtendReq: resp = control.MockMSResponse("", nil, &mgmtpb.PoolExtendResp{}) - case *control.PoolReintegrateReq: - resp = control.MockMSResponse("", nil, &mgmtpb.PoolReintegrateResp{}) + case *control.PoolReintReq: + resp = control.MockMSResponse("", nil, &mgmtpb.PoolReintResp{}) case *control.SystemCheckEnableReq: resp = control.MockMSResponse("", nil, &mgmtpb.DaosResp{}) case *control.SystemCheckDisableReq: diff --git a/src/control/cmd/dmg/json_test.go b/src/control/cmd/dmg/json_test.go index 84fc87a7293..89cfdf5edd2 100644 --- a/src/control/cmd/dmg/json_test.go +++ b/src/control/cmd/dmg/json_test.go @@ -113,7 +113,8 @@ func TestDmg_JsonOutput(t *testing.T) { testArgs = append(testArgs, "foo:bar") case "system del-attr": testArgs = append(testArgs, "foo") - case "system exclude", "system clear-exclude", "system drain": + case "system exclude", "system clear-exclude", "system drain", + "system reintegrate": testArgs = append(testArgs, "--ranks", "0") } diff --git a/src/control/cmd/dmg/pool.go b/src/control/cmd/dmg/pool.go index 0b74128990b..90a4763aaf0 100644 --- a/src/control/cmd/dmg/pool.go +++ b/src/control/cmd/dmg/pool.go @@ -37,7 +37,7 @@ type PoolCmd struct { Extend poolExtendCmd `command:"extend" description:"Extend a DAOS pool to include new ranks."` Exclude poolExcludeCmd `command:"exclude" description:"Exclude targets from a rank"` Drain poolDrainCmd `command:"drain" description:"Drain targets from a rank"` - Reintegrate poolReintegrateCmd `command:"reintegrate" alias:"reint" description:"Reintegrate targets for a rank"` + Reint poolReintCmd `command:"reintegrate" alias:"reint" description:"Reintegrate targets for a rank"` Query poolQueryCmd `command:"query" description:"Query a DAOS pool"` QueryTargets poolQueryTargetsCmd `command:"query-targets" description:"Query pool target info"` GetACL poolGetACLCmd `command:"get-acl" description:"Get a DAOS pool's Access Control List"` @@ -162,7 +162,7 @@ func (psf *poolSizeFlag) UnmarshalFlag(fv string) error { return psf.ByteSizeFlag.UnmarshalFlag(fv) } -// PoolCreateCmd is the struct representing the command to create a DAOS pool. +// poolCreateCmd is the struct representing the command to create a DAOS pool. type poolCreateCmd struct { baseCmd cfgCmd @@ -401,7 +401,7 @@ func (cmd *poolCreateCmd) Execute(args []string) error { return nil } -// PoolListCmd represents the command to fetch a list of all DAOS pools in the system. +// poolListCmd represents the command to fetch a list of all DAOS pools in the system. type poolListCmd struct { baseCmd cfgCmd @@ -481,7 +481,7 @@ func (cmd *poolCmd) PoolID() *PoolID { return &cmd.Args.Pool } -// PoolDestroyCmd is the struct representing the command to destroy a DAOS pool. +// poolDestroyCmd is the struct representing the command to destroy a DAOS pool. type poolDestroyCmd struct { poolCmd Recursive bool `short:"r" long:"recursive" description:"Remove pool with existing containers"` @@ -509,7 +509,7 @@ func (cmd *poolDestroyCmd) Execute(args []string) error { return err } -// PoolEvictCmd is the struct representing the command to evict a DAOS pool. +// poolEvictCmd is the struct representing the command to evict a DAOS pool. type poolEvictCmd struct { poolCmd } @@ -530,7 +530,7 @@ func (cmd *poolEvictCmd) Execute(args []string) error { return err } -// PoolExcludeCmd is the struct representing the command to exclude a DAOS target. +// poolExcludeCmd is the struct representing the command to exclude a DAOS target. type poolExcludeCmd struct { poolCmd Rank uint32 `long:"rank" required:"1" description:"Engine rank of the targets to be excluded"` @@ -558,7 +558,7 @@ func (cmd *poolExcludeCmd) Execute(args []string) error { return err } -// PoolDrainCmd is the struct representing the command to Drain a DAOS target. +// poolDrainCmd is the struct representing the command to Drain a DAOS target. type poolDrainCmd struct { poolCmd Rank uint32 `long:"rank" required:"1" description:"Engine rank of the targets to be drained"` @@ -591,7 +591,7 @@ func (cmd *poolDrainCmd) Execute(args []string) error { return err } -// PoolExtendCmd is the struct representing the command to Extend a DAOS pool. +// poolExtendCmd is the struct representing the command to Extend a DAOS pool. type poolExtendCmd struct { poolCmd RankList ui.RankSetFlag `long:"ranks" required:"1" description:"Comma-separated list of ranks to add to the pool"` @@ -616,15 +616,15 @@ func (cmd *poolExtendCmd) Execute(args []string) error { return err } -// PoolReintegrateCmd is the struct representing the command to Add a DAOS target. -type poolReintegrateCmd struct { +// poolReintCmd is the struct representing the command to Add a DAOS target. +type poolReintCmd struct { poolCmd Rank uint32 `long:"rank" required:"1" description:"Engine rank of the targets to be reintegrated"` TargetIdx string `long:"target-idx" description:"Comma-separated list of target idx(s) to be reintegrated into the rank"` } -// Execute is run when PoolReintegrateCmd subcommand is activated -func (cmd *poolReintegrateCmd) Execute(args []string) error { +// Execute is run when PoolReintCmd subcommand is activated +func (cmd *poolReintCmd) Execute(args []string) error { msg := "succeeded" var idxList []uint32 @@ -633,13 +633,13 @@ func (cmd *poolReintegrateCmd) Execute(args []string) error { return err } - req := &control.PoolReintegrateReq{ + req := &control.PoolReintReq{ ID: cmd.PoolID().String(), Rank: ranklist.Rank(cmd.Rank), TargetIdx: idxList, } - err := control.PoolReintegrate(cmd.MustLogCtx(), cmd.ctlInvoker, req) + err := control.PoolReint(cmd.MustLogCtx(), cmd.ctlInvoker, req) if err != nil { msg = errors.WithMessage(err, "failed").Error() } @@ -649,7 +649,7 @@ func (cmd *poolReintegrateCmd) Execute(args []string) error { return err } -// PoolQueryCmd is the struct representing the command to query a DAOS pool. +// poolQueryCmd is the struct representing the command to query a DAOS pool. type poolQueryCmd struct { poolCmd ShowEnabledRanks bool `short:"e" long:"show-enabled" description:"Show engine unique identifiers (ranks) which are enabled"` @@ -694,7 +694,7 @@ func (cmd *poolQueryCmd) Execute(args []string) error { return nil } -// PoolQueryTargetsCmd is the struct representing the command to query a DAOS pool engine's targets +// poolQueryTargetsCmd is the struct representing the command to query a DAOS pool engine's targets type poolQueryTargetsCmd struct { poolCmd @@ -752,7 +752,7 @@ func (cmd *poolQueryTargetsCmd) Execute(args []string) error { return nil } -// PoolUpgradeCmd is the struct representing the command to update a DAOS pool. +// poolUpgradeCmd is the struct representing the command to update a DAOS pool. type poolUpgradeCmd struct { poolCmd } @@ -772,7 +772,7 @@ func (cmd *poolUpgradeCmd) Execute(args []string) error { return nil } -// PoolSetPropCmd represents the command to set a property on a pool. +// poolSetPropCmd represents the command to set a property on a pool. type poolSetPropCmd struct { poolCmd @@ -816,7 +816,7 @@ func (cmd *poolSetPropCmd) Execute(_ []string) error { return nil } -// PoolGetPropCmd represents the command to set a property on a pool. +// poolGetPropCmd represents the command to set a property on a pool. type poolGetPropCmd struct { poolCmd Args struct { @@ -847,7 +847,7 @@ func (cmd *poolGetPropCmd) Execute(_ []string) error { return nil } -// PoolGetACLCmd represents the command to fetch an Access Control List of a +// poolGetACLCmd represents the command to fetch an Access Control List of a // DAOS pool. type poolGetACLCmd struct { poolCmd @@ -911,7 +911,7 @@ func (cmd *poolGetACLCmd) writeACLToFile(acl string) error { return nil } -// PoolOverwriteACLCmd represents the command to overwrite the Access Control +// poolOverwriteACLCmd represents the command to overwrite the Access Control // List of a DAOS pool. type poolOverwriteACLCmd struct { poolCmd @@ -946,7 +946,7 @@ func (cmd *poolOverwriteACLCmd) Execute(args []string) error { return nil } -// PoolUpdateACLCmd represents the command to update the Access Control List of +// poolUpdateACLCmd represents the command to update the Access Control List of // a DAOS pool. type poolUpdateACLCmd struct { poolCmd @@ -994,7 +994,7 @@ func (cmd *poolUpdateACLCmd) Execute(args []string) error { return nil } -// PoolDeleteACLCmd represents the command to delete an entry from the Access +// poolDeleteACLCmd represents the command to delete an entry from the Access // Control List of a DAOS pool. type poolDeleteACLCmd struct { poolCmd diff --git a/src/control/cmd/dmg/pool_test.go b/src/control/cmd/dmg/pool_test.go index 4681abd9f17..c01ed1bff9c 100644 --- a/src/control/cmd/dmg/pool_test.go +++ b/src/control/cmd/dmg/pool_test.go @@ -718,7 +718,7 @@ func TestPoolCommands(t *testing.T) { "Reintegrate a target with single target idx", "pool reintegrate 031bcaf8-f0f5-42ef-b3c5-ee048676dceb --rank 0 --target-idx 1", strings.Join([]string{ - printRequest(t, &control.PoolReintegrateReq{ + printRequest(t, &control.PoolReintReq{ ID: "031bcaf8-f0f5-42ef-b3c5-ee048676dceb", Rank: 0, TargetIdx: []uint32{1}, @@ -730,7 +730,7 @@ func TestPoolCommands(t *testing.T) { "Reintegrate a target with multiple idx", "pool reintegrate 031bcaf8-f0f5-42ef-b3c5-ee048676dceb --rank 0 --target-idx 1,2,3", strings.Join([]string{ - printRequest(t, &control.PoolReintegrateReq{ + printRequest(t, &control.PoolReintReq{ ID: "031bcaf8-f0f5-42ef-b3c5-ee048676dceb", Rank: 0, TargetIdx: []uint32{1, 2, 3}, @@ -742,7 +742,7 @@ func TestPoolCommands(t *testing.T) { "Reintegrate a target with no idx given", "pool reintegrate 031bcaf8-f0f5-42ef-b3c5-ee048676dceb --rank 0", strings.Join([]string{ - printRequest(t, &control.PoolReintegrateReq{ + printRequest(t, &control.PoolReintReq{ ID: "031bcaf8-f0f5-42ef-b3c5-ee048676dceb", Rank: 0, TargetIdx: []uint32{}, diff --git a/src/control/cmd/dmg/pretty/system.go b/src/control/cmd/dmg/pretty/system.go index aa0f0cce546..26271f309c3 100644 --- a/src/control/cmd/dmg/pretty/system.go +++ b/src/control/cmd/dmg/pretty/system.go @@ -222,12 +222,11 @@ func PrintSystemCleanupResponse(out io.Writer, resp *control.SystemCleanupResp, fmt.Fprintln(out, "System Cleanup Success") } -// PrintSystemDrainResponse generates a human-readable representation of the supplied -// SystemDrainResp struct and writes it to the supplied io.Writer. Result related errors written to -// error io.Writer. -func PrintSystemDrainResponse(out io.Writer, resp *control.SystemDrainResp) { - if len(resp.Results) == 0 { - fmt.Fprintln(out, "No pool ranks drained") +// PrintPoolRankResults generates a table showing results of operations on pool ranks. Each row will +// indicate a result for a group of ranks on a pool. +func PrintPoolRankResults(out io.Writer, results []*control.PoolRankResult) { + if len(results) == 0 { + fmt.Fprintln(out, "No pool ranks processed") return } @@ -235,11 +234,11 @@ func PrintSystemDrainResponse(out io.Writer, resp *control.SystemDrainResp) { formatter := txtfmt.NewTableFormatter(titles...) var table []txtfmt.TableRow - for _, r := range resp.Results { + for _, r := range results { result := "OK" - reason := "N/A" + reason := "-" if r.Status != 0 { - result = "Failed" + result = "FAIL" reason = r.Msg } row := txtfmt.TableRow{ diff --git a/src/control/cmd/dmg/pretty/system_test.go b/src/control/cmd/dmg/pretty/system_test.go index bfc33bb7c33..66105cbf6bc 100644 --- a/src/control/cmd/dmg/pretty/system_test.go +++ b/src/control/cmd/dmg/pretty/system_test.go @@ -612,71 +612,59 @@ Unknown 3 hosts: foo[7-9] } } -func TestPretty_PrintSystemDrainResp(t *testing.T) { +func TestPretty_printSysOsaResp(t *testing.T) { for name, tc := range map[string]struct { - resp *control.SystemDrainResp - expOut string + results []*control.PoolRankResult + expOut string }{ - "empty response": { - resp: &control.SystemDrainResp{}, - expOut: ` -No pool ranks drained -`, - }, "normal response": { - resp: &control.SystemDrainResp{ - Results: []*control.DrainResult{ - {PoolID: test.MockUUID(1), Ranks: "0-3"}, - {PoolID: test.MockUUID(2), Ranks: "1-4"}, - }, + results: []*control.PoolRankResult{ + {PoolID: test.MockUUID(1), Ranks: "0-3"}, + {PoolID: test.MockUUID(2), Ranks: "1-4"}, }, expOut: ` Pool Ranks Result Reason ---- ----- ------ ------ -00000001-0001-0001-0001-000000000001 0-3 OK N/A -00000002-0002-0002-0002-000000000002 1-4 OK N/A +00000001-0001-0001-0001-000000000001 0-3 OK - +00000002-0002-0002-0002-000000000002 1-4 OK - `, }, "normal response; use labels": { - resp: &control.SystemDrainResp{ - Results: []*control.DrainResult{ - {PoolID: "label1", Ranks: "0-3"}, - {PoolID: "label2", Ranks: "1-4"}, - }, + results: []*control.PoolRankResult{ + {PoolID: "label1", Ranks: "0-3"}, + {PoolID: "label2", Ranks: "1-4"}, }, expOut: ` Pool Ranks Result Reason ---- ----- ------ ------ -label1 0-3 OK N/A -label2 1-4 OK N/A +label1 0-3 OK - +label2 1-4 OK - `, }, "response with failures": { - resp: &control.SystemDrainResp{ - Results: []*control.DrainResult{ - {PoolID: test.MockUUID(1), Ranks: "1-2"}, - {PoolID: test.MockUUID(2), Ranks: "0"}, - { - PoolID: test.MockUUID(2), Ranks: "1-2", - Status: -1, Msg: "fail1", - }, + results: []*control.PoolRankResult{ + {PoolID: test.MockUUID(1), Ranks: "1-2"}, + {PoolID: test.MockUUID(2), Ranks: "0"}, + { + PoolID: test.MockUUID(2), Ranks: "1-2", + Status: -1, Msg: "fail1", }, }, expOut: ` Pool Ranks Result Reason ---- ----- ------ ------ -00000001-0001-0001-0001-000000000001 1-2 OK N/A -00000002-0002-0002-0002-000000000002 0 OK N/A -00000002-0002-0002-0002-000000000002 1-2 Failed fail1 +00000001-0001-0001-0001-000000000001 1-2 OK - +00000002-0002-0002-0002-000000000002 0 OK - +00000002-0002-0002-0002-000000000002 1-2 FAIL fail1 `, }, } { t.Run(name, func(t *testing.T) { var out strings.Builder - PrintSystemDrainResponse(&out, tc.resp) + PrintPoolRankResults(&out, tc.results) if diff := cmp.Diff(strings.TrimLeft(tc.expOut, "\n"), out.String()); diff != "" { t.Fatalf("unexpected stdout (-want, +got):\n%s\n", diff) diff --git a/src/control/cmd/dmg/system.go b/src/control/cmd/dmg/system.go index a507a05004f..12a2caeb7e3 100644 --- a/src/control/cmd/dmg/system.go +++ b/src/control/cmd/dmg/system.go @@ -34,6 +34,7 @@ type SystemCmd struct { Exclude systemExcludeCmd `command:"exclude" description:"Exclude ranks from DAOS system"` ClearExclude systemClearExcludeCmd `command:"clear-exclude" description:"Clear excluded state for ranks"` Drain systemDrainCmd `command:"drain" description:"Drain ranks or hosts from all relevant pools in DAOS system"` + Reint systemReintCmd `command:"reintegrate" alias:"reint" description:"Reintegrate ranks or hosts into all relevant pools in DAOS system"` Erase systemEraseCmd `command:"erase" description:"Erase system metadata prior to reformat"` ListPools poolListCmd `command:"list-pools" description:"List all pools in the DAOS system"` Cleanup systemCleanupCmd `command:"cleanup" description:"Clean up all resources associated with the specified machine"` @@ -308,9 +309,13 @@ type systemDrainCmd struct { baseRankListCmd } -func (cmd *systemDrainCmd) Execute(_ []string) (errOut error) { +func (cmd *systemDrainCmd) execute(reint bool) (errOut error) { defer func() { - errOut = errors.Wrap(errOut, "system drain failed") + op := "drain" + if reint { + op = "reintegrate" + } + errOut = errors.Wrapf(errOut, "system %s failed", op) }() if err := cmd.validateHostsRanks(); err != nil { @@ -324,6 +329,7 @@ func (cmd *systemDrainCmd) Execute(_ []string) (errOut error) { req.SetSystem(cmd.config.SystemName) req.Hosts.Replace(&cmd.Hosts.HostSet) req.Ranks.Replace(&cmd.Ranks.RankSet) + req.Reint = reint resp, err := control.SystemDrain(cmd.MustLogCtx(), cmd.ctlInvoker, req) if err != nil { @@ -335,12 +341,24 @@ func (cmd *systemDrainCmd) Execute(_ []string) (errOut error) { } var out strings.Builder - pretty.PrintSystemDrainResponse(&out, resp) + pretty.PrintPoolRankResults(&out, resp.Results) cmd.Info(out.String()) return resp.Errors() } +func (cmd *systemDrainCmd) Execute(_ []string) error { + return cmd.execute(false) +} + +type systemReintCmd struct { + systemDrainCmd +} + +func (cmd *systemReintCmd) Execute(_ []string) error { + return cmd.execute(true) +} + type systemCleanupCmd struct { baseCtlCmd Args struct { diff --git a/src/control/cmd/dmg/system_test.go b/src/control/cmd/dmg/system_test.go index 18ca14f35e2..e8b5cf4bc3d 100644 --- a/src/control/cmd/dmg/system_test.go +++ b/src/control/cmd/dmg/system_test.go @@ -284,6 +284,32 @@ func TestDmg_SystemCommands(t *testing.T) { "", errNoRanks, }, + { + "system reintegrate with multiple hosts", + "system reintegrate --rank-hosts foo-[0,1,4]", + strings.Join([]string{ + printRequest(t, withSystem( + withHosts(&control.SystemDrainReq{Reint: true}, "foo-[0-1,4]"), + "daos_server")), + }, " "), + nil, + }, + { + "system reintegrate with multiple ranks", + "system reintegrate --ranks 0,1,4", + strings.Join([]string{ + printRequest(t, withSystem( + withRanks(&control.SystemDrainReq{Reint: true}, 0, 1, 4), + "daos_server")), + }, " "), + nil, + }, + { + "system reintegrate without ranks", + "system reint", // Verify alias is accepted. + "", + errNoRanks, + }, { "system cleanup with machine name", "system cleanup foo1", diff --git a/src/control/common/proto/mgmt/addons.go b/src/control/common/proto/mgmt/addons.go index 7f049b29b39..a9da94cdf8c 100644 --- a/src/control/common/proto/mgmt/addons.go +++ b/src/control/common/proto/mgmt/addons.go @@ -121,12 +121,12 @@ func (r *PoolDrainReq) SetUUID(id uuid.UUID) { } // SetSvcRanks sets the request's Pool Service Ranks. -func (r *PoolReintegrateReq) SetSvcRanks(rl []uint32) { +func (r *PoolReintReq) SetSvcRanks(rl []uint32) { r.SvcRanks = rl } // SetUUID sets the request's ID to a UUID. -func (r *PoolReintegrateReq) SetUUID(id uuid.UUID) { +func (r *PoolReintReq) SetUUID(id uuid.UUID) { r.Id = id.String() } diff --git a/src/control/common/proto/mgmt/mgmt.pb.go b/src/control/common/proto/mgmt/mgmt.pb.go index 24da4c98de9..6b8c8f86146 100644 --- a/src/control/common/proto/mgmt/mgmt.pb.go +++ b/src/control/common/proto/mgmt/mgmt.pb.go @@ -41,7 +41,7 @@ var file_mgmt_mgmt_proto_rawDesc = []byte{ 0x11, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, 0x63, 0x68, 0x6b, 0x2f, 0x63, 0x68, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10, 0x63, 0x68, 0x6b, 0x2f, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x32, 0xce, 0x15, 0x0a, 0x07, 0x4d, 0x67, 0x6d, 0x74, 0x53, 0x76, 0x63, 0x12, + 0x6f, 0x74, 0x6f, 0x32, 0xbc, 0x15, 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, @@ -74,151 +74,150 @@ var file_mgmt_mgmt_proto_rawDesc = []byte{ 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, - 0x48, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x12, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, - 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 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, + 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x36, 0x0a, + 0x09, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x13, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 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, 0x48, 0x0a, + 0x0f, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x12, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 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, 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, 0x37, 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, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x44, 0x61, 0x6f, 0x73, 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, 0x42, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x78, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x12, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, - 0x72, 0x61, 0x69, 0x6e, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x61, 0x69, 0x6e, 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, 0x3b, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, - 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, + 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, + 0x37, 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, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, + 0x6f, 0x73, 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, + 0x42, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x12, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x78, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x0b, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x61, + 0x69, 0x6e, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x61, 0x69, 0x6e, 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, 0x3b, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x3d, 0x0a, 0x12, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, + 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, 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, + 0x41, 0x0a, 0x14, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, + 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x12, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x15, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, - 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, 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, 0x41, 0x0a, 0x14, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x14, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x17, 0x2e, 0x6d, - 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x39, 0x0a, - 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x16, - 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, - 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, - 0x71, 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, - 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0d, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x16, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, - 0x1a, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x70, 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, 0x12, 0x34, 0x0a, 0x14, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, - 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0a, 0x2e, 0x63, - 0x68, 0x6b, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x44, 0x61, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x18, 0x46, 0x61, - 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x50, 0x6f, 0x6f, - 0x6c, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0a, 0x2e, 0x63, 0x68, 0x6b, 0x2e, 0x46, 0x61, 0x75, - 0x6c, 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, + 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x14, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x17, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x39, 0x0a, 0x0d, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x16, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x71, 0x1a, + 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x0d, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x16, 0x2e, 0x6d, 0x67, + 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, + 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, 0x6f, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x17, + 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x70, 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, 0x12, 0x34, 0x0a, 0x14, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, + 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0a, 0x2e, 0x63, 0x68, 0x6b, + 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x0e, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x44, 0x61, + 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x18, 0x46, 0x61, 0x75, 0x6c, + 0x74, 0x49, 0x6e, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x67, 0x6d, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x46, + 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0a, 0x2e, 0x63, 0x68, 0x6b, 0x2e, 0x46, 0x61, 0x75, 0x6c, 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{}{ @@ -231,7 +230,7 @@ var file_mgmt_mgmt_proto_goTypes = []interface{}{ (*PoolExcludeReq)(nil), // 6: mgmt.PoolExcludeReq (*PoolDrainReq)(nil), // 7: mgmt.PoolDrainReq (*PoolExtendReq)(nil), // 8: mgmt.PoolExtendReq - (*PoolReintegrateReq)(nil), // 9: mgmt.PoolReintegrateReq + (*PoolReintReq)(nil), // 9: mgmt.PoolReintReq (*PoolQueryReq)(nil), // 10: mgmt.PoolQueryReq (*PoolQueryTargetReq)(nil), // 11: mgmt.PoolQueryTargetReq (*PoolSetPropReq)(nil), // 12: mgmt.PoolSetPropReq @@ -274,7 +273,7 @@ var file_mgmt_mgmt_proto_goTypes = []interface{}{ (*PoolExcludeResp)(nil), // 49: mgmt.PoolExcludeResp (*PoolDrainResp)(nil), // 50: mgmt.PoolDrainResp (*PoolExtendResp)(nil), // 51: mgmt.PoolExtendResp - (*PoolReintegrateResp)(nil), // 52: mgmt.PoolReintegrateResp + (*PoolReintResp)(nil), // 52: mgmt.PoolReintResp (*PoolQueryResp)(nil), // 53: mgmt.PoolQueryResp (*PoolQueryTargetResp)(nil), // 54: mgmt.PoolQueryTargetResp (*PoolSetPropResp)(nil), // 55: mgmt.PoolSetPropResp @@ -310,7 +309,7 @@ var file_mgmt_mgmt_proto_depIdxs = []int32{ 6, // 6: mgmt.MgmtSvc.PoolExclude:input_type -> mgmt.PoolExcludeReq 7, // 7: mgmt.MgmtSvc.PoolDrain:input_type -> mgmt.PoolDrainReq 8, // 8: mgmt.MgmtSvc.PoolExtend:input_type -> mgmt.PoolExtendReq - 9, // 9: mgmt.MgmtSvc.PoolReintegrate:input_type -> mgmt.PoolReintegrateReq + 9, // 9: mgmt.MgmtSvc.PoolReint:input_type -> mgmt.PoolReintReq 10, // 10: mgmt.MgmtSvc.PoolQuery:input_type -> mgmt.PoolQueryReq 11, // 11: mgmt.MgmtSvc.PoolQueryTarget:input_type -> mgmt.PoolQueryTargetReq 12, // 12: mgmt.MgmtSvc.PoolSetProp:input_type -> mgmt.PoolSetPropReq @@ -355,7 +354,7 @@ var file_mgmt_mgmt_proto_depIdxs = []int32{ 49, // 51: mgmt.MgmtSvc.PoolExclude:output_type -> mgmt.PoolExcludeResp 50, // 52: mgmt.MgmtSvc.PoolDrain:output_type -> mgmt.PoolDrainResp 51, // 53: mgmt.MgmtSvc.PoolExtend:output_type -> mgmt.PoolExtendResp - 52, // 54: mgmt.MgmtSvc.PoolReintegrate:output_type -> mgmt.PoolReintegrateResp + 52, // 54: mgmt.MgmtSvc.PoolReint:output_type -> mgmt.PoolReintResp 53, // 55: mgmt.MgmtSvc.PoolQuery:output_type -> mgmt.PoolQueryResp 54, // 56: mgmt.MgmtSvc.PoolQueryTarget:output_type -> mgmt.PoolQueryTargetResp 55, // 57: mgmt.MgmtSvc.PoolSetProp:output_type -> mgmt.PoolSetPropResp diff --git a/src/control/common/proto/mgmt/mgmt_grpc.pb.go b/src/control/common/proto/mgmt/mgmt_grpc.pb.go index dc9e2b1555a..3b15e682ca2 100644 --- a/src/control/common/proto/mgmt/mgmt_grpc.pb.go +++ b/src/control/common/proto/mgmt/mgmt_grpc.pb.go @@ -36,7 +36,7 @@ const ( MgmtSvc_PoolExclude_FullMethodName = "/mgmt.MgmtSvc/PoolExclude" MgmtSvc_PoolDrain_FullMethodName = "/mgmt.MgmtSvc/PoolDrain" MgmtSvc_PoolExtend_FullMethodName = "/mgmt.MgmtSvc/PoolExtend" - MgmtSvc_PoolReintegrate_FullMethodName = "/mgmt.MgmtSvc/PoolReintegrate" + MgmtSvc_PoolReint_FullMethodName = "/mgmt.MgmtSvc/PoolReint" MgmtSvc_PoolQuery_FullMethodName = "/mgmt.MgmtSvc/PoolQuery" MgmtSvc_PoolQueryTarget_FullMethodName = "/mgmt.MgmtSvc/PoolQueryTarget" MgmtSvc_PoolSetProp_FullMethodName = "/mgmt.MgmtSvc/PoolSetProp" @@ -98,7 +98,7 @@ type MgmtSvcClient interface { // Extend a pool. PoolExtend(ctx context.Context, in *PoolExtendReq, opts ...grpc.CallOption) (*PoolExtendResp, error) // Reintegrate a pool target. - PoolReintegrate(ctx context.Context, in *PoolReintegrateReq, opts ...grpc.CallOption) (*PoolReintegrateResp, error) + PoolReint(ctx context.Context, in *PoolReintReq, opts ...grpc.CallOption) (*PoolReintResp, error) // PoolQuery queries a DAOS pool. PoolQuery(ctx context.Context, in *PoolQueryReq, opts ...grpc.CallOption) (*PoolQueryResp, error) // PoolQueryTarget queries a DAOS storage target. @@ -131,7 +131,7 @@ type MgmtSvcClient interface { SystemStart(ctx context.Context, in *SystemStartReq, opts ...grpc.CallOption) (*SystemStartResp, error) // Exclude DAOS ranks SystemExclude(ctx context.Context, in *SystemExcludeReq, opts ...grpc.CallOption) (*SystemExcludeResp, error) - // Drain DAOS ranks from all pools + // Drain or reintegrate DAOS ranks from all pools SystemDrain(ctx context.Context, in *SystemDrainReq, opts ...grpc.CallOption) (*SystemDrainResp, error) // Erase DAOS system database prior to reformat SystemErase(ctx context.Context, in *SystemEraseReq, opts ...grpc.CallOption) (*SystemEraseResp, error) @@ -260,9 +260,9 @@ func (c *mgmtSvcClient) PoolExtend(ctx context.Context, in *PoolExtendReq, opts return out, nil } -func (c *mgmtSvcClient) PoolReintegrate(ctx context.Context, in *PoolReintegrateReq, opts ...grpc.CallOption) (*PoolReintegrateResp, error) { - out := new(PoolReintegrateResp) - err := c.cc.Invoke(ctx, MgmtSvc_PoolReintegrate_FullMethodName, in, out, opts...) +func (c *mgmtSvcClient) PoolReint(ctx context.Context, in *PoolReintReq, opts ...grpc.CallOption) (*PoolReintResp, error) { + out := new(PoolReintResp) + err := c.cc.Invoke(ctx, MgmtSvc_PoolReint_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -608,7 +608,7 @@ type MgmtSvcServer interface { // Extend a pool. PoolExtend(context.Context, *PoolExtendReq) (*PoolExtendResp, error) // Reintegrate a pool target. - PoolReintegrate(context.Context, *PoolReintegrateReq) (*PoolReintegrateResp, error) + PoolReint(context.Context, *PoolReintReq) (*PoolReintResp, error) // PoolQuery queries a DAOS pool. PoolQuery(context.Context, *PoolQueryReq) (*PoolQueryResp, error) // PoolQueryTarget queries a DAOS storage target. @@ -641,7 +641,7 @@ type MgmtSvcServer interface { SystemStart(context.Context, *SystemStartReq) (*SystemStartResp, error) // Exclude DAOS ranks SystemExclude(context.Context, *SystemExcludeReq) (*SystemExcludeResp, error) - // Drain DAOS ranks from all pools + // Drain or reintegrate DAOS ranks from all pools SystemDrain(context.Context, *SystemDrainReq) (*SystemDrainResp, error) // Erase DAOS system database prior to reformat SystemErase(context.Context, *SystemEraseReq) (*SystemEraseResp, error) @@ -713,8 +713,8 @@ func (UnimplementedMgmtSvcServer) PoolDrain(context.Context, *PoolDrainReq) (*Po func (UnimplementedMgmtSvcServer) PoolExtend(context.Context, *PoolExtendReq) (*PoolExtendResp, error) { return nil, status.Errorf(codes.Unimplemented, "method PoolExtend not implemented") } -func (UnimplementedMgmtSvcServer) PoolReintegrate(context.Context, *PoolReintegrateReq) (*PoolReintegrateResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method PoolReintegrate not implemented") +func (UnimplementedMgmtSvcServer) PoolReint(context.Context, *PoolReintReq) (*PoolReintResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method PoolReint not implemented") } func (UnimplementedMgmtSvcServer) PoolQuery(context.Context, *PoolQueryReq) (*PoolQueryResp, error) { return nil, status.Errorf(codes.Unimplemented, "method PoolQuery not implemented") @@ -996,20 +996,20 @@ func _MgmtSvc_PoolExtend_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } -func _MgmtSvc_PoolReintegrate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PoolReintegrateReq) +func _MgmtSvc_PoolReint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PoolReintReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MgmtSvcServer).PoolReintegrate(ctx, in) + return srv.(MgmtSvcServer).PoolReint(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: MgmtSvc_PoolReintegrate_FullMethodName, + FullMethod: MgmtSvc_PoolReint_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MgmtSvcServer).PoolReintegrate(ctx, req.(*PoolReintegrateReq)) + return srv.(MgmtSvcServer).PoolReint(ctx, req.(*PoolReintReq)) } return interceptor(ctx, in, info, handler) } @@ -1688,8 +1688,8 @@ var MgmtSvc_ServiceDesc = grpc.ServiceDesc{ Handler: _MgmtSvc_PoolExtend_Handler, }, { - MethodName: "PoolReintegrate", - Handler: _MgmtSvc_PoolReintegrate_Handler, + MethodName: "PoolReint", + Handler: _MgmtSvc_PoolReint_Handler, }, { MethodName: "PoolQuery", diff --git a/src/control/common/proto/mgmt/pool.pb.go b/src/control/common/proto/mgmt/pool.pb.go index cf9acf3370c..8f87cd65930 100644 --- a/src/control/common/proto/mgmt/pool.pb.go +++ b/src/control/common/proto/mgmt/pool.pb.go @@ -1224,8 +1224,8 @@ func (x *PoolExtendResp) GetTierBytes() []uint64 { return nil } -// PoolReintegrateReq supplies pool identifier, rank, and target_idxs. -type PoolReintegrateReq struct { +// PoolReintReq supplies pool identifier, rank, and target_idxs. +type PoolReintReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1239,8 +1239,8 @@ type PoolReintegrateReq struct { MemRatio float32 `protobuf:"fixed32,7,opt,name=mem_ratio,json=memRatio,proto3" json:"mem_ratio,omitempty"` // Fraction of meta-blob-sz to use as mem-file-sz } -func (x *PoolReintegrateReq) Reset() { - *x = PoolReintegrateReq{} +func (x *PoolReintReq) Reset() { + *x = PoolReintReq{} if protoimpl.UnsafeEnabled { mi := &file_mgmt_pool_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1248,13 +1248,13 @@ func (x *PoolReintegrateReq) Reset() { } } -func (x *PoolReintegrateReq) String() string { +func (x *PoolReintReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PoolReintegrateReq) ProtoMessage() {} +func (*PoolReintReq) ProtoMessage() {} -func (x *PoolReintegrateReq) ProtoReflect() protoreflect.Message { +func (x *PoolReintReq) ProtoReflect() protoreflect.Message { mi := &file_mgmt_pool_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1266,62 +1266,62 @@ func (x *PoolReintegrateReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PoolReintegrateReq.ProtoReflect.Descriptor instead. -func (*PoolReintegrateReq) Descriptor() ([]byte, []int) { +// Deprecated: Use PoolReintReq.ProtoReflect.Descriptor instead. +func (*PoolReintReq) Descriptor() ([]byte, []int) { return file_mgmt_pool_proto_rawDescGZIP(), []int{12} } -func (x *PoolReintegrateReq) GetSys() string { +func (x *PoolReintReq) GetSys() string { if x != nil { return x.Sys } return "" } -func (x *PoolReintegrateReq) GetId() string { +func (x *PoolReintReq) GetId() string { if x != nil { return x.Id } return "" } -func (x *PoolReintegrateReq) GetRank() uint32 { +func (x *PoolReintReq) GetRank() uint32 { if x != nil { return x.Rank } return 0 } -func (x *PoolReintegrateReq) GetTargetIdx() []uint32 { +func (x *PoolReintReq) GetTargetIdx() []uint32 { if x != nil { return x.TargetIdx } return nil } -func (x *PoolReintegrateReq) GetSvcRanks() []uint32 { +func (x *PoolReintReq) GetSvcRanks() []uint32 { if x != nil { return x.SvcRanks } return nil } -func (x *PoolReintegrateReq) GetTierBytes() []uint64 { +func (x *PoolReintReq) GetTierBytes() []uint64 { if x != nil { return x.TierBytes } return nil } -func (x *PoolReintegrateReq) GetMemRatio() float32 { +func (x *PoolReintReq) GetMemRatio() float32 { if x != nil { return x.MemRatio } return 0 } -// PoolReintegrateResp returns resultant state of Reintegrate operation. -type PoolReintegrateResp struct { +// PoolReintResp returns resultant state of Reintegrate operation. +type PoolReintResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1329,8 +1329,8 @@ type PoolReintegrateResp struct { Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // DAOS error code } -func (x *PoolReintegrateResp) Reset() { - *x = PoolReintegrateResp{} +func (x *PoolReintResp) Reset() { + *x = PoolReintResp{} if protoimpl.UnsafeEnabled { mi := &file_mgmt_pool_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1338,13 +1338,13 @@ func (x *PoolReintegrateResp) Reset() { } } -func (x *PoolReintegrateResp) String() string { +func (x *PoolReintResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PoolReintegrateResp) ProtoMessage() {} +func (*PoolReintResp) ProtoMessage() {} -func (x *PoolReintegrateResp) ProtoReflect() protoreflect.Message { +func (x *PoolReintResp) ProtoReflect() protoreflect.Message { mi := &file_mgmt_pool_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1356,12 +1356,12 @@ func (x *PoolReintegrateResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PoolReintegrateResp.ProtoReflect.Descriptor instead. -func (*PoolReintegrateResp) Descriptor() ([]byte, []int) { +// Deprecated: Use PoolReintResp.ProtoReflect.Descriptor instead. +func (*PoolReintResp) Descriptor() ([]byte, []int) { return file_mgmt_pool_proto_rawDescGZIP(), []int{13} } -func (x *PoolReintegrateResp) GetStatus() int32 { +func (x *PoolReintResp) GetStatus() int32 { if x != nil { return x.Status } @@ -3000,229 +3000,228 @@ var file_mgmt_pool_proto_rawDesc = []byte{ 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x65, 0x72, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, - 0xc2, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x73, - 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, - 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x65, 0x72, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, - 0x65, 0x72, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x52, - 0x61, 0x74, 0x69, 0x6f, 0x22, 0x2d, 0x0a, 0x13, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0xbc, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, + 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x49, 0x64, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, + 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, + 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x65, 0x72, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x27, + 0x0a, 0x0d, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x20, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x0d, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x20, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x73, 0x79, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x2e, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, - 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x1a, 0x86, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x76, 0x63, 0x5f, 0x72, 0x65, 0x70, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x76, 0x63, 0x52, 0x65, 0x70, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, - 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x4c, 0x0a, 0x0b, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, + 0x74, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, + 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, + 0x6f, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x86, 0x01, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x76, 0x63, + 0x5f, 0x72, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x76, 0x63, + 0x52, 0x65, 0x70, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, + 0x4c, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x10, + 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x7b, 0x0a, + 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x1a, + 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x6c, 0x0a, 0x0c, 0x50, 0x6f, + 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x08, 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x7b, 0x0a, 0x0c, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x1a, 0x0a, 0x04, 0x43, 0x6f, - 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x22, 0x6c, 0x0a, 0x0c, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, + 0x08, 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xac, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x65, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, + 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, + 0x6d, 0x65, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x6d, 0x65, 0x61, 0x6e, + 0x12, 0x35, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x11, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x25, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x44, 0x4c, 0x45, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, + 0x55, 0x53, 0x59, 0x10, 0x02, 0x22, 0x85, 0x06, 0x0a, 0x0d, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x25, + 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, + 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x72, 0x65, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x74, 0x69, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x09, 0x74, 0x69, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, + 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x61, 0x6e, + 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x72, + 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x26, + 0x0a, 0x0f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x65, + 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x6f, 0x6f, 0x6c, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x56, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x10, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x61, 0x79, 0x6f, 0x75, + 0x74, 0x56, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x76, 0x63, 0x5f, 0x6c, 0x64, 0x72, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x76, 0x63, 0x4c, 0x64, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, + 0x76, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, + 0x76, 0x63, 0x52, 0x65, 0x70, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, + 0x65, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, + 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x64, 0x65, 0x61, 0x64, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, + 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x63, 0x0a, + 0x0c, 0x50, 0x6f, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, + 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x76, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x76, 0x61, 0x6c, 0x12, + 0x18, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x00, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x76, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, + 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, + 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, + 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, + 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x29, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, 0x6c, + 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, - 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x76, 0x63, - 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xac, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x66, 0x72, 0x65, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x61, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x6d, 0x65, 0x61, 0x6e, 0x12, 0x35, 0x0a, 0x0a, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x11, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1d, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x25, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, - 0x04, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x55, 0x53, 0x59, 0x10, - 0x02, 0x22, 0x85, 0x06, 0x0a, 0x0d, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, - 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, - 0x36, 0x0a, 0x0a, 0x74, 0x69, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x74, 0x69, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x25, - 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x6f, - 0x6f, 0x6c, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x6f, 0x6f, 0x6c, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x56, - 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x6c, 0x61, - 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, - 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x56, 0x65, 0x72, - 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x73, 0x76, 0x63, 0x5f, 0x6c, 0x64, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x06, 0x73, 0x76, 0x63, 0x4c, 0x64, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x76, 0x63, 0x5f, 0x72, - 0x65, 0x70, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x76, 0x63, 0x52, 0x65, - 0x70, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x73, - 0x6b, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x46, 0x69, - 0x6c, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x61, 0x64, 0x5f, - 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x61, - 0x64, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x52, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x63, 0x0a, 0x0c, 0x50, 0x6f, 0x6f, - 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x06, 0x6e, - 0x75, 0x6d, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x6e, - 0x75, 0x6d, 0x76, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x83, - 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, - 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, - 0x6f, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, 0x72, - 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x76, 0x63, 0x52, - 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x29, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, - 0x83, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, - 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x08, 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x5d, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, + 0x6c, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0a, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, - 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x76, 0x63, - 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x5d, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, 0x6c, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x32, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, - 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x0e, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, - 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x76, 0x63, - 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x29, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, 0x6c, 0x55, 0x70, 0x67, - 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x81, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, - 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x18, 0x0a, - 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x76, 0x63, 0x5f, 0x72, - 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x76, 0x63, 0x52, - 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x66, 0x72, 0x65, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0x80, 0x03, 0x0a, 0x13, - 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6d, - 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, - 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0x3b, 0x0a, 0x0a, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, - 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x48, - 0x44, 0x44, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, 0x44, 0x10, 0x02, 0x12, 0x06, 0x0a, - 0x02, 0x50, 0x4d, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x4d, 0x10, 0x04, 0x22, 0x5f, 0x0a, - 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, 0x0d, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, - 0x0c, 0x0a, 0x08, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, - 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x55, 0x50, 0x10, 0x03, 0x12, - 0x09, 0x0a, 0x05, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, - 0x57, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x52, 0x41, 0x49, 0x4e, 0x10, 0x06, 0x22, 0x5e, - 0x0a, 0x13, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, - 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, - 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x2a, 0x25, - 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x43, 0x4d, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e, - 0x56, 0x4d, 0x45, 0x10, 0x01, 0x2a, 0x56, 0x0a, 0x10, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x61, 0x64, 0x79, - 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x69, 0x6e, 0x67, - 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x65, 0x67, 0x72, 0x61, 0x64, 0x65, 0x64, 0x10, 0x03, - 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x04, 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, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x0e, 0x50, 0x6f, 0x6f, 0x6c, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x73, 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x08, 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x29, 0x0a, 0x0f, 0x50, 0x6f, 0x6f, + 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x72, 0x61, 0x6e, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, + 0x76, 0x63, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, + 0x73, 0x76, 0x63, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x75, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x65, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, + 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x80, 0x03, 0x0a, 0x13, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, + 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, + 0x0a, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x24, + 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x22, 0x3b, 0x0a, 0x0a, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x07, 0x0a, 0x03, 0x48, 0x44, 0x44, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x53, 0x44, 0x10, + 0x02, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x4d, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x4d, 0x10, + 0x04, 0x22, 0x5f, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x55, + 0x50, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x50, 0x5f, 0x49, 0x4e, 0x10, 0x04, 0x12, 0x07, + 0x0a, 0x03, 0x4e, 0x45, 0x57, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x52, 0x41, 0x49, 0x4e, + 0x10, 0x06, 0x22, 0x5e, 0x0a, 0x13, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x69, 0x6e, 0x66, + 0x6f, 0x73, 0x2a, 0x25, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x64, + 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x43, 0x4d, 0x10, 0x00, 0x12, + 0x08, 0x0a, 0x04, 0x4e, 0x56, 0x4d, 0x45, 0x10, 0x01, 0x2a, 0x56, 0x0a, 0x10, 0x50, 0x6f, 0x6f, + 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0c, 0x0a, + 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, + 0x65, 0x61, 0x64, 0x79, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, + 0x79, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x65, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x64, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, + 0x04, 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 ( @@ -3257,8 +3256,8 @@ var file_mgmt_pool_proto_goTypes = []interface{}{ (*PoolDrainResp)(nil), // 14: mgmt.PoolDrainResp (*PoolExtendReq)(nil), // 15: mgmt.PoolExtendReq (*PoolExtendResp)(nil), // 16: mgmt.PoolExtendResp - (*PoolReintegrateReq)(nil), // 17: mgmt.PoolReintegrateReq - (*PoolReintegrateResp)(nil), // 18: mgmt.PoolReintegrateResp + (*PoolReintReq)(nil), // 17: mgmt.PoolReintReq + (*PoolReintResp)(nil), // 18: mgmt.PoolReintResp (*ListPoolsReq)(nil), // 19: mgmt.ListPoolsReq (*ListPoolsResp)(nil), // 20: mgmt.ListPoolsResp (*ListContReq)(nil), // 21: mgmt.ListContReq @@ -3456,7 +3455,7 @@ func file_mgmt_pool_proto_init() { } } file_mgmt_pool_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PoolReintegrateReq); i { + switch v := v.(*PoolReintReq); i { case 0: return &v.state case 1: @@ -3468,7 +3467,7 @@ func file_mgmt_pool_proto_init() { } } file_mgmt_pool_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PoolReintegrateResp); i { + switch v := v.(*PoolReintResp); i { case 0: return &v.state case 1: diff --git a/src/control/common/proto/mgmt/system.pb.go b/src/control/common/proto/mgmt/system.pb.go index 186b22c91c4..1857d9fc74b 100644 --- a/src/control/common/proto/mgmt/system.pb.go +++ b/src/control/common/proto/mgmt/system.pb.go @@ -567,21 +567,94 @@ func (x *SystemExcludeResp) GetResults() []*shared.RankResult { return nil } +// Results for system OSA calls on multiple pool-ranks. +type PoolRankResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // Status of the OSA operation on a specific pool + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // Error message if status indicates an error + PoolId string `protobuf:"bytes,3,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` // Label or uuid of pool + Ranks string `protobuf:"bytes,4,opt,name=ranks,proto3" json:"ranks,omitempty"` // Rank-set that has encountered this result +} + +func (x *PoolRankResult) Reset() { + *x = PoolRankResult{} + if protoimpl.UnsafeEnabled { + mi := &file_mgmt_system_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PoolRankResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PoolRankResult) ProtoMessage() {} + +func (x *PoolRankResult) ProtoReflect() protoreflect.Message { + mi := &file_mgmt_system_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PoolRankResult.ProtoReflect.Descriptor instead. +func (*PoolRankResult) Descriptor() ([]byte, []int) { + return file_mgmt_system_proto_rawDescGZIP(), []int{7} +} + +func (x *PoolRankResult) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *PoolRankResult) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *PoolRankResult) GetPoolId() string { + if x != nil { + return x.PoolId + } + return "" +} + +func (x *PoolRankResult) GetRanks() string { + if x != nil { + return x.Ranks + } + return "" +} + // SystemDrainReq supplies system-drain parameters. type SystemDrainReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Sys string `protobuf:"bytes,1,opt,name=sys,proto3" json:"sys,omitempty"` // DAOS system name - Ranks string `protobuf:"bytes,2,opt,name=ranks,proto3" json:"ranks,omitempty"` // rankset to drain on all pools - Hosts string `protobuf:"bytes,3,opt,name=hosts,proto3" json:"hosts,omitempty"` // hostset to drain on all pools + Sys string `protobuf:"bytes,1,opt,name=sys,proto3" json:"sys,omitempty"` // DAOS system name + Ranks string `protobuf:"bytes,2,opt,name=ranks,proto3" json:"ranks,omitempty"` // rankset to drain on all pools + Hosts string `protobuf:"bytes,3,opt,name=hosts,proto3" json:"hosts,omitempty"` // hostset to drain on all pools + Reint bool `protobuf:"varint,4,opt,name=reint,proto3" json:"reint,omitempty"` // Flag to indicate if request is for drain or reint. } func (x *SystemDrainReq) Reset() { *x = SystemDrainReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[7] + mi := &file_mgmt_system_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -594,7 +667,7 @@ func (x *SystemDrainReq) String() string { func (*SystemDrainReq) ProtoMessage() {} func (x *SystemDrainReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[7] + mi := &file_mgmt_system_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -607,7 +680,7 @@ func (x *SystemDrainReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemDrainReq.ProtoReflect.Descriptor instead. func (*SystemDrainReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{7} + return file_mgmt_system_proto_rawDescGZIP(), []int{8} } func (x *SystemDrainReq) GetSys() string { @@ -631,19 +704,27 @@ func (x *SystemDrainReq) GetHosts() string { return "" } +func (x *SystemDrainReq) GetReint() bool { + if x != nil { + return x.Reint + } + return false +} + // SystemDrainResp returns status of system-drain request. type SystemDrainResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Results []*SystemDrainResp_DrainResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` // Results for pool-ranks drain calls. + Reint bool `protobuf:"varint,1,opt,name=reint,proto3" json:"reint,omitempty"` // Flag to indicate if results are for drain or reint. + Results []*PoolRankResult `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` // Results for drain or reint calls on pool-ranks. } func (x *SystemDrainResp) Reset() { *x = SystemDrainResp{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[8] + mi := &file_mgmt_system_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -656,7 +737,7 @@ func (x *SystemDrainResp) String() string { func (*SystemDrainResp) ProtoMessage() {} func (x *SystemDrainResp) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[8] + mi := &file_mgmt_system_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -669,10 +750,17 @@ func (x *SystemDrainResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemDrainResp.ProtoReflect.Descriptor instead. func (*SystemDrainResp) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{8} + return file_mgmt_system_proto_rawDescGZIP(), []int{9} } -func (x *SystemDrainResp) GetResults() []*SystemDrainResp_DrainResult { +func (x *SystemDrainResp) GetReint() bool { + if x != nil { + return x.Reint + } + return false +} + +func (x *SystemDrainResp) GetResults() []*PoolRankResult { if x != nil { return x.Results } @@ -694,7 +782,7 @@ type SystemQueryReq struct { func (x *SystemQueryReq) Reset() { *x = SystemQueryReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[9] + mi := &file_mgmt_system_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -707,7 +795,7 @@ func (x *SystemQueryReq) String() string { func (*SystemQueryReq) ProtoMessage() {} func (x *SystemQueryReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[9] + mi := &file_mgmt_system_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -720,7 +808,7 @@ func (x *SystemQueryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemQueryReq.ProtoReflect.Descriptor instead. func (*SystemQueryReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{9} + return file_mgmt_system_proto_rawDescGZIP(), []int{10} } func (x *SystemQueryReq) GetSys() string { @@ -767,7 +855,7 @@ type SystemQueryResp struct { func (x *SystemQueryResp) Reset() { *x = SystemQueryResp{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[10] + mi := &file_mgmt_system_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -780,7 +868,7 @@ func (x *SystemQueryResp) String() string { func (*SystemQueryResp) ProtoMessage() {} func (x *SystemQueryResp) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[10] + mi := &file_mgmt_system_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -793,7 +881,7 @@ func (x *SystemQueryResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemQueryResp.ProtoReflect.Descriptor instead. func (*SystemQueryResp) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{10} + return file_mgmt_system_proto_rawDescGZIP(), []int{11} } func (x *SystemQueryResp) GetMembers() []*SystemMember { @@ -843,7 +931,7 @@ type SystemEraseReq struct { func (x *SystemEraseReq) Reset() { *x = SystemEraseReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[11] + mi := &file_mgmt_system_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -856,7 +944,7 @@ func (x *SystemEraseReq) String() string { func (*SystemEraseReq) ProtoMessage() {} func (x *SystemEraseReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[11] + mi := &file_mgmt_system_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -869,7 +957,7 @@ func (x *SystemEraseReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemEraseReq.ProtoReflect.Descriptor instead. func (*SystemEraseReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{11} + return file_mgmt_system_proto_rawDescGZIP(), []int{12} } func (x *SystemEraseReq) GetSys() string { @@ -890,7 +978,7 @@ type SystemEraseResp struct { func (x *SystemEraseResp) Reset() { *x = SystemEraseResp{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[12] + mi := &file_mgmt_system_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -903,7 +991,7 @@ func (x *SystemEraseResp) String() string { func (*SystemEraseResp) ProtoMessage() {} func (x *SystemEraseResp) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[12] + mi := &file_mgmt_system_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -916,7 +1004,7 @@ func (x *SystemEraseResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemEraseResp.ProtoReflect.Descriptor instead. func (*SystemEraseResp) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{12} + return file_mgmt_system_proto_rawDescGZIP(), []int{13} } func (x *SystemEraseResp) GetResults() []*shared.RankResult { @@ -939,7 +1027,7 @@ type SystemCleanupReq struct { func (x *SystemCleanupReq) Reset() { *x = SystemCleanupReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[13] + mi := &file_mgmt_system_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -952,7 +1040,7 @@ func (x *SystemCleanupReq) String() string { func (*SystemCleanupReq) ProtoMessage() {} func (x *SystemCleanupReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[13] + mi := &file_mgmt_system_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -965,7 +1053,7 @@ func (x *SystemCleanupReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemCleanupReq.ProtoReflect.Descriptor instead. func (*SystemCleanupReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{13} + return file_mgmt_system_proto_rawDescGZIP(), []int{14} } func (x *SystemCleanupReq) GetSys() string { @@ -994,7 +1082,7 @@ type SystemCleanupResp struct { func (x *SystemCleanupResp) Reset() { *x = SystemCleanupResp{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[14] + mi := &file_mgmt_system_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1007,7 +1095,7 @@ func (x *SystemCleanupResp) String() string { func (*SystemCleanupResp) ProtoMessage() {} func (x *SystemCleanupResp) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[14] + mi := &file_mgmt_system_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1020,7 +1108,7 @@ func (x *SystemCleanupResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemCleanupResp.ProtoReflect.Descriptor instead. func (*SystemCleanupResp) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{14} + return file_mgmt_system_proto_rawDescGZIP(), []int{15} } func (x *SystemCleanupResp) GetResults() []*SystemCleanupResp_CleanupResult { @@ -1043,7 +1131,7 @@ type SystemSetAttrReq struct { func (x *SystemSetAttrReq) Reset() { *x = SystemSetAttrReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[15] + mi := &file_mgmt_system_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1056,7 +1144,7 @@ func (x *SystemSetAttrReq) String() string { func (*SystemSetAttrReq) ProtoMessage() {} func (x *SystemSetAttrReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[15] + mi := &file_mgmt_system_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1069,7 +1157,7 @@ func (x *SystemSetAttrReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemSetAttrReq.ProtoReflect.Descriptor instead. func (*SystemSetAttrReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{15} + return file_mgmt_system_proto_rawDescGZIP(), []int{16} } func (x *SystemSetAttrReq) GetSys() string { @@ -1100,7 +1188,7 @@ type SystemGetAttrReq struct { func (x *SystemGetAttrReq) Reset() { *x = SystemGetAttrReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[16] + mi := &file_mgmt_system_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1113,7 +1201,7 @@ func (x *SystemGetAttrReq) String() string { func (*SystemGetAttrReq) ProtoMessage() {} func (x *SystemGetAttrReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[16] + mi := &file_mgmt_system_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1126,7 +1214,7 @@ func (x *SystemGetAttrReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemGetAttrReq.ProtoReflect.Descriptor instead. func (*SystemGetAttrReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{16} + return file_mgmt_system_proto_rawDescGZIP(), []int{17} } func (x *SystemGetAttrReq) GetSys() string { @@ -1155,7 +1243,7 @@ type SystemGetAttrResp struct { func (x *SystemGetAttrResp) Reset() { *x = SystemGetAttrResp{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[17] + mi := &file_mgmt_system_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1168,7 +1256,7 @@ func (x *SystemGetAttrResp) String() string { func (*SystemGetAttrResp) ProtoMessage() {} func (x *SystemGetAttrResp) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[17] + mi := &file_mgmt_system_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1181,7 +1269,7 @@ func (x *SystemGetAttrResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemGetAttrResp.ProtoReflect.Descriptor instead. func (*SystemGetAttrResp) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{17} + return file_mgmt_system_proto_rawDescGZIP(), []int{18} } func (x *SystemGetAttrResp) GetAttributes() map[string]string { @@ -1204,7 +1292,7 @@ type SystemSetPropReq struct { func (x *SystemSetPropReq) Reset() { *x = SystemSetPropReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[18] + mi := &file_mgmt_system_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1217,7 +1305,7 @@ func (x *SystemSetPropReq) String() string { func (*SystemSetPropReq) ProtoMessage() {} func (x *SystemSetPropReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[18] + mi := &file_mgmt_system_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1230,7 +1318,7 @@ func (x *SystemSetPropReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemSetPropReq.ProtoReflect.Descriptor instead. func (*SystemSetPropReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{18} + return file_mgmt_system_proto_rawDescGZIP(), []int{19} } func (x *SystemSetPropReq) GetSys() string { @@ -1261,7 +1349,7 @@ type SystemGetPropReq struct { func (x *SystemGetPropReq) Reset() { *x = SystemGetPropReq{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[19] + mi := &file_mgmt_system_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1274,7 +1362,7 @@ func (x *SystemGetPropReq) String() string { func (*SystemGetPropReq) ProtoMessage() {} func (x *SystemGetPropReq) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[19] + mi := &file_mgmt_system_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1287,7 +1375,7 @@ func (x *SystemGetPropReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemGetPropReq.ProtoReflect.Descriptor instead. func (*SystemGetPropReq) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{19} + return file_mgmt_system_proto_rawDescGZIP(), []int{20} } func (x *SystemGetPropReq) GetSys() string { @@ -1316,7 +1404,7 @@ type SystemGetPropResp struct { func (x *SystemGetPropResp) Reset() { *x = SystemGetPropResp{} if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[20] + mi := &file_mgmt_system_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1329,7 +1417,7 @@ func (x *SystemGetPropResp) String() string { func (*SystemGetPropResp) ProtoMessage() {} func (x *SystemGetPropResp) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[20] + mi := &file_mgmt_system_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1342,7 +1430,7 @@ func (x *SystemGetPropResp) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemGetPropResp.ProtoReflect.Descriptor instead. func (*SystemGetPropResp) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{20} + return file_mgmt_system_proto_rawDescGZIP(), []int{21} } func (x *SystemGetPropResp) GetProperties() map[string]string { @@ -1352,77 +1440,6 @@ func (x *SystemGetPropResp) GetProperties() map[string]string { return nil } -type SystemDrainResp_DrainResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // Status of the evict on the specific pool - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` // Error message if status indicates an error - PoolId string `protobuf:"bytes,3,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` // Label or uuid of pool - Ranks string `protobuf:"bytes,4,opt,name=ranks,proto3" json:"ranks,omitempty"` // Rank-set that has encountered this result -} - -func (x *SystemDrainResp_DrainResult) Reset() { - *x = SystemDrainResp_DrainResult{} - if protoimpl.UnsafeEnabled { - mi := &file_mgmt_system_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SystemDrainResp_DrainResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SystemDrainResp_DrainResult) ProtoMessage() {} - -func (x *SystemDrainResp_DrainResult) ProtoReflect() protoreflect.Message { - mi := &file_mgmt_system_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SystemDrainResp_DrainResult.ProtoReflect.Descriptor instead. -func (*SystemDrainResp_DrainResult) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{8, 0} -} - -func (x *SystemDrainResp_DrainResult) GetStatus() int32 { - if x != nil { - return x.Status - } - return 0 -} - -func (x *SystemDrainResp_DrainResult) GetMsg() string { - if x != nil { - return x.Msg - } - return "" -} - -func (x *SystemDrainResp_DrainResult) GetPoolId() string { - if x != nil { - return x.PoolId - } - return "" -} - -func (x *SystemDrainResp_DrainResult) GetRanks() string { - if x != nil { - return x.Ranks - } - return "" -} - type SystemCleanupResp_CleanupResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1463,7 +1480,7 @@ func (x *SystemCleanupResp_CleanupResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemCleanupResp_CleanupResult.ProtoReflect.Descriptor instead. func (*SystemCleanupResp_CleanupResult) Descriptor() ([]byte, []int) { - return file_mgmt_system_proto_rawDescGZIP(), []int{14, 0} + return file_mgmt_system_proto_rawDescGZIP(), []int{15, 0} } func (x *SystemCleanupResp_CleanupResult) GetStatus() int32 { @@ -1564,118 +1581,120 @@ var file_mgmt_system_proto_rawDesc = []byte{ 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x4e, 0x0a, 0x0e, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, - 0x6e, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x22, 0xb6, 0x01, 0x0a, 0x0f, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3b, 0x0a, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x61, 0x69, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x66, 0x0a, 0x0b, 0x44, 0x72, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6d, 0x73, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, - 0x6b, 0x73, 0x22, 0x6d, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, 0x73, - 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, - 0x6b, 0x22, 0xc4, 0x01, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x62, 0x73, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, - 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x62, 0x73, 0x65, 0x6e, 0x74, - 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x62, 0x73, 0x65, 0x6e, 0x74, 0x68, - 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x62, 0x73, 0x65, - 0x6e, 0x74, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x64, - 0x61, 0x74, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x22, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x22, 0x3f, 0x0a, 0x0f, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x2c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3e, 0x0a, - 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, 0x65, + 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x69, 0x0a, 0x0e, 0x50, 0x6f, 0x6f, + 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, + 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x72, + 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x6b, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, + 0x6f, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x0f, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, + 0x05, 0x72, 0x65, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, + 0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x22, 0x6d, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x6b, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x6f, + 0x73, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, + 0x73, 0x6b, 0x22, 0xc4, 0x01, 0x0a, 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2c, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x62, 0x73, 0x65, 0x6e, 0x74, 0x72, 0x61, + 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x62, 0x73, 0x65, 0x6e, + 0x74, 0x72, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x62, 0x73, 0x65, 0x6e, 0x74, + 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x62, 0x73, + 0x65, 0x6e, 0x74, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x64, 0x61, 0x74, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x22, 0x0a, 0x0e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x22, 0x3f, 0x0a, + 0x0f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x2c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3e, + 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0xbe, + 0x01, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, + 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x68, 0x0a, 0x0d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, + 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xab, 0x01, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, + 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, + 0x65, 0x71, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, + 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, + 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x22, 0xbe, 0x01, - 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6c, - 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x68, 0x0a, 0x0d, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, - 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, - 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xab, - 0x01, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, - 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, - 0x71, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, - 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x10, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x71, - 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, - 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x0a, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xab, 0x01, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x38, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x9b, 0x01, 0x0a, - 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x2e, - 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 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, + 0x73, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, + 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, + 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xab, 0x01, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x46, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x9b, 0x01, + 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x67, 0x6d, 0x74, 0x2e, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 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 ( @@ -1699,21 +1718,21 @@ var file_mgmt_system_proto_goTypes = []interface{}{ (*SystemStartResp)(nil), // 4: mgmt.SystemStartResp (*SystemExcludeReq)(nil), // 5: mgmt.SystemExcludeReq (*SystemExcludeResp)(nil), // 6: mgmt.SystemExcludeResp - (*SystemDrainReq)(nil), // 7: mgmt.SystemDrainReq - (*SystemDrainResp)(nil), // 8: mgmt.SystemDrainResp - (*SystemQueryReq)(nil), // 9: mgmt.SystemQueryReq - (*SystemQueryResp)(nil), // 10: mgmt.SystemQueryResp - (*SystemEraseReq)(nil), // 11: mgmt.SystemEraseReq - (*SystemEraseResp)(nil), // 12: mgmt.SystemEraseResp - (*SystemCleanupReq)(nil), // 13: mgmt.SystemCleanupReq - (*SystemCleanupResp)(nil), // 14: mgmt.SystemCleanupResp - (*SystemSetAttrReq)(nil), // 15: mgmt.SystemSetAttrReq - (*SystemGetAttrReq)(nil), // 16: mgmt.SystemGetAttrReq - (*SystemGetAttrResp)(nil), // 17: mgmt.SystemGetAttrResp - (*SystemSetPropReq)(nil), // 18: mgmt.SystemSetPropReq - (*SystemGetPropReq)(nil), // 19: mgmt.SystemGetPropReq - (*SystemGetPropResp)(nil), // 20: mgmt.SystemGetPropResp - (*SystemDrainResp_DrainResult)(nil), // 21: mgmt.SystemDrainResp.DrainResult + (*PoolRankResult)(nil), // 7: mgmt.PoolRankResult + (*SystemDrainReq)(nil), // 8: mgmt.SystemDrainReq + (*SystemDrainResp)(nil), // 9: mgmt.SystemDrainResp + (*SystemQueryReq)(nil), // 10: mgmt.SystemQueryReq + (*SystemQueryResp)(nil), // 11: mgmt.SystemQueryResp + (*SystemEraseReq)(nil), // 12: mgmt.SystemEraseReq + (*SystemEraseResp)(nil), // 13: mgmt.SystemEraseResp + (*SystemCleanupReq)(nil), // 14: mgmt.SystemCleanupReq + (*SystemCleanupResp)(nil), // 15: mgmt.SystemCleanupResp + (*SystemSetAttrReq)(nil), // 16: mgmt.SystemSetAttrReq + (*SystemGetAttrReq)(nil), // 17: mgmt.SystemGetAttrReq + (*SystemGetAttrResp)(nil), // 18: mgmt.SystemGetAttrResp + (*SystemSetPropReq)(nil), // 19: mgmt.SystemSetPropReq + (*SystemGetPropReq)(nil), // 20: mgmt.SystemGetPropReq + (*SystemGetPropResp)(nil), // 21: mgmt.SystemGetPropResp (*SystemCleanupResp_CleanupResult)(nil), // 22: mgmt.SystemCleanupResp.CleanupResult nil, // 23: mgmt.SystemSetAttrReq.AttributesEntry nil, // 24: mgmt.SystemGetAttrResp.AttributesEntry @@ -1725,7 +1744,7 @@ var file_mgmt_system_proto_depIdxs = []int32{ 27, // 0: mgmt.SystemStopResp.results:type_name -> shared.RankResult 27, // 1: mgmt.SystemStartResp.results:type_name -> shared.RankResult 27, // 2: mgmt.SystemExcludeResp.results:type_name -> shared.RankResult - 21, // 3: mgmt.SystemDrainResp.results:type_name -> mgmt.SystemDrainResp.DrainResult + 7, // 3: mgmt.SystemDrainResp.results:type_name -> mgmt.PoolRankResult 0, // 4: mgmt.SystemQueryResp.members:type_name -> mgmt.SystemMember 27, // 5: mgmt.SystemEraseResp.results:type_name -> shared.RankResult 22, // 6: mgmt.SystemCleanupResp.results:type_name -> mgmt.SystemCleanupResp.CleanupResult @@ -1831,7 +1850,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemDrainReq); i { + switch v := v.(*PoolRankResult); i { case 0: return &v.state case 1: @@ -1843,7 +1862,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemDrainResp); i { + switch v := v.(*SystemDrainReq); i { case 0: return &v.state case 1: @@ -1855,7 +1874,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemQueryReq); i { + switch v := v.(*SystemDrainResp); i { case 0: return &v.state case 1: @@ -1867,7 +1886,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemQueryResp); i { + switch v := v.(*SystemQueryReq); i { case 0: return &v.state case 1: @@ -1879,7 +1898,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemEraseReq); i { + switch v := v.(*SystemQueryResp); i { case 0: return &v.state case 1: @@ -1891,7 +1910,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemEraseResp); i { + switch v := v.(*SystemEraseReq); i { case 0: return &v.state case 1: @@ -1903,7 +1922,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemCleanupReq); i { + switch v := v.(*SystemEraseResp); i { case 0: return &v.state case 1: @@ -1915,7 +1934,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemCleanupResp); i { + switch v := v.(*SystemCleanupReq); i { case 0: return &v.state case 1: @@ -1927,7 +1946,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemSetAttrReq); i { + switch v := v.(*SystemCleanupResp); i { case 0: return &v.state case 1: @@ -1939,7 +1958,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemGetAttrReq); i { + switch v := v.(*SystemSetAttrReq); i { case 0: return &v.state case 1: @@ -1951,7 +1970,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemGetAttrResp); i { + switch v := v.(*SystemGetAttrReq); i { case 0: return &v.state case 1: @@ -1963,7 +1982,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemSetPropReq); i { + switch v := v.(*SystemGetAttrResp); i { case 0: return &v.state case 1: @@ -1975,7 +1994,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemGetPropReq); i { + switch v := v.(*SystemSetPropReq); i { case 0: return &v.state case 1: @@ -1987,7 +2006,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemGetPropResp); i { + switch v := v.(*SystemGetPropReq); i { case 0: return &v.state case 1: @@ -1999,7 +2018,7 @@ func file_mgmt_system_proto_init() { } } file_mgmt_system_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemDrainResp_DrainResult); i { + switch v := v.(*SystemGetPropResp); i { case 0: return &v.state case 1: diff --git a/src/control/drpc/modules.go b/src/control/drpc/modules.go index 626f3d7426b..77e7ddde42d 100644 --- a/src/control/drpc/modules.go +++ b/src/control/drpc/modules.go @@ -134,7 +134,7 @@ func (m MgmtMethod) String() string { MethodPoolExclude: "PoolExclude", MethodPoolDrain: "PoolDrain", MethodPoolExtend: "PoolExtend", - MethodPoolReintegrate: "PoolReintegrate", + MethodPoolReint: "PoolReint", MethodBioHealth: "BioHealth", MethodSetUp: "SetUp", MethodSmdDevs: "SmdDevs", @@ -191,16 +191,16 @@ const ( MethodPoolCreate MgmtMethod = C.DRPC_METHOD_MGMT_POOL_CREATE // MethodPoolDestroy is a ModuleMgmt method MethodPoolDestroy MgmtMethod = C.DRPC_METHOD_MGMT_POOL_DESTROY - // MethodPoolEvict is a ModuleMgmt method + // MethodPoolEvict is a ModuleMgmt method to evict pool connections MethodPoolEvict MgmtMethod = C.DRPC_METHOD_MGMT_POOL_EVICT - // MethodPoolExclude is a ModuleMgmt method - MethodPoolExclude MgmtMethod = C.DRPC_METHOD_MGMT_EXCLUDE - // MethodPoolDrain is a ModuleMgmt method - MethodPoolDrain MgmtMethod = C.DRPC_METHOD_MGMT_DRAIN - // MethodPoolExtend is a ModuleMgmt method - MethodPoolExtend MgmtMethod = C.DRPC_METHOD_MGMT_EXTEND - // MethodPoolReintegrate is a ModuleMgmt method - MethodPoolReintegrate MgmtMethod = C.DRPC_METHOD_MGMT_REINTEGRATE + // MethodPoolExclude is a ModuleMgmt method for excluding pool ranks + MethodPoolExclude MgmtMethod = C.DRPC_METHOD_MGMT_POOL_EXCLUDE + // MethodPoolDrain is a ModuleMgmt method for draining pool ranks + MethodPoolDrain MgmtMethod = C.DRPC_METHOD_MGMT_POOL_DRAIN + // MethodPoolReint is a ModuleMgmt method for reintegrating pool ranks + MethodPoolReint MgmtMethod = C.DRPC_METHOD_MGMT_POOL_REINT + // MethodPoolExtend is a ModuleMgmt method for extending pool + MethodPoolExtend MgmtMethod = C.DRPC_METHOD_MGMT_POOL_EXTEND // MethodBioHealth is a ModuleMgmt method MethodBioHealth MgmtMethod = C.DRPC_METHOD_MGMT_BIO_HEALTH_QUERY // MethodSetUp is a ModuleMgmt method diff --git a/src/control/lib/control/pool.go b/src/control/lib/control/pool.go index c5f3edac531..1ad7739cb1d 100644 --- a/src/control/lib/control/pool.go +++ b/src/control/lib/control/pool.go @@ -846,21 +846,19 @@ func PoolExtend(ctx context.Context, rpcClient UnaryInvoker, req *PoolExtendReq) return errors.Wrap(ur.getMSError(), "pool extend failed") } -// PoolReintegrateReq struct contains request -type PoolReintegrateReq struct { +// PoolReintReq struct contains request +type PoolReintReq struct { poolRequest ID string Rank ranklist.Rank TargetIdx []uint32 } -// ReintegrateResp has no other parameters other than success/failure for now. - -// PoolReintegrate will set a pool target for a specific rank back to up. +// PoolReint will set a pool target for a specific rank back to up. // This should automatically start the reintegration process. // Returns an error (including any DER code from DAOS). -func PoolReintegrate(ctx context.Context, rpcClient UnaryInvoker, req *PoolReintegrateReq) error { - pbReq := &mgmtpb.PoolReintegrateReq{ +func PoolReint(ctx context.Context, rpcClient UnaryInvoker, req *PoolReintReq) error { + pbReq := &mgmtpb.PoolReintReq{ Sys: req.getSystem(rpcClient), Id: req.ID, Rank: req.Rank.Uint32(), @@ -868,7 +866,7 @@ func PoolReintegrate(ctx context.Context, rpcClient UnaryInvoker, req *PoolReint } req.setRPC(func(ctx context.Context, conn *grpc.ClientConn) (proto.Message, error) { - return mgmtpb.NewMgmtSvcClient(conn).PoolReintegrate(ctx, pbReq) + return mgmtpb.NewMgmtSvcClient(conn).PoolReint(ctx, pbReq) }) rpcClient.Debugf("Reintegrate DAOS pool target request: %s\n", pbUtil.Debug(pbReq)) diff --git a/src/control/lib/control/system.go b/src/control/lib/control/system.go index 3579a606f31..69f8ba5525c 100644 --- a/src/control/lib/control/system.go +++ b/src/control/lib/control/system.go @@ -566,19 +566,23 @@ func SystemExclude(ctx context.Context, rpcClient UnaryInvoker, req *SystemExclu return resp, convertMSResponse(ur, resp) } +// PoolRankResult describes the result of an OSA operation on a pool's ranks. +type PoolRankResult struct { + Status int32 `json:"status"` // Status returned from a specific OSA dRPC call + Msg string `json:"msg"` // Error message if Status is not Success + PoolID string `json:"pool_id"` // Unique identifier for pool + Ranks string `json:"ranks"` // RankSet of ranks that should be operated on +} + +// PoolRankResults is an alias for a PoolRankResult slice. +type PoolRankResults []*PoolRankResult + // SystemDrainReq contains the inputs for the system drain request. type SystemDrainReq struct { unaryRequest msRequest sysRequest -} - -// DrainResult describes the result of a drain operation on a pool's ranks. -type DrainResult struct { - Status int32 `json:"status"` // Status returned from a specific drain call - Msg string `json:"msg"` // Error message if Status is not Success - PoolID string `json:"pool_id"` // Unique identifier for pool - Ranks string `json:"ranks"` // RankSet of ranks that should be drained on pool + Reint bool } // SystemDrainResp contains the request response. UnmarshalJSON is not implemented on this type @@ -586,20 +590,18 @@ type DrainResult struct { // in the response so decoding is not required. type SystemDrainResp struct { sysResponse `json:"-"` - Results []*DrainResult `json:"results"` + Results PoolRankResults `json:"results"` } -// Errors returns a single error combining all error messages associated with a system drain -// response. Doesn't retrieve errors from sysResponse because missing ranks or hosts will not be -// populated in SystemDrainResp. -func (sdr *SystemDrainResp) Errors() (errOut error) { - for _, r := range sdr.Results { +// Errors returns a single error combining all error messages associated with pool-rank results. +// Doesn't retrieve errors from sysResponse because missing ranks or hosts will not be returned. +func (resp *SystemDrainResp) Errors() (err error) { + for _, r := range resp.Results { if r.Status != int32(daos.Success) { - errOut = concatErrs(errOut, + err = concatErrs(err, errors.Errorf("pool %s ranks %s: %s", r.PoolID, r.Ranks, r.Msg)) } } - return } @@ -615,6 +617,7 @@ func SystemDrain(ctx context.Context, rpcClient UnaryInvoker, req *SystemDrainRe Hosts: req.Hosts.String(), Ranks: req.Ranks.String(), Sys: req.getSystem(rpcClient), + Reint: req.Reint, } req.setRPC(func(ctx context.Context, conn *grpc.ClientConn) (proto.Message, error) { return mgmtpb.NewMgmtSvcClient(conn).SystemDrain(ctx, pbReq) diff --git a/src/control/lib/control/system_test.go b/src/control/lib/control/system_test.go index f4abbfc7b05..202aba42f91 100644 --- a/src/control/lib/control/system_test.go +++ b/src/control/lib/control/system_test.go @@ -1089,13 +1089,13 @@ func TestControl_SystemDrain(t *testing.T) { "dual pools; single rank": { req: new(SystemDrainReq), uResp: MockMSResponse("10.0.0.1:10001", nil, &mgmtpb.SystemDrainResp{ - Results: []*mgmtpb.SystemDrainResp_DrainResult{ + Results: []*mgmtpb.PoolRankResult{ {PoolId: test.MockUUID(1), Ranks: "1"}, {PoolId: test.MockUUID(2), Ranks: "1"}, }, }), expResp: &SystemDrainResp{ - Results: []*DrainResult{ + Results: []*PoolRankResult{ {PoolID: test.MockUUID(1), Ranks: "1"}, {PoolID: test.MockUUID(2), Ranks: "1"}, }, @@ -1104,7 +1104,7 @@ func TestControl_SystemDrain(t *testing.T) { "dual pools; single rank; with errors": { req: new(SystemDrainReq), uResp: MockMSResponse("10.0.0.1:10001", nil, &mgmtpb.SystemDrainResp{ - Results: []*mgmtpb.SystemDrainResp_DrainResult{ + Results: []*mgmtpb.PoolRankResult{ { PoolId: test.MockUUID(1), Ranks: "1", Status: -1, Msg: "fail1", @@ -1116,7 +1116,7 @@ func TestControl_SystemDrain(t *testing.T) { }, }), expResp: &SystemDrainResp{ - Results: []*DrainResult{ + Results: []*PoolRankResult{ { PoolID: test.MockUUID(1), Ranks: "1", Status: -1, Msg: "fail1", diff --git a/src/control/security/grpc_authorization.go b/src/control/security/grpc_authorization.go index dc80a114921..c955b27e417 100644 --- a/src/control/security/grpc_authorization.go +++ b/src/control/security/grpc_authorization.go @@ -64,7 +64,7 @@ var methodAuthorizations = map[string][]Component{ "/mgmt.MgmtSvc/PoolDeleteACL": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolExclude": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolDrain": {ComponentAdmin}, - "/mgmt.MgmtSvc/PoolReintegrate": {ComponentAdmin}, + "/mgmt.MgmtSvc/PoolReint": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolEvict": {ComponentAdmin, ComponentAgent}, "/mgmt.MgmtSvc/PoolExtend": {ComponentAdmin}, "/mgmt.MgmtSvc/GetAttachInfo": {ComponentAgent}, diff --git a/src/control/security/grpc_authorization_test.go b/src/control/security/grpc_authorization_test.go index cbb6026ea0f..24662c4004e 100644 --- a/src/control/security/grpc_authorization_test.go +++ b/src/control/security/grpc_authorization_test.go @@ -89,7 +89,7 @@ func TestSecurity_ComponentHasAccess(t *testing.T) { "/mgmt.MgmtSvc/PoolDeleteACL": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolExclude": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolDrain": {ComponentAdmin}, - "/mgmt.MgmtSvc/PoolReintegrate": {ComponentAdmin}, + "/mgmt.MgmtSvc/PoolReint": {ComponentAdmin}, "/mgmt.MgmtSvc/PoolEvict": {ComponentAdmin, ComponentAgent}, "/mgmt.MgmtSvc/PoolExtend": {ComponentAdmin}, "/mgmt.MgmtSvc/GetAttachInfo": {ComponentAgent}, diff --git a/src/control/server/mgmt_pool.go b/src/control/server/mgmt_pool.go index 1e0b8ac33d0..545dad78693 100644 --- a/src/control/server/mgmt_pool.go +++ b/src/control/server/mgmt_pool.go @@ -460,7 +460,7 @@ func (svc *mgmtSvc) poolCreate(parent context.Context, req *mgmtpb.PoolCreateReq } }() - dresp, err := svc.harness.CallDrpc(ctx, drpc.MethodPoolCreate, req) + dResp, err := svc.harness.CallDrpc(ctx, drpc.MethodPoolCreate, req) if err != nil { svc.log.Errorf("pool create dRPC call failed: %s", err) if err := svc.sysdb.RemovePoolService(ctx, ps.PoolUUID); err != nil { @@ -478,8 +478,8 @@ func (svc *mgmtSvc) poolCreate(parent context.Context, req *mgmtpb.PoolCreateReq } } - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolCreate response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } // Zero mem_file_bytes in non-MD-on-SSD mode. @@ -759,14 +759,15 @@ func (svc *mgmtSvc) poolDestroyNoLeaderCheck(parent context.Context, req *mgmtpb } sort.Slice(allRanks, func(i, j int) bool { return allRanks[i] < allRanks[j] }) req.SvcRanks = allRanks - svc.log.Debugf("MgmtSvc.PoolDestroy issuing drpc.MethodPoolDestroy: id=%s nSvcRanks=%d\n", req.Id, len(req.SvcRanks)) - dresp, err := svc.harness.CallDrpc(ctx, drpc.MethodPoolDestroy, req) + svc.log.Debugf("MgmtSvc.PoolDestroy issuing drpc.MethodPoolDestroy: id=%s nSvcRanks=%d\n", + req.Id, len(req.SvcRanks)) + dResp, err := svc.harness.CallDrpc(ctx, drpc.MethodPoolDestroy, req) if err != nil { return nil, err } - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolDestroy response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } ds := daos.Status(resp.Status) @@ -792,14 +793,14 @@ func (svc *mgmtSvc) evictPoolConnections(ctx context.Context, req *mgmtpb.PoolEv return nil, err } - dresp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolEvict, req) + dResp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolEvict, req) if err != nil { return nil, err } resp := &mgmtpb.PoolEvictResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolEvict response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } if resp.Count > 0 { @@ -835,14 +836,14 @@ func (svc *mgmtSvc) PoolExclude(ctx context.Context, req *mgmtpb.PoolExcludeReq) return nil, err } - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolExclude, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolExclude, req) if err != nil { return nil, err } resp := &mgmtpb.PoolExcludeResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolExclude response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } return resp, nil @@ -854,14 +855,14 @@ func (svc *mgmtSvc) PoolDrain(ctx context.Context, req *mgmtpb.PoolDrainReq) (*m return nil, err } - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolDrain, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolDrain, req) if err != nil { return nil, err } resp := &mgmtpb.PoolDrainResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolDrain response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } return resp, nil @@ -891,21 +892,21 @@ func (svc *mgmtSvc) PoolExtend(ctx context.Context, req *mgmtpb.PoolExtendReq) ( svc.log.Debugf("MgmtSvc.PoolExtend forwarding modified req:%+v\n", req) - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolExtend, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolExtend, req) if err != nil { return nil, err } resp := &mgmtpb.PoolExtendResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolExtend response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } return resp, nil } -// PoolReintegrate implements the method defined for the Management Service. -func (svc *mgmtSvc) PoolReintegrate(ctx context.Context, req *mgmtpb.PoolReintegrateReq) (*mgmtpb.PoolReintegrateResp, error) { +// PoolReint implements the method defined for the Management Service. +func (svc *mgmtSvc) PoolReint(ctx context.Context, req *mgmtpb.PoolReintReq) (*mgmtpb.PoolReintResp, error) { if err := svc.checkLeaderRequest(req); err != nil { return nil, err } @@ -932,14 +933,14 @@ func (svc *mgmtSvc) PoolReintegrate(ctx context.Context, req *mgmtpb.PoolReinteg req.TierBytes = ps.Storage.PerRankTierStorage req.MemRatio = ps.Storage.MemRatio - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolReintegrate, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolReint, req) if err != nil { return nil, err } - resp := &mgmtpb.PoolReintegrateResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolReintegrate response") + resp := &mgmtpb.PoolReintResp{} + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } return resp, nil @@ -955,14 +956,14 @@ func (svc *mgmtSvc) PoolQuery(ctx context.Context, req *mgmtpb.PoolQueryReq) (*m req.QueryMask = uint64(daos.DefaultPoolQueryMask) } - dresp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolQuery, req) + dResp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolQuery, req) if err != nil { return nil, err } resp := &mgmtpb.PoolQueryResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolQuery response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } // Preserve compatibility with pre-2.6 callers. @@ -985,14 +986,14 @@ func (svc *mgmtSvc) PoolQueryTarget(ctx context.Context, req *mgmtpb.PoolQueryTa return nil, err } - dresp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolQueryTarget, req) + dResp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolQueryTarget, req) if err != nil { return nil, err } resp := &mgmtpb.PoolQueryTargetResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolQueryTarget response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } // Zero mem_file_bytes in non-MD-on-SSD mode. @@ -1017,14 +1018,14 @@ func (svc *mgmtSvc) PoolUpgrade(ctx context.Context, req *mgmtpb.PoolUpgradeReq) return nil, err } - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolUpgrade, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolUpgrade, req) if err != nil { return nil, err } resp := &mgmtpb.PoolUpgradeResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolUpgrade response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } return resp, nil @@ -1065,15 +1066,15 @@ func (svc *mgmtSvc) updatePoolLabel(ctx context.Context, sys string, uuid uuid.U Properties: []*mgmtpb.PoolProperty{prop}, } - var dresp *drpc.Response - dresp, err = svc.makePoolServiceCall(ctx, drpc.MethodPoolSetProp, req) + var dResp *drpc.Response + dResp, err = svc.makePoolServiceCall(ctx, drpc.MethodPoolSetProp, req) if err != nil { return err } resp := new(mgmtpb.PoolSetPropResp) - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return errors.Wrap(err, "unmarshal PoolSetProp response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return err } if resp.GetStatus() != 0 { @@ -1130,14 +1131,14 @@ func (svc *mgmtSvc) PoolSetProp(parent context.Context, req *mgmtpb.PoolSetPropR req.Properties = miscProps - var dresp *drpc.Response - dresp, err = svc.makePoolServiceCall(ctx, drpc.MethodPoolSetProp, req) + var dResp *drpc.Response + dResp, err = svc.makePoolServiceCall(ctx, drpc.MethodPoolSetProp, req) if err != nil { return nil, err } - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolSetProp response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } return resp, nil @@ -1156,14 +1157,14 @@ func (svc *mgmtSvc) PoolGetProp(ctx context.Context, req *mgmtpb.PoolGetPropReq) return nil, errors.Errorf("PoolGetProp() request with 0 properties") } - dresp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolGetProp, req) + dResp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolGetProp, req) if err != nil { return nil, err } resp := new(mgmtpb.PoolGetPropResp) - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolGetProp response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, err } if resp.GetStatus() != 0 { @@ -1179,14 +1180,14 @@ func (svc *mgmtSvc) PoolGetACL(ctx context.Context, req *mgmtpb.GetACLReq) (*mgm return nil, err } - dresp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolGetACL, req) + dResp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolGetACL, req) if err != nil { return nil, err } resp := &mgmtpb.ACLResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolGetACL response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, errors.Wrap(err, "PoolGetACL") } return resp, nil @@ -1198,14 +1199,14 @@ func (svc *mgmtSvc) PoolOverwriteACL(ctx context.Context, req *mgmtpb.ModifyACLR return nil, err } - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolOverwriteACL, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolOverwriteACL, req) if err != nil { return nil, err } resp := &mgmtpb.ACLResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolOverwriteACL response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, errors.Wrap(err, "PoolOverwriteACL") } return resp, nil @@ -1218,14 +1219,14 @@ func (svc *mgmtSvc) PoolUpdateACL(ctx context.Context, req *mgmtpb.ModifyACLReq) return nil, err } - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolUpdateACL, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolUpdateACL, req) if err != nil { return nil, err } resp := &mgmtpb.ACLResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolUpdateACL response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, errors.Wrap(err, "PoolUpdateACL") } return resp, nil @@ -1238,14 +1239,14 @@ func (svc *mgmtSvc) PoolDeleteACL(ctx context.Context, req *mgmtpb.DeleteACLReq) return nil, err } - dresp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolDeleteACL, req) + dResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolDeleteACL, req) if err != nil { return nil, err } resp := &mgmtpb.ACLResp{} - if err = proto.Unmarshal(dresp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolDeleteACL response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return nil, errors.Wrap(err, "PoolDeleteACL") } return resp, nil diff --git a/src/control/server/mgmt_pool_test.go b/src/control/server/mgmt_pool_test.go index 0505279a7b4..42ac9ebb6ca 100644 --- a/src/control/server/mgmt_pool_test.go +++ b/src/control/server/mgmt_pool_test.go @@ -1484,7 +1484,7 @@ func TestServer_MgmtSvc_PoolExtend(t *testing.T) { } } -func TestServer_MgmtSvc_PoolReintegrate(t *testing.T) { +func TestServer_MgmtSvc_PoolReint(t *testing.T) { log, buf := logging.NewTestLogger(t.Name()) missingSB := newTestMgmtSvc(t, log) missingSB.harness.instances[0].(*EngineInstance)._superblock = nil @@ -1494,9 +1494,9 @@ func TestServer_MgmtSvc_PoolReintegrate(t *testing.T) { nilReq bool getMockDrpc func(error) *mockDrpcClient mgmtSvc *mgmtSvc - reqIn *mgmtpb.PoolReintegrateReq - drpcResp *mgmtpb.PoolReintegrateResp - expDrpcReq *mgmtpb.PoolReintegrateReq + reqIn *mgmtpb.PoolReintReq + drpcResp *mgmtpb.PoolReintResp + expDrpcReq *mgmtpb.PoolReintReq expErr error }{ "nil request": { @@ -1504,7 +1504,7 @@ func TestServer_MgmtSvc_PoolReintegrate(t *testing.T) { expErr: errors.New("nil request"), }, "wrong system": { - reqIn: &mgmtpb.PoolReintegrateReq{Id: mockUUID, Sys: "bad"}, + reqIn: &mgmtpb.PoolReintReq{Id: mockUUID, Sys: "bad"}, expErr: FaultWrongSystem("bad", build.DefaultSystemName), }, "missing superblock": { @@ -1528,13 +1528,13 @@ func TestServer_MgmtSvc_PoolReintegrate(t *testing.T) { expErr: errors.New("unmarshal"), }, "missing uuid": { - reqIn: &mgmtpb.PoolReintegrateReq{Rank: 1}, + reqIn: &mgmtpb.PoolReintReq{Rank: 1}, expErr: errors.New("empty pool id"), }, "successfully extended": { - drpcResp: &mgmtpb.PoolReintegrateResp{}, + drpcResp: &mgmtpb.PoolReintResp{}, // Expect that the last request contains updated params from ps entry. - expDrpcReq: &mgmtpb.PoolReintegrateReq{ + expDrpcReq: &mgmtpb.PoolReintReq{ Sys: build.DefaultSystemName, SvcRanks: mockSvcRanks, Id: mockUUID, @@ -1549,7 +1549,7 @@ func TestServer_MgmtSvc_PoolReintegrate(t *testing.T) { defer test.ShowBufferOnFailure(t, buf) if tc.reqIn == nil && !tc.nilReq { - tc.reqIn = &mgmtpb.PoolReintegrateReq{Id: mockUUID, Rank: 1} + tc.reqIn = &mgmtpb.PoolReintReq{Id: mockUUID, Rank: 1} } if tc.mgmtSvc == nil { tc.mgmtSvc = newTestMgmtSvc(t, log) @@ -1574,7 +1574,7 @@ func TestServer_MgmtSvc_PoolReintegrate(t *testing.T) { t.Fatal(err) } - gotResp, gotErr := tc.mgmtSvc.PoolReintegrate(test.Context(t), tc.reqIn) + gotResp, gotErr := tc.mgmtSvc.PoolReint(test.Context(t), tc.reqIn) test.CmpErr(t, tc.expErr, gotErr) if tc.expErr != nil { return @@ -1586,7 +1586,7 @@ func TestServer_MgmtSvc_PoolReintegrate(t *testing.T) { } // Check extend gets called with correct params from PS entry. - lastReq := new(mgmtpb.PoolReintegrateReq) + lastReq := new(mgmtpb.PoolReintReq) if err := proto.Unmarshal(getLastMockCall(mdc).Body, lastReq); err != nil { t.Fatal(err) } diff --git a/src/control/server/mgmt_svc.go b/src/control/server/mgmt_svc.go index aac5358736b..250b0a6dbcf 100644 --- a/src/control/server/mgmt_svc.go +++ b/src/control/server/mgmt_svc.go @@ -18,6 +18,7 @@ import ( "github.com/daos-stack/daos/src/control/build" "github.com/daos-stack/daos/src/control/common" mgmtpb "github.com/daos-stack/daos/src/control/common/proto/mgmt" + "github.com/daos-stack/daos/src/control/drpc" "github.com/daos-stack/daos/src/control/events" "github.com/daos-stack/daos/src/control/lib/control" "github.com/daos-stack/daos/src/control/lib/daos" @@ -409,3 +410,12 @@ func (svc *mgmtSvc) leaderTaskLoop(parent context.Context) { } } } + +func (svc *mgmtSvc) unmarshalPB(body []byte, resp proto.Message) error { + if err := proto.Unmarshal(body, resp); err != nil { + svc.log.Errorf("%T Unmarshal: %s", resp, err) + return errors.Wrapf(drpc.UnmarshalingPayloadFailure(), "%T", resp) + } + + return nil +} diff --git a/src/control/server/mgmt_system.go b/src/control/server/mgmt_system.go index e1a60a06d6a..66c9c218638 100644 --- a/src/control/server/mgmt_system.go +++ b/src/control/server/mgmt_system.go @@ -23,7 +23,6 @@ import ( "github.com/pkg/errors" "golang.org/x/sys/unix" "google.golang.org/grpc/peer" - "google.golang.org/protobuf/proto" "github.com/daos-stack/daos/src/control/build" "github.com/daos-stack/daos/src/control/common" @@ -32,6 +31,8 @@ import ( sharedpb "github.com/daos-stack/daos/src/control/common/proto/shared" "github.com/daos-stack/daos/src/control/drpc" "github.com/daos-stack/daos/src/control/events" + "github.com/daos-stack/daos/src/control/fault" + "github.com/daos-stack/daos/src/control/fault/code" "github.com/daos-stack/daos/src/control/lib/control" "github.com/daos-stack/daos/src/control/lib/daos" "github.com/daos-stack/daos/src/control/lib/hostlist" @@ -43,11 +44,14 @@ import ( "github.com/daos-stack/daos/src/control/system/raft" ) -const fabricProviderProp = "fabric_providers" -const groupUpdatePauseProp = "group_update_paused" -const domainLabelsProp = "domain_labels" +const ( + fabricProviderProp = "fabric_providers" + groupUpdatePauseProp = "group_update_paused" + domainLabelsProp = "domain_labels" + domainLabelsSep = "=" // invalid in a label name -const domainLabelsSep = "=" // invalid in a label name + msgInvalidRank = "invalid ranks: check rank status" +) // GetAttachInfo handles a request to retrieve a map of ranks to fabric URIs, in addition // to client network autoconfiguration hints. @@ -530,8 +534,8 @@ func (svc *mgmtSvc) doGroupUpdate(ctx context.Context, forced bool) error { svc.lastMapVer = gm.Version resp := new(mgmtpb.GroupUpdateResp) - if err = proto.Unmarshal(dResp.Body, resp); err != nil { - return errors.Wrap(err, "unmarshal GroupUpdate response") + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return err } if resp.GetStatus() != 0 { @@ -1073,16 +1077,12 @@ func (svc *mgmtSvc) SystemExclude(ctx context.Context, req *mgmtpb.SystemExclude return resp, nil } -func (svc *mgmtSvc) SystemDrain(ctx context.Context, req *mgmtpb.SystemDrainReq) (*mgmtpb.SystemDrainResp, error) { - if err := svc.checkLeaderRequest(wrapCheckerReq(req)); err != nil { - return nil, err - } - - if req.Hosts == "" && req.Ranks == "" { +func (svc *mgmtSvc) refuseMissingRanks(hosts, ranks string) (*ranklist.RankSet, error) { + if hosts == "" && ranks == "" { return nil, errors.New("no hosts or ranks specified") } - hitRanks, missRanks, missHosts, err := svc.resolveRanks(req.Hosts, req.Ranks) + hitRanks, missRanks, missHosts, err := svc.resolveRanks(hosts, ranks) if err != nil { return nil, err } @@ -1097,20 +1097,26 @@ func (svc *mgmtSvc) SystemDrain(ctx context.Context, req *mgmtpb.SystemDrainReq) return nil, errors.New("no ranks to drain") } - // Drain rank on each pool it belongs to. + return hitRanks, nil +} + +// Build mappings of pools to any ranks that match the input filter by iterating through the pool +// service list. Identify pools by label if possible. +// TODO: on reintegrate dont allow selection of AdminExcluded ranks? +func (svc *mgmtSvc) getPoolsRanks(ranks *ranklist.RankSet) ([]string, poolRanksMap, error) { + poolRanks := make(poolRanksMap) + poolIDs := []string{} // Label or UUID. psList, err := svc.sysdb.PoolServiceList(false) if err != nil { - return nil, err + return nil, nil, err } ranksMap := make(map[ranklist.Rank]struct{}) - for _, r := range hitRanks.Ranks() { + for _, r := range ranks.Ranks() { ranksMap[r] = struct{}{} } - poolRanks := make(map[string]*ranklist.RankSet) - poolIDs := []string{} // Label or UUID. for _, ps := range psList { currentRanks := ps.Storage.CurrentRanks() @@ -1133,86 +1139,173 @@ func (svc *mgmtSvc) SystemDrain(ctx context.Context, req *mgmtpb.SystemDrainReq) poolRanks[poolID].Add(r) } } - svc.log.Debugf("pool-ranks to drain: %v", poolRanks) + svc.log.Debugf("pool-ranks to operate on: %v", poolRanks) sort.Strings(poolIDs) - resp := new(mgmtpb.SystemDrainResp) - drainReq := new(mgmtpb.PoolDrainReq) - drainReq.Sys = req.Sys + return poolIDs, poolRanks, nil +} + +func resultsFromPoolRanks(id string, succeeded *ranklist.RankSet, failed poolRanksMap) []*mgmtpb.PoolRankResult { + results := []*mgmtpb.PoolRankResult{} + + // Single result generated for all ranks operated on successfully. + if succeeded.Count() > 0 { + results = append(results, &mgmtpb.PoolRankResult{ + PoolId: id, + Ranks: succeeded.String(), + }) + } + + var msgs []string + for msg := range failed { + msgs = append(msgs, msg) + } + sort.Strings(msgs) + + // Result generated for each failure message rank-group. + for _, msg := range msgs { + results = append(results, &mgmtpb.PoolRankResult{ + // Status already included in error message. + Status: int32(daos.MiscError), + Msg: msg, + PoolId: id, + Ranks: failed[msg].String(), + }) + } + + return results +} + +type poolRanksMap map[string]*ranklist.RankSet + +type poolRankOpSig func(*mgmtSvc, context.Context, string, string, ranklist.Rank) (int32, error) + +// Generate operation results by iterating through pool's ranks and calling supplied fn on each. +func (svc *mgmtSvc) getPoolRankResults(ctx context.Context, sys string, poolIDs []string, poolRanks poolRanksMap, drpcCall poolRankOpSig) ([]*mgmtpb.PoolRankResult, error) { + results := []*mgmtpb.PoolRankResult{} for _, id := range poolIDs { rs := poolRanks[id] if rs.Count() == 0 { continue } - drained := ranklist.MustCreateRankSet("") - failed := make(map[string]*ranklist.RankSet) + svc.log.Tracef("operating on ranks %v on pool %s", rs, id) - // Use our incoming request and just replace relevant parameters on each iteration. - drainReq.Id = id + succeeded := ranklist.MustCreateRankSet("") + failed := make(poolRanksMap) - // TODO DAOS-6611: Drain multiple pool-ranks per call when drpc.MethodPoolDrain API - // supports it. + // TODO DAOS-6611: Operate on multiple pool-ranks per call when + // drpc.MethodPool{Drain|Reint} API supports it. for _, r := range rs.Ranks() { - var errMsg string - drainReq.Rank = r.Uint32() + status, err := drpcCall(svc, ctx, sys, id, r) - drpcResp, err := svc.makeLockedPoolServiceCall(ctx, drpc.MethodPoolDrain, - drainReq) - if err != nil { - return nil, err + if status == int32(daos.Success) { + succeeded.Add(r) + continue } - drainResp := &mgmtpb.PoolDrainResp{} - if err = proto.Unmarshal(drpcResp.Body, drainResp); err != nil { - errMsg = errors.Wrap(err, "unmarshal PoolEvict response").Error() - drainResp.Status = int32(daos.IOInvalid) - } else if drainResp.Status != int32(daos.Success) { - errMsg = daos.Status(drainResp.Status).Error() - } + msgErr := err.Error() - svc.log.Tracef("pool-drain triggered from system-drain: %+v (req: %+v)", - drainResp, drainReq) + // Check fault code to aggregate invalid rank results. + f, ok := errors.Cause(err).(*fault.Fault) + if ok && f.Code == code.ServerPoolInvalidRanks { + msgErr = msgInvalidRank + } // Each rank-drain failure message will produce a single result. - if drainResp.Status != 0 { - if _, exists := failed[errMsg]; !exists { - failed[errMsg] = ranklist.MustCreateRankSet("") - } - failed[errMsg].Add(r) - } else { - drained.Add(ranklist.Rank(drainReq.Rank)) + if _, exists := failed[msgErr]; !exists { + failed[msgErr] = ranklist.MustCreateRankSet("") } + failed[msgErr].Add(r) } - // Single result generated for all ranks drained successfully. - if drained.Count() > 0 { - resp.Results = append(resp.Results, &mgmtpb.SystemDrainResp_DrainResult{ - PoolId: id, - Ranks: drained.String(), - }) - } + results = append(results, resultsFromPoolRanks(id, succeeded, failed)...) + svc.log.Tracef("results %+v", results) + } - var msgs []string - for msg := range failed { - msgs = append(msgs, msg) - } - sort.Strings(msgs) - - // Result generated for each failure message rank-group. - for _, msg := range msgs { - resp.Results = append(resp.Results, &mgmtpb.SystemDrainResp_DrainResult{ - // Status already included in error message. - Status: -1, - Msg: msg, - PoolId: id, - Ranks: failed[msg].String(), - }) - } + return results, nil +} + +// Drain rank on a pool by calling over dRPC. Function signature satisfies poolRankOpSig type. +func drainPoolRank(svc *mgmtSvc, ctx context.Context, sys, id string, rank ranklist.Rank) (int32, error) { + pbReq := &mgmtpb.PoolDrainReq{ + Sys: sys, + Rank: rank.Uint32(), + Id: id, } - return resp, nil + pbResp, err := svc.PoolDrain(ctx, pbReq) + if err != nil { + return int32(daos.MiscError), err + } + if pbResp.Status != int32(daos.Success) { + return pbResp.Status, daos.Status(pbResp.Status) + } + + svc.log.Tracef("pool-drain triggered from system-drain: %+v (req: %+v)", pbResp, pbReq) + + return int32(daos.Success), nil +} + +// Reint rank on a pool by calling over dRPC. Function signature satisfies poolRankOpSig type. +func reintPoolRank(svc *mgmtSvc, ctx context.Context, sys, id string, rank ranklist.Rank) (int32, error) { + pbReq := &mgmtpb.PoolReintReq{ + Sys: sys, + Rank: rank.Uint32(), + Id: id, + } + + pbResp, err := svc.PoolReint(ctx, pbReq) + if err != nil { + return int32(daos.MiscError), err + } + if pbResp.Status != int32(daos.Success) { + return pbResp.Status, daos.Status(pbResp.Status) + } + + svc.log.Tracef("pool-reint triggered from system-reint: %+v (req: %+v)", pbResp, pbReq) + + return int32(daos.Success), nil +} + +// SystemDrain marks specified ranks on all pools as being in a drain state. +func (svc *mgmtSvc) SystemDrain(ctx context.Context, req *mgmtpb.SystemDrainReq) (*mgmtpb.SystemDrainResp, error) { + if req == nil { + return nil, errors.Errorf("nil %T", req) + } + + if err := svc.checkLeaderRequest(wrapCheckerReq(req)); err != nil { + return nil, err + } + + // Validate requested hosts or ranks exist and fail if any are missing. + hitRanks, err := svc.refuseMissingRanks(req.Hosts, req.Ranks) + if err != nil { + svc.log.Errorf("refuse missing ranks: %s", err) + return nil, err + } + + // Retrieve rank-to-pool mappings. + poolIDs, poolRanks, err := svc.getPoolsRanks(hitRanks) + if err != nil { + return nil, err + } + + // Generate results from dRPC calls. + var opCall poolRankOpSig = drainPoolRank + if req.Reint { + opCall = reintPoolRank + } + results, err := svc.getPoolRankResults(ctx, req.Sys, poolIDs, poolRanks, opCall) + if err != nil { + return nil, err + } + + return &mgmtpb.SystemDrainResp{ + Reint: req.Reint, + Results: results, + }, nil } // ClusterEvent management service gRPC handler receives ClusterEvent requests @@ -1358,39 +1451,38 @@ func (svc *mgmtSvc) SystemCleanup(ctx context.Context, req *mgmtpb.SystemCleanup } resp := new(mgmtpb.SystemCleanupResp) - evictReq := new(mgmtpb.PoolEvictReq) - - evictReq.Sys = req.Sys - evictReq.Machine = req.Machine for _, ps := range psList { var errMsg string - // Use our incoming request and just replace the uuid on each iteration - evictReq.Id = ps.PoolUUID.String() + evictReq := &mgmtpb.PoolEvictReq{ + Sys: req.Sys, + Machine: req.Machine, + Id: ps.PoolUUID.String(), + } - dresp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolEvict, evictReq) + dResp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolEvict, evictReq) if err != nil { return nil, err } - res := &mgmtpb.PoolEvictResp{} - if err = proto.Unmarshal(dresp.Body, res); err != nil { - res.Status = int32(daos.IOInvalid) - errMsg = errors.Wrap(err, "unmarshal PoolEvict response").Error() - res.Count = 0 - } - - if res.Status != int32(daos.Success) { - errMsg = fmt.Sprintf("Unable to clean up handles for machine %s on pool %s", evictReq.Machine, evictReq.Id) + evictResp := &mgmtpb.PoolEvictResp{} + if err := svc.unmarshalPB(dResp.Body, evictResp); err != nil { + evictResp.Status = int32(daos.MiscError) + evictResp.Count = 0 + errMsg = err.Error() + } else if evictResp.Status != int32(daos.Success) { + errMsg = fmt.Sprintf("Unable to clean up handles for machine %s on pool %s", + evictReq.Machine, evictReq.Id) } - svc.log.Debugf("Response from pool evict in cleanup: '%+v' (req: '%+v')", res, evictReq) + svc.log.Debugf("Response from pool evict in cleanup: '%+v' (req: '%+v')", evictResp, + evictReq) resp.Results = append(resp.Results, &mgmtpb.SystemCleanupResp_CleanupResult{ - Status: res.Status, + Status: evictResp.Status, Msg: errMsg, PoolId: evictReq.Id, - Count: uint32(res.Count), + Count: uint32(evictResp.Count), }) } @@ -1433,7 +1525,7 @@ func sp2pp(sp *daos.SystemProperty) (*daos.PoolProperty, bool) { } // SystemSetProp sets user-visible system properties. -func (svc *mgmtSvc) SystemSetProp(ctx context.Context, req *mgmtpb.SystemSetPropReq) (resp *mgmtpb.DaosResp, err error) { +func (svc *mgmtSvc) SystemSetProp(ctx context.Context, req *mgmtpb.SystemSetPropReq) (*mgmtpb.DaosResp, error) { if err := svc.checkLeaderRequest(req); err != nil { return nil, err } @@ -1442,33 +1534,34 @@ func (svc *mgmtSvc) SystemSetProp(ctx context.Context, req *mgmtpb.SystemSetProp return nil, err } - if resp, err = svc.updatePoolPropsWithSysProps(ctx, req.GetProperties(), req.Sys); err != nil { + if err := svc.updatePoolPropsWithSysProps(ctx, req.GetProperties(), req.Sys); err != nil { return nil, err } - return + + // Indicate success. + return new(mgmtpb.DaosResp), nil } // updatePoolPropsWithSysProps This function will take systemProperties and // update each associated pool property (if one exists) on each pool -func (svc *mgmtSvc) updatePoolPropsWithSysProps(ctx context.Context, systemProperties map[string]string, sys string) (resp *mgmtpb.DaosResp, err error) { - resp = new(mgmtpb.DaosResp) +func (svc *mgmtSvc) updatePoolPropsWithSysProps(ctx context.Context, systemProperties map[string]string, sys string) error { // Get the properties from the request, convert to pool prop, then put into poolSysProps var poolSysProps []*daos.PoolProperty for k, v := range systemProperties { p, ok := svc.systemProps.Get(k) if !ok { - return nil, errors.Errorf("unknown property %q", k) + return errors.Errorf("unknown property %q", k) } if pp, ok := sp2pp(p); ok { if err := pp.SetValue(v); err != nil { - return nil, errors.Wrapf(err, "invalid value %q for property %q", v, k) + return errors.Wrapf(err, "invalid value %q for property %q", v, k) } poolSysProps = append(poolSysProps, pp) } } if len(poolSysProps) == 0 { - return + return nil } // Create the request for updating the pools. The request will have all pool properties @@ -1489,28 +1582,30 @@ func (svc *mgmtSvc) updatePoolPropsWithSysProps(ctx context.Context, systemPrope pools, err := svc.sysdb.PoolServiceList(false) if err != nil { - return nil, err + return err } for _, ps := range pools { pspr.Id = ps.PoolUUID.String() pspr.SvcRanks = ranklist.RanksToUint32(ps.Replicas) dResp, err := svc.makePoolServiceCall(ctx, drpc.MethodPoolSetProp, pspr) if err != nil { - return nil, err + return err } - if err = proto.Unmarshal(dResp.Body, resp); err != nil { - return nil, errors.Wrap(err, "unmarshal PoolSetProp response") + resp := new(mgmtpb.DaosResp) + if err := svc.unmarshalPB(dResp.Body, resp); err != nil { + return err } if resp.Status != 0 { - return nil, errors.Errorf("SystemSetProp: %d\n", resp.Status) + return errors.Errorf("SystemSetProp: %d\n", resp.Status) } } - return resp, nil + + return nil } // SystemGetProp gets user-visible system properties. -func (svc *mgmtSvc) SystemGetProp(ctx context.Context, req *mgmtpb.SystemGetPropReq) (resp *mgmtpb.SystemGetPropResp, err error) { +func (svc *mgmtSvc) SystemGetProp(ctx context.Context, req *mgmtpb.SystemGetPropReq) (*mgmtpb.SystemGetPropResp, error) { if err := svc.checkReplicaRequest(wrapCheckerReq(req)); err != nil { return nil, err } @@ -1520,6 +1615,5 @@ func (svc *mgmtSvc) SystemGetProp(ctx context.Context, req *mgmtpb.SystemGetProp return nil, err } - resp = &mgmtpb.SystemGetPropResp{Properties: props} - return + return &mgmtpb.SystemGetPropResp{Properties: props}, nil } diff --git a/src/control/server/mgmt_system_test.go b/src/control/server/mgmt_system_test.go index 50b58a5ab87..7b8d0c0ec69 100644 --- a/src/control/server/mgmt_system_test.go +++ b/src/control/server/mgmt_system_test.go @@ -1839,21 +1839,30 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { SvcRanks: []uint32{0}, } } + rReq := func(id, rank int) *mgmtpb.PoolReintReq { + return &mgmtpb.PoolReintReq{ + Sys: "daos_server", + Id: test.MockUUID(int32(id)), + Rank: uint32(rank), + SvcRanks: []uint32{0}, + } + } for name, tc := range map[string]struct { - members system.Members - req *mgmtpb.SystemDrainReq - expDrpcReqs []*mgmt.PoolDrainReq - drpcResp *mgmtpb.PoolDrainResp - drpcErr error - poolRanks map[string]string - useLabels bool - expResp *mgmtpb.SystemDrainResp - expErr error + members system.Members + req *mgmtpb.SystemDrainReq + expDrainReqs []*mgmt.PoolDrainReq + expReintReqs []*mgmt.PoolReintReq + drpcResp proto.Message + drpcErr error + poolRanks map[string]string + useLabels bool + expResp *mgmtpb.SystemDrainResp + expErr error }{ "nil req": { req: (*mgmtpb.SystemDrainReq)(nil), - expErr: errors.New("nil request"), + expErr: errors.New("nil *mgmt.SystemDrainReq"), }, "not system leader": { req: &mgmtpb.SystemDrainReq{ @@ -1885,7 +1894,9 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { poolRanks: map[string]string{ test.MockUUID(1): "2-5", }, - expResp: &mgmtpb.SystemDrainResp{}, + expResp: &mgmtpb.SystemDrainResp{ + Results: []*mgmtpb.PoolRankResult{}, + }, }, "matching ranks; multiple pools; no drpc response": { req: &mgmtpb.SystemDrainReq{Ranks: "0,1"}, @@ -1893,7 +1904,22 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { test.MockUUID(1): "0-4", test.MockUUID(2): "1-7", }, - expErr: errors.New("not responding on dRPC"), + expResp: &mgmtpb.SystemDrainResp{ + Results: []*mgmtpb.PoolRankResult{ + { + PoolId: test.MockUUID(1), + Ranks: "0-1", + Status: -1025, + Msg: FaultDataPlaneNotStarted.Error(), + }, + { + PoolId: test.MockUUID(2), + Ranks: "1", + Status: -1025, + Msg: FaultDataPlaneNotStarted.Error(), + }, + }, + }, }, "matching ranks; multiple pools": { req: &mgmtpb.SystemDrainReq{Ranks: "0,1"}, @@ -1902,11 +1928,11 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { test.MockUUID(2): "1-7", }, drpcResp: &mgmtpb.PoolDrainResp{}, - expDrpcReqs: []*mgmtpb.PoolDrainReq{ + expDrainReqs: []*mgmtpb.PoolDrainReq{ dReq(1, 0), dReq(1, 1), dReq(2, 1), }, expResp: &mgmtpb.SystemDrainResp{ - Results: []*mgmtpb.SystemDrainResp_DrainResult{ + Results: []*mgmtpb.PoolRankResult{ {PoolId: test.MockUUID(1), Ranks: "0-1"}, {PoolId: test.MockUUID(2), Ranks: "1"}, }, @@ -1923,12 +1949,12 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { test.MockUUID(2): "1-7", }, drpcResp: &mgmtpb.PoolDrainResp{}, - expDrpcReqs: []*mgmtpb.PoolDrainReq{ + expDrainReqs: []*mgmtpb.PoolDrainReq{ dReq(1, 0), dReq(1, 1), dReq(1, 2), dReq(1, 3), dReq(2, 1), dReq(2, 2), dReq(2, 3), }, expResp: &mgmtpb.SystemDrainResp{ - Results: []*mgmtpb.SystemDrainResp_DrainResult{ + Results: []*mgmtpb.PoolRankResult{ {PoolId: test.MockUUID(1), Ranks: "0-3"}, {PoolId: test.MockUUID(2), Ranks: "1-3"}, }, @@ -1946,12 +1972,12 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { }, useLabels: true, drpcResp: &mgmtpb.PoolDrainResp{}, - expDrpcReqs: []*mgmtpb.PoolDrainReq{ + expDrainReqs: []*mgmtpb.PoolDrainReq{ dReq(1, 0), dReq(1, 1), dReq(1, 2), dReq(1, 3), dReq(2, 1), dReq(2, 2), dReq(2, 3), }, expResp: &mgmtpb.SystemDrainResp{ - Results: []*mgmtpb.SystemDrainResp_DrainResult{ + Results: []*mgmtpb.PoolRankResult{ {PoolId: "00000001", Ranks: "0-3"}, {PoolId: "00000002", Ranks: "1-3"}, }, @@ -1968,26 +1994,123 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { test.MockUUID(2): "1-7", }, drpcResp: &mgmtpb.PoolDrainResp{Status: -1}, - expDrpcReqs: []*mgmtpb.PoolDrainReq{ + expDrainReqs: []*mgmtpb.PoolDrainReq{ dReq(1, 1), dReq(1, 2), dReq(2, 1), dReq(2, 2), }, expResp: &mgmtpb.SystemDrainResp{ - Results: []*mgmtpb.SystemDrainResp_DrainResult{ + Results: []*mgmtpb.PoolRankResult{ { PoolId: test.MockUUID(1), Ranks: "1-2", - Status: -1, + Status: -1025, Msg: "DER_UNKNOWN(-1): Unknown error code -1", }, { PoolId: test.MockUUID(2), Ranks: "1-2", - Status: -1, + Status: -1025, Msg: "DER_UNKNOWN(-1): Unknown error code -1", }, }, }, }, + "reintegrate; matching ranks; multiple pools": { + req: &mgmtpb.SystemDrainReq{ + Ranks: "0,1", + Reint: true, + }, + poolRanks: map[string]string{ + test.MockUUID(1): "0-4", + test.MockUUID(2): "1-7", + }, + drpcResp: &mgmtpb.PoolReintResp{}, + expReintReqs: []*mgmtpb.PoolReintReq{ + rReq(1, 0), rReq(1, 1), rReq(2, 1), + }, + expResp: &mgmtpb.SystemDrainResp{ + Reint: true, + Results: []*mgmtpb.PoolRankResult{ + {PoolId: test.MockUUID(1), Ranks: "0-1"}, + {PoolId: test.MockUUID(2), Ranks: "1"}, + }, + }, + }, + "reintegrate; matching hosts; multiple pools; pool labels": { + req: &mgmtpb.SystemDrainReq{ + // Resolves to ranks 0-3. + Hosts: fmt.Sprintf("%s,%s", test.MockHostAddr(1), + test.MockHostAddr(2)), + Reint: true, + }, + poolRanks: map[string]string{ + test.MockUUID(1): "0-4", + test.MockUUID(2): "1-7", + }, + useLabels: true, + drpcResp: &mgmtpb.PoolReintResp{}, + expReintReqs: []*mgmtpb.PoolReintReq{ + rReq(1, 0), rReq(1, 1), rReq(1, 2), rReq(1, 3), + rReq(2, 1), rReq(2, 2), rReq(2, 3), + }, + expResp: &mgmtpb.SystemDrainResp{ + Reint: true, + Results: []*mgmtpb.PoolRankResult{ + {PoolId: "00000001", Ranks: "0-3"}, + {PoolId: "00000002", Ranks: "1-3"}, + }, + }, + }, + "reintegrate; matching ranks; variable states; drpc failed": { + members: system.Members{ + // Only ranks in joined states can be reintegrated. + mockMember(t, 4, 0, "adminexcluded"), + mockMember(t, 3, 0, "joined"), + mockMember(t, 2, 0, "errored"), + mockMember(t, 1, 0, "excluded"), + }, + req: &mgmtpb.SystemDrainReq{ + Reint: true, + Ranks: "1-4", + }, + poolRanks: map[string]string{ + test.MockUUID(1): "0-4", + test.MockUUID(2): "1-7", + }, + drpcResp: &mgmtpb.PoolReintResp{Status: -1}, + expReintReqs: []*mgmtpb.PoolReintReq{ + // dRPC only called for joined rank + rReq(1, 3), rReq(2, 3), + }, + expResp: &mgmtpb.SystemDrainResp{ + Reint: true, + Results: []*mgmtpb.PoolRankResult{ + { + PoolId: test.MockUUID(1), + Ranks: "3", + Status: -1025, + Msg: "DER_UNKNOWN(-1): Unknown error code -1", + }, + { + PoolId: test.MockUUID(1), + Ranks: "1-2,4", + Status: -1025, + Msg: msgInvalidRank, + }, + { + PoolId: test.MockUUID(2), + Ranks: "3", + Status: -1025, + Msg: "DER_UNKNOWN(-1): Unknown error code -1", + }, + { + PoolId: test.MockUUID(2), + Ranks: "1-2,4", + Status: -1025, + Msg: msgInvalidRank, + }, + }, + }, + }, } { t.Run(name, func(t *testing.T) { log, buf := logging.NewTestLogger(t.Name()) @@ -2041,7 +2164,7 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { cmpOpts := []cmp.Option{ cmpopts.IgnoreUnexported(mgmtpb.SystemDrainResp{}, - mgmtpb.SystemDrainResp_DrainResult{}), + mgmtpb.PoolRankResult{}), } if diff := cmp.Diff(tc.expResp, gotResp, cmpOpts...); diff != "" { t.Fatalf("unexpected response (-want, +got):\n%s\n", diff) @@ -2052,19 +2175,49 @@ func TestServer_MgmtSvc_SystemDrain(t *testing.T) { } gotDrpcCalls := mockDrpc.calls.get() - test.AssertEqual(t, len(tc.expDrpcReqs), len(gotDrpcCalls), - "unexpected number of drpc calls") - for i := range gotDrpcCalls { - gotReq := new(mgmtpb.PoolDrainReq) - err := proto.Unmarshal(gotDrpcCalls[i].Body, gotReq) - if err != nil { - t.Fatal(err) + nrDrpcCalls := len(gotDrpcCalls) + nrDrainReqs := len(tc.expDrainReqs) + nrReintReqs := len(tc.expReintReqs) + + if nrDrainReqs > 0 && nrReintReqs > 0 { + t.Fatal("bad test params, both drain and reint params supplied") + } + if (nrDrainReqs == 0 && nrReintReqs == 0) && nrDrpcCalls != 0 { + t.Fatal("unexpected drpc calls") + } + + if nrDrainReqs > 0 { + test.AssertEqual(t, nrDrainReqs, nrDrpcCalls, + "unexpected number of drpc drain calls") + + for i := range gotDrpcCalls { + gotReq := new(mgmtpb.PoolDrainReq) + err := proto.Unmarshal(gotDrpcCalls[i].Body, gotReq) + if err != nil { + t.Fatal(err) + } + opt := cmpopts.IgnoreUnexported(mgmtpb.PoolDrainReq{}) + diff := cmp.Diff(tc.expDrainReqs[i], gotReq, opt) + if diff != "" { + t.Fatalf("want-, got+:\n%s", diff) + } } - opt := cmpopts.IgnoreUnexported(mgmtpb.PoolDrainReq{}) - diff := cmp.Diff(tc.expDrpcReqs[i], gotReq, opt) - if diff != "" { - t.Fatalf("want-, got+:\n%s", diff) + } else if nrReintReqs > 0 { + test.AssertEqual(t, nrReintReqs, nrDrpcCalls, + "unexpected number of drpc reint calls") + + for i := range gotDrpcCalls { + gotReq := new(mgmtpb.PoolReintReq) + err := proto.Unmarshal(gotDrpcCalls[i].Body, gotReq) + if err != nil { + t.Fatal(err) + } + opt := cmpopts.IgnoreUnexported(mgmtpb.PoolReintReq{}) + diff := cmp.Diff(tc.expReintReqs[i], gotReq, opt) + if diff != "" { + t.Fatalf("want-, got+:\n%s", diff) + } } } }) diff --git a/src/include/daos/drpc_modules.h b/src/include/daos/drpc_modules.h index 16a7903a395..78d8abd6fa0 100644 --- a/src/include/daos/drpc_modules.h +++ b/src/include/daos/drpc_modules.h @@ -53,12 +53,8 @@ enum drpc_mgmt_method { DRPC_METHOD_MGMT_POOL_QUERY = 223, DRPC_METHOD_MGMT_POOL_SET_PROP = 224, DRPC_METHOD_MGMT_PING_RANK = 225, - DRPC_METHOD_MGMT_REINTEGRATE = 226, DRPC_METHOD_MGMT_CONT_SET_OWNER = 227, - DRPC_METHOD_MGMT_EXCLUDE = 228, - DRPC_METHOD_MGMT_EXTEND = 229, DRPC_METHOD_MGMT_POOL_EVICT = 230, - DRPC_METHOD_MGMT_DRAIN = 231, DRPC_METHOD_MGMT_GROUP_UPDATE = 232, DRPC_METHOD_MGMT_NOTIFY_EXIT = 233, DRPC_METHOD_MGMT_NOTIFY_POOL_CONNECT = 235, @@ -74,6 +70,10 @@ enum drpc_mgmt_method { DRPC_METHOD_MGMT_CHK_PROP = 245, DRPC_METHOD_MGMT_CHK_ACT = 246, DRPC_METHOD_MGMT_SETUP_CLIENT_TELEM = 247, + DRPC_METHOD_MGMT_POOL_REINT = 248, + DRPC_METHOD_MGMT_POOL_DRAIN = 249, + DRPC_METHOD_MGMT_POOL_EXCLUDE = 250, + DRPC_METHOD_MGMT_POOL_EXTEND = 251, NUM_DRPC_MGMT_METHODS /* Must be last */ }; diff --git a/src/mgmt/pool.pb-c.c b/src/mgmt/pool.pb-c.c index e8ccc8a1d0d..d63497fbee4 100644 --- a/src/mgmt/pool.pb-c.c +++ b/src/mgmt/pool.pb-c.c @@ -547,94 +547,80 @@ void mgmt__pool_extend_resp__free_unpacked assert(message->base.descriptor == &mgmt__pool_extend_resp__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void mgmt__pool_reintegrate_req__init - (Mgmt__PoolReintegrateReq *message) +void +mgmt__pool_reint_req__init(Mgmt__PoolReintReq *message) { - static const Mgmt__PoolReintegrateReq init_value = MGMT__POOL_REINTEGRATE_REQ__INIT; - *message = init_value; + static const Mgmt__PoolReintReq init_value = MGMT__POOL_REINT_REQ__INIT; + *message = init_value; } -size_t mgmt__pool_reintegrate_req__get_packed_size - (const Mgmt__PoolReintegrateReq *message) +size_t +mgmt__pool_reint_req__get_packed_size(const Mgmt__PoolReintReq *message) { - assert(message->base.descriptor == &mgmt__pool_reintegrate_req__descriptor); - return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); + assert(message->base.descriptor == &mgmt__pool_reint_req__descriptor); + return protobuf_c_message_get_packed_size((const ProtobufCMessage *)(message)); } -size_t mgmt__pool_reintegrate_req__pack - (const Mgmt__PoolReintegrateReq *message, - uint8_t *out) +size_t +mgmt__pool_reint_req__pack(const Mgmt__PoolReintReq *message, uint8_t *out) { - assert(message->base.descriptor == &mgmt__pool_reintegrate_req__descriptor); - return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); + assert(message->base.descriptor == &mgmt__pool_reint_req__descriptor); + return protobuf_c_message_pack((const ProtobufCMessage *)message, out); } -size_t mgmt__pool_reintegrate_req__pack_to_buffer - (const Mgmt__PoolReintegrateReq *message, - ProtobufCBuffer *buffer) +size_t +mgmt__pool_reint_req__pack_to_buffer(const Mgmt__PoolReintReq *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &mgmt__pool_reintegrate_req__descriptor); - return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); + assert(message->base.descriptor == &mgmt__pool_reint_req__descriptor); + return protobuf_c_message_pack_to_buffer((const ProtobufCMessage *)message, buffer); } -Mgmt__PoolReintegrateReq * - mgmt__pool_reintegrate_req__unpack - (ProtobufCAllocator *allocator, - size_t len, - const uint8_t *data) +Mgmt__PoolReintReq * +mgmt__pool_reint_req__unpack(ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (Mgmt__PoolReintegrateReq *) - protobuf_c_message_unpack (&mgmt__pool_reintegrate_req__descriptor, - allocator, len, data); + return (Mgmt__PoolReintReq *)protobuf_c_message_unpack(&mgmt__pool_reint_req__descriptor, + allocator, len, data); } -void mgmt__pool_reintegrate_req__free_unpacked - (Mgmt__PoolReintegrateReq *message, - ProtobufCAllocator *allocator) +void +mgmt__pool_reint_req__free_unpacked(Mgmt__PoolReintReq *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &mgmt__pool_reintegrate_req__descriptor); + assert(message->base.descriptor == &mgmt__pool_reint_req__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -void mgmt__pool_reintegrate_resp__init - (Mgmt__PoolReintegrateResp *message) +void +mgmt__pool_reint_resp__init(Mgmt__PoolReintResp *message) { - static const Mgmt__PoolReintegrateResp init_value = MGMT__POOL_REINTEGRATE_RESP__INIT; - *message = init_value; + static const Mgmt__PoolReintResp init_value = MGMT__POOL_REINT_RESP__INIT; + *message = init_value; } -size_t mgmt__pool_reintegrate_resp__get_packed_size - (const Mgmt__PoolReintegrateResp *message) +size_t +mgmt__pool_reint_resp__get_packed_size(const Mgmt__PoolReintResp *message) { - assert(message->base.descriptor == &mgmt__pool_reintegrate_resp__descriptor); - return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); + assert(message->base.descriptor == &mgmt__pool_reint_resp__descriptor); + return protobuf_c_message_get_packed_size((const ProtobufCMessage *)(message)); } -size_t mgmt__pool_reintegrate_resp__pack - (const Mgmt__PoolReintegrateResp *message, - uint8_t *out) +size_t +mgmt__pool_reint_resp__pack(const Mgmt__PoolReintResp *message, uint8_t *out) { - assert(message->base.descriptor == &mgmt__pool_reintegrate_resp__descriptor); - return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); + assert(message->base.descriptor == &mgmt__pool_reint_resp__descriptor); + return protobuf_c_message_pack((const ProtobufCMessage *)message, out); } -size_t mgmt__pool_reintegrate_resp__pack_to_buffer - (const Mgmt__PoolReintegrateResp *message, - ProtobufCBuffer *buffer) +size_t +mgmt__pool_reint_resp__pack_to_buffer(const Mgmt__PoolReintResp *message, ProtobufCBuffer *buffer) { - assert(message->base.descriptor == &mgmt__pool_reintegrate_resp__descriptor); - return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); + assert(message->base.descriptor == &mgmt__pool_reint_resp__descriptor); + return protobuf_c_message_pack_to_buffer((const ProtobufCMessage *)message, buffer); } -Mgmt__PoolReintegrateResp * - mgmt__pool_reintegrate_resp__unpack - (ProtobufCAllocator *allocator, - size_t len, - const uint8_t *data) +Mgmt__PoolReintResp * +mgmt__pool_reint_resp__unpack(ProtobufCAllocator *allocator, size_t len, const uint8_t *data) { - return (Mgmt__PoolReintegrateResp *) - protobuf_c_message_unpack (&mgmt__pool_reintegrate_resp__descriptor, - allocator, len, data); + return (Mgmt__PoolReintResp *)protobuf_c_message_unpack(&mgmt__pool_reint_resp__descriptor, + allocator, len, data); } -void mgmt__pool_reintegrate_resp__free_unpacked - (Mgmt__PoolReintegrateResp *message, - ProtobufCAllocator *allocator) +void +mgmt__pool_reint_resp__free_unpacked(Mgmt__PoolReintResp *message, ProtobufCAllocator *allocator) { if(!message) return; - assert(message->base.descriptor == &mgmt__pool_reintegrate_resp__descriptor); + assert(message->base.descriptor == &mgmt__pool_reint_resp__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } void mgmt__list_pools_req__init @@ -2532,159 +2518,100 @@ const ProtobufCMessageDescriptor mgmt__pool_extend_resp__descriptor = (ProtobufCMessageInit) mgmt__pool_extend_resp__init, NULL,NULL,NULL /* reserved[123] */ }; -static const ProtobufCFieldDescriptor mgmt__pool_reintegrate_req__field_descriptors[7] = -{ - { - "sys", - 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_STRING, - 0, /* quantifier_offset */ - offsetof(Mgmt__PoolReintegrateReq, sys), - NULL, - &protobuf_c_empty_string, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "id", - 2, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_STRING, - 0, /* quantifier_offset */ - offsetof(Mgmt__PoolReintegrateReq, id), - NULL, - &protobuf_c_empty_string, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "rank", - 3, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_UINT32, - 0, /* quantifier_offset */ - offsetof(Mgmt__PoolReintegrateReq, rank), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "target_idx", - 4, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_UINT32, - offsetof(Mgmt__PoolReintegrateReq, n_target_idx), - offsetof(Mgmt__PoolReintegrateReq, target_idx), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "svc_ranks", - 5, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_UINT32, - offsetof(Mgmt__PoolReintegrateReq, n_svc_ranks), - offsetof(Mgmt__PoolReintegrateReq, svc_ranks), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "tier_bytes", - 6, - PROTOBUF_C_LABEL_REPEATED, - PROTOBUF_C_TYPE_UINT64, - offsetof(Mgmt__PoolReintegrateReq, n_tier_bytes), - offsetof(Mgmt__PoolReintegrateReq, tier_bytes), - NULL, - NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, - { - "mem_ratio", +static const ProtobufCFieldDescriptor mgmt__pool_reint_req__field_descriptors[7] = { + { + "sys", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ + offsetof(Mgmt__PoolReintReq, sys), NULL, &protobuf_c_empty_string, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, + { + "id", 2, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_STRING, 0, /* quantifier_offset */ + offsetof(Mgmt__PoolReintReq, id), NULL, &protobuf_c_empty_string, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, + { + "rank", 3, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_UINT32, 0, /* quantifier_offset */ + offsetof(Mgmt__PoolReintReq, rank), NULL, NULL, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, + { + "target_idx", 4, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT32, + offsetof(Mgmt__PoolReintReq, n_target_idx), offsetof(Mgmt__PoolReintReq, target_idx), NULL, + NULL, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, + { + "svc_ranks", 5, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT32, + offsetof(Mgmt__PoolReintReq, n_svc_ranks), offsetof(Mgmt__PoolReintReq, svc_ranks), NULL, + NULL, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, + { + "tier_bytes", 6, PROTOBUF_C_LABEL_REPEATED, PROTOBUF_C_TYPE_UINT64, + offsetof(Mgmt__PoolReintReq, n_tier_bytes), offsetof(Mgmt__PoolReintReq, tier_bytes), NULL, + NULL, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, + { + "mem_ratio", 7, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_FLOAT, 0, /* quantifier_offset */ + offsetof(Mgmt__PoolReintReq, mem_ratio), NULL, NULL, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned mgmt__pool_reint_req__field_indices_by_name[] = { + 1, /* field[1] = id */ + 6, /* field[6] = mem_ratio */ + 2, /* field[2] = rank */ + 4, /* field[4] = svc_ranks */ + 0, /* field[0] = sys */ + 3, /* field[3] = target_idx */ + 5, /* field[5] = tier_bytes */ +}; +static const ProtobufCIntRange mgmt__pool_reint_req__number_ranges[1 + 1] = {{1, 0}, {0, 7}}; +const ProtobufCMessageDescriptor mgmt__pool_reint_req__descriptor = { + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "mgmt.PoolReintReq", + "PoolReintReq", + "Mgmt__PoolReintReq", + "mgmt", + sizeof(Mgmt__PoolReintReq), 7, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_FLOAT, - 0, /* quantifier_offset */ - offsetof(Mgmt__PoolReintegrateReq, mem_ratio), + mgmt__pool_reint_req__field_descriptors, + mgmt__pool_reint_req__field_indices_by_name, + 1, + mgmt__pool_reint_req__number_ranges, + (ProtobufCMessageInit)mgmt__pool_reint_req__init, NULL, NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, + NULL /* reserved[123] */ }; -static const unsigned mgmt__pool_reintegrate_req__field_indices_by_name[] = { - 1, /* field[1] = id */ - 6, /* field[6] = mem_ratio */ - 2, /* field[2] = rank */ - 4, /* field[4] = svc_ranks */ - 0, /* field[0] = sys */ - 3, /* field[3] = target_idx */ - 5, /* field[5] = tier_bytes */ -}; -static const ProtobufCIntRange mgmt__pool_reintegrate_req__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 7 } -}; -const ProtobufCMessageDescriptor mgmt__pool_reintegrate_req__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "mgmt.PoolReintegrateReq", - "PoolReintegrateReq", - "Mgmt__PoolReintegrateReq", - "mgmt", - sizeof(Mgmt__PoolReintegrateReq), - 7, - mgmt__pool_reintegrate_req__field_descriptors, - mgmt__pool_reintegrate_req__field_indices_by_name, - 1, mgmt__pool_reintegrate_req__number_ranges, - (ProtobufCMessageInit) mgmt__pool_reintegrate_req__init, - NULL,NULL,NULL /* reserved[123] */ +static const ProtobufCFieldDescriptor mgmt__pool_reint_resp__field_descriptors[1] = { + { + "status", 1, PROTOBUF_C_LABEL_NONE, PROTOBUF_C_TYPE_INT32, 0, /* quantifier_offset */ + offsetof(Mgmt__PoolReintResp, status), NULL, NULL, 0, /* flags */ + 0, NULL, NULL /* reserved1,reserved2, etc */ + }, }; -static const ProtobufCFieldDescriptor mgmt__pool_reintegrate_resp__field_descriptors[1] = -{ - { - "status", +static const unsigned mgmt__pool_reint_resp__field_indices_by_name[] = { + 0, /* field[0] = status */ +}; +static const ProtobufCIntRange mgmt__pool_reint_resp__number_ranges[1 + 1] = {{1, 0}, {0, 1}}; +const ProtobufCMessageDescriptor mgmt__pool_reint_resp__descriptor = { + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "mgmt.PoolReintResp", + "PoolReintResp", + "Mgmt__PoolReintResp", + "mgmt", + sizeof(Mgmt__PoolReintResp), 1, - PROTOBUF_C_LABEL_NONE, - PROTOBUF_C_TYPE_INT32, - 0, /* quantifier_offset */ - offsetof(Mgmt__PoolReintegrateResp, status), + mgmt__pool_reint_resp__field_descriptors, + mgmt__pool_reint_resp__field_indices_by_name, + 1, + mgmt__pool_reint_resp__number_ranges, + (ProtobufCMessageInit)mgmt__pool_reint_resp__init, NULL, NULL, - 0, /* flags */ - 0,NULL,NULL /* reserved1,reserved2, etc */ - }, -}; -static const unsigned mgmt__pool_reintegrate_resp__field_indices_by_name[] = { - 0, /* field[0] = status */ -}; -static const ProtobufCIntRange mgmt__pool_reintegrate_resp__number_ranges[1 + 1] = -{ - { 1, 0 }, - { 0, 1 } -}; -const ProtobufCMessageDescriptor mgmt__pool_reintegrate_resp__descriptor = -{ - PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, - "mgmt.PoolReintegrateResp", - "PoolReintegrateResp", - "Mgmt__PoolReintegrateResp", - "mgmt", - sizeof(Mgmt__PoolReintegrateResp), - 1, - mgmt__pool_reintegrate_resp__field_descriptors, - mgmt__pool_reintegrate_resp__field_indices_by_name, - 1, mgmt__pool_reintegrate_resp__number_ranges, - (ProtobufCMessageInit) mgmt__pool_reintegrate_resp__init, - NULL,NULL,NULL /* reserved[123] */ + NULL /* reserved[123] */ }; static const ProtobufCFieldDescriptor mgmt__list_pools_req__field_descriptors[1] = { diff --git a/src/mgmt/pool.pb-c.h b/src/mgmt/pool.pb-c.h index a6409601cad..b860a358ee0 100644 --- a/src/mgmt/pool.pb-c.h +++ b/src/mgmt/pool.pb-c.h @@ -27,8 +27,8 @@ typedef struct _Mgmt__PoolDrainReq Mgmt__PoolDrainReq; typedef struct _Mgmt__PoolDrainResp Mgmt__PoolDrainResp; typedef struct _Mgmt__PoolExtendReq Mgmt__PoolExtendReq; typedef struct _Mgmt__PoolExtendResp Mgmt__PoolExtendResp; -typedef struct _Mgmt__PoolReintegrateReq Mgmt__PoolReintegrateReq; -typedef struct _Mgmt__PoolReintegrateResp Mgmt__PoolReintegrateResp; +typedef struct _Mgmt__PoolReintReq Mgmt__PoolReintReq; +typedef struct _Mgmt__PoolReintResp Mgmt__PoolReintResp; typedef struct _Mgmt__ListPoolsReq Mgmt__ListPoolsReq; typedef struct _Mgmt__ListPoolsResp Mgmt__ListPoolsResp; typedef struct _Mgmt__ListPoolsResp__Pool Mgmt__ListPoolsResp__Pool; @@ -533,65 +533,67 @@ struct _Mgmt__PoolExtendResp { PROTOBUF_C_MESSAGE_INIT (&mgmt__pool_extend_resp__descriptor) \ , 0, 0,NULL } - /* - * PoolReintegrateReq supplies pool identifier, rank, and target_idxs. + * PoolReintReq supplies pool identifier, rank, and target_idxs. */ -struct _Mgmt__PoolReintegrateReq -{ - ProtobufCMessage base; - /* - * DAOS system identifier - */ - char *sys; - /* - * uuid or label of pool to add target up to - */ - char *id; - /* - * target to move to the up state - */ - uint32_t rank; - /* - * target ranks - */ - size_t n_target_idx; - uint32_t *target_idx; - /* - * List of pool service ranks - */ - size_t n_svc_ranks; - uint32_t *svc_ranks; - /* - * Size in bytes of storage tiers - */ - size_t n_tier_bytes; - uint64_t *tier_bytes; - /* - * Fraction of meta-blob-sz to use as mem-file-sz - */ - float mem_ratio; +struct _Mgmt__PoolReintReq { + ProtobufCMessage base; + /* + * DAOS system identifier + */ + char *sys; + /* + * uuid or label of pool to add target up to + */ + char *id; + /* + * target to move to the up state + */ + uint32_t rank; + /* + * target ranks + */ + size_t n_target_idx; + uint32_t *target_idx; + /* + * List of pool service ranks + */ + size_t n_svc_ranks; + uint32_t *svc_ranks; + /* + * Size in bytes of storage tiers + */ + size_t n_tier_bytes; + uint64_t *tier_bytes; + /* + * Fraction of meta-blob-sz to use as mem-file-sz + */ + float mem_ratio; }; -#define MGMT__POOL_REINTEGRATE_REQ__INIT \ - { PROTOBUF_C_MESSAGE_INIT (&mgmt__pool_reintegrate_req__descriptor) \ - , (char *)protobuf_c_empty_string, (char *)protobuf_c_empty_string, 0, 0,NULL, 0,NULL, 0,NULL, 0 } - +#define MGMT__POOL_REINT_REQ__INIT \ + {PROTOBUF_C_MESSAGE_INIT(&mgmt__pool_reint_req__descriptor), \ + (char *)protobuf_c_empty_string, \ + (char *)protobuf_c_empty_string, \ + 0, \ + 0, \ + NULL, \ + 0, \ + NULL, \ + 0, \ + NULL, \ + 0} /* - * PoolReintegrateResp returns resultant state of Reintegrate operation. + * PoolReintResp returns resultant state of Reintegrate operation. */ -struct _Mgmt__PoolReintegrateResp -{ - ProtobufCMessage base; - /* - * DAOS error code - */ - int32_t status; +struct _Mgmt__PoolReintResp { + ProtobufCMessage base; + /* + * DAOS error code + */ + int32_t status; }; -#define MGMT__POOL_REINTEGRATE_RESP__INIT \ - { PROTOBUF_C_MESSAGE_INIT (&mgmt__pool_reintegrate_resp__descriptor) \ - , 0 } - +#define MGMT__POOL_REINT_RESP__INIT {PROTOBUF_C_MESSAGE_INIT(&mgmt__pool_reint_resp__descriptor), 0} /* * ListPoolsReq represents a request to list pools on a given DAOS system. @@ -1381,44 +1383,32 @@ Mgmt__PoolExtendResp * void mgmt__pool_extend_resp__free_unpacked (Mgmt__PoolExtendResp *message, ProtobufCAllocator *allocator); -/* Mgmt__PoolReintegrateReq methods */ -void mgmt__pool_reintegrate_req__init - (Mgmt__PoolReintegrateReq *message); -size_t mgmt__pool_reintegrate_req__get_packed_size - (const Mgmt__PoolReintegrateReq *message); -size_t mgmt__pool_reintegrate_req__pack - (const Mgmt__PoolReintegrateReq *message, - uint8_t *out); -size_t mgmt__pool_reintegrate_req__pack_to_buffer - (const Mgmt__PoolReintegrateReq *message, - ProtobufCBuffer *buffer); -Mgmt__PoolReintegrateReq * - mgmt__pool_reintegrate_req__unpack - (ProtobufCAllocator *allocator, - size_t len, - const uint8_t *data); -void mgmt__pool_reintegrate_req__free_unpacked - (Mgmt__PoolReintegrateReq *message, - ProtobufCAllocator *allocator); -/* Mgmt__PoolReintegrateResp methods */ -void mgmt__pool_reintegrate_resp__init - (Mgmt__PoolReintegrateResp *message); -size_t mgmt__pool_reintegrate_resp__get_packed_size - (const Mgmt__PoolReintegrateResp *message); -size_t mgmt__pool_reintegrate_resp__pack - (const Mgmt__PoolReintegrateResp *message, - uint8_t *out); -size_t mgmt__pool_reintegrate_resp__pack_to_buffer - (const Mgmt__PoolReintegrateResp *message, - ProtobufCBuffer *buffer); -Mgmt__PoolReintegrateResp * - mgmt__pool_reintegrate_resp__unpack - (ProtobufCAllocator *allocator, - size_t len, - const uint8_t *data); -void mgmt__pool_reintegrate_resp__free_unpacked - (Mgmt__PoolReintegrateResp *message, - ProtobufCAllocator *allocator); +/* Mgmt__PoolReintReq methods */ +void +mgmt__pool_reint_req__init(Mgmt__PoolReintReq *message); +size_t +mgmt__pool_reint_req__get_packed_size(const Mgmt__PoolReintReq *message); +size_t +mgmt__pool_reint_req__pack(const Mgmt__PoolReintReq *message, uint8_t *out); +size_t +mgmt__pool_reint_req__pack_to_buffer(const Mgmt__PoolReintReq *message, ProtobufCBuffer *buffer); +Mgmt__PoolReintReq * +mgmt__pool_reint_req__unpack(ProtobufCAllocator *allocator, size_t len, const uint8_t *data); +void +mgmt__pool_reint_req__free_unpacked(Mgmt__PoolReintReq *message, ProtobufCAllocator *allocator); +/* Mgmt__PoolReintResp methods */ +void +mgmt__pool_reint_resp__init(Mgmt__PoolReintResp *message); +size_t +mgmt__pool_reint_resp__get_packed_size(const Mgmt__PoolReintResp *message); +size_t +mgmt__pool_reint_resp__pack(const Mgmt__PoolReintResp *message, uint8_t *out); +size_t +mgmt__pool_reint_resp__pack_to_buffer(const Mgmt__PoolReintResp *message, ProtobufCBuffer *buffer); +Mgmt__PoolReintResp * +mgmt__pool_reint_resp__unpack(ProtobufCAllocator *allocator, size_t len, const uint8_t *data); +void +mgmt__pool_reint_resp__free_unpacked(Mgmt__PoolReintResp *message, ProtobufCAllocator *allocator); /* Mgmt__ListPoolsReq methods */ void mgmt__list_pools_req__init (Mgmt__ListPoolsReq *message); @@ -1824,12 +1814,8 @@ typedef void (*Mgmt__PoolExtendReq_Closure) typedef void (*Mgmt__PoolExtendResp_Closure) (const Mgmt__PoolExtendResp *message, void *closure_data); -typedef void (*Mgmt__PoolReintegrateReq_Closure) - (const Mgmt__PoolReintegrateReq *message, - void *closure_data); -typedef void (*Mgmt__PoolReintegrateResp_Closure) - (const Mgmt__PoolReintegrateResp *message, - void *closure_data); +typedef void (*Mgmt__PoolReintReq_Closure)(const Mgmt__PoolReintReq *message, void *closure_data); +typedef void (*Mgmt__PoolReintResp_Closure)(const Mgmt__PoolReintResp *message, void *closure_data); typedef void (*Mgmt__ListPoolsReq_Closure) (const Mgmt__ListPoolsReq *message, void *closure_data); @@ -1913,8 +1899,8 @@ extern const ProtobufCMessageDescriptor mgmt__pool_drain_req__descriptor; extern const ProtobufCMessageDescriptor mgmt__pool_drain_resp__descriptor; extern const ProtobufCMessageDescriptor mgmt__pool_extend_req__descriptor; extern const ProtobufCMessageDescriptor mgmt__pool_extend_resp__descriptor; -extern const ProtobufCMessageDescriptor mgmt__pool_reintegrate_req__descriptor; -extern const ProtobufCMessageDescriptor mgmt__pool_reintegrate_resp__descriptor; +extern const ProtobufCMessageDescriptor mgmt__pool_reint_req__descriptor; +extern const ProtobufCMessageDescriptor mgmt__pool_reint_resp__descriptor; extern const ProtobufCMessageDescriptor mgmt__list_pools_req__descriptor; extern const ProtobufCMessageDescriptor mgmt__list_pools_resp__descriptor; extern const ProtobufCMessageDescriptor mgmt__list_pools_resp__pool__descriptor; diff --git a/src/mgmt/srv.c b/src/mgmt/srv.c index ebd3e29e09f..46bc78d10fe 100644 --- a/src/mgmt/srv.c +++ b/src/mgmt/srv.c @@ -74,6 +74,9 @@ process_drpc_request(Drpc__Call *drpc_req, Drpc__Response *drpc_resp) case DRPC_METHOD_MGMT_PING_RANK: ds_mgmt_drpc_ping_rank(drpc_req, drpc_resp); break; + case DRPC_METHOD_MGMT_SET_UP: + ds_mgmt_drpc_set_up(drpc_req, drpc_resp); + break; case DRPC_METHOD_MGMT_SET_LOG_MASKS: ds_mgmt_drpc_set_log_masks(drpc_req, drpc_resp); break; @@ -92,19 +95,16 @@ process_drpc_request(Drpc__Call *drpc_req, Drpc__Response *drpc_resp) case DRPC_METHOD_MGMT_POOL_EVICT: ds_mgmt_drpc_pool_evict(drpc_req, drpc_resp); break; - case DRPC_METHOD_MGMT_SET_UP: - ds_mgmt_drpc_set_up(drpc_req, drpc_resp); - break; - case DRPC_METHOD_MGMT_EXCLUDE: + case DRPC_METHOD_MGMT_POOL_EXCLUDE: ds_mgmt_drpc_pool_exclude(drpc_req, drpc_resp); break; - case DRPC_METHOD_MGMT_DRAIN: + case DRPC_METHOD_MGMT_POOL_DRAIN: ds_mgmt_drpc_pool_drain(drpc_req, drpc_resp); break; - case DRPC_METHOD_MGMT_REINTEGRATE: + case DRPC_METHOD_MGMT_POOL_REINT: ds_mgmt_drpc_pool_reintegrate(drpc_req, drpc_resp); break; - case DRPC_METHOD_MGMT_EXTEND: + case DRPC_METHOD_MGMT_POOL_EXTEND: ds_mgmt_drpc_pool_extend(drpc_req, drpc_resp); break; case DRPC_METHOD_MGMT_BIO_HEALTH_QUERY: diff --git a/src/mgmt/srv_drpc.c b/src/mgmt/srv_drpc.c index 0689d3f8441..8092e11ddaf 100644 --- a/src/mgmt/srv_drpc.c +++ b/src/mgmt/srv_drpc.c @@ -936,8 +936,8 @@ void ds_mgmt_drpc_pool_reintegrate(Drpc__Call *drpc_req, Drpc__Response *drpc_resp) { struct drpc_alloc alloc = PROTO_ALLOCATOR_INIT(alloc); - Mgmt__PoolReintegrateReq *req = NULL; - Mgmt__PoolReintegrateResp resp; + Mgmt__PoolReintReq *req = NULL; + Mgmt__PoolReintResp resp; d_rank_list_t *svc_ranks = NULL; uint8_t *body; size_t len; @@ -945,12 +945,10 @@ ds_mgmt_drpc_pool_reintegrate(Drpc__Call *drpc_req, Drpc__Response *drpc_resp) uint64_t nvme_bytes = 0; int rc; - mgmt__pool_reintegrate_resp__init(&resp); + mgmt__pool_reint_resp__init(&resp); /* Unpack the inner request from the drpc call body */ - req = mgmt__pool_reintegrate_req__unpack(&alloc.alloc, - drpc_req->body.len, - drpc_req->body.data); + req = mgmt__pool_reint_req__unpack(&alloc.alloc, drpc_req->body.len, drpc_req->body.data); if (alloc.oom || req == NULL) { drpc_resp->status = DRPC__STATUS__FAILED_UNMARSHAL_PAYLOAD; @@ -982,17 +980,17 @@ ds_mgmt_drpc_pool_reintegrate(Drpc__Call *drpc_req, Drpc__Response *drpc_resp) out: resp.status = rc; - len = mgmt__pool_reintegrate_resp__get_packed_size(&resp); + len = mgmt__pool_reint_resp__get_packed_size(&resp); D_ALLOC(body, len); if (body == NULL) { drpc_resp->status = DRPC__STATUS__FAILED_MARSHAL; } else { - mgmt__pool_reintegrate_resp__pack(&resp, body); + mgmt__pool_reint_resp__pack(&resp, body); drpc_resp->body.len = len; drpc_resp->body.data = body; } - mgmt__pool_reintegrate_req__free_unpacked(req, &alloc.alloc); + mgmt__pool_reint_req__free_unpacked(req, &alloc.alloc); } void ds_mgmt_drpc_pool_set_prop(Drpc__Call *drpc_req, Drpc__Response *drpc_resp) diff --git a/src/mgmt/tests/srv_drpc_tests.c b/src/mgmt/tests/srv_drpc_tests.c index 8c7197a38a0..27f2f53b27d 100644 --- a/src/mgmt/tests/srv_drpc_tests.c +++ b/src/mgmt/tests/srv_drpc_tests.c @@ -2072,57 +2072,56 @@ test_drpc_extend_success(void **state) * dRPC pool reintegrate tests */ static void -pack_pool_reintegrate_req(Drpc__Call *call, Mgmt__PoolReintegrateReq *req) +pack_pool_reint_req(Drpc__Call *call, Mgmt__PoolReintReq *req) { size_t len; uint8_t *body; - len = mgmt__pool_reintegrate_req__get_packed_size(req); + len = mgmt__pool_reint_req__get_packed_size(req); D_ALLOC(body, len); assert_non_null(body); - mgmt__pool_reintegrate_req__pack(req, body); + mgmt__pool_reint_req__pack(req, body); call->body.data = body; call->body.len = len; } static void -setup_reintegrate_drpc_call(Drpc__Call *call, char *uuid) +setup_reint_drpc_call(Drpc__Call *call, char *uuid) { - Mgmt__PoolReintegrateReq req = MGMT__POOL_REINTEGRATE_REQ__INIT; + Mgmt__PoolReintReq req = MGMT__POOL_REINT_REQ__INIT; req.id = uuid; - pack_pool_reintegrate_req(call, &req); + pack_pool_reint_req(call, &req); } static void -expect_drpc_reintegrate_resp_with_error(Drpc__Response *resp, int exp_error) +expect_drpc_reint_resp_with_error(Drpc__Response *resp, int exp_error) { - Mgmt__PoolReintegrateResp *pc_resp = NULL; + Mgmt__PoolReintResp *pc_resp = NULL; assert_int_equal(resp->status, DRPC__STATUS__SUCCESS); assert_non_null(resp->body.data); - pc_resp = mgmt__pool_reintegrate_resp__unpack(NULL, resp->body.len, - resp->body.data); + pc_resp = mgmt__pool_reint_resp__unpack(NULL, resp->body.len, resp->body.data); assert_non_null(pc_resp); assert_int_equal(pc_resp->status, exp_error); - mgmt__pool_reintegrate_resp__free_unpacked(pc_resp, NULL); + mgmt__pool_reint_resp__free_unpacked(pc_resp, NULL); } static void -test_drpc_reintegrate_bad_uuid(void **state) +test_drpc_reint_bad_uuid(void **state) { Drpc__Call call = DRPC__CALL__INIT; Drpc__Response resp = DRPC__RESPONSE__INIT; - setup_reintegrate_drpc_call(&call, "BAD"); + setup_reint_drpc_call(&call, "BAD"); ds_mgmt_drpc_pool_reintegrate(&call, &resp); - expect_drpc_reintegrate_resp_with_error(&resp, -DER_INVAL); + expect_drpc_reint_resp_with_error(&resp, -DER_INVAL); D_FREE(call.body.data); D_FREE(resp.body.data); @@ -3031,7 +3030,7 @@ test_drpc_check_act_success(void **state) #define POOL_EXTEND_TEST(x) cmocka_unit_test_setup(x, \ drpc_pool_extend_setup) -#define REINTEGRATE_TEST(x) cmocka_unit_test(x) +#define REINT_TEST(x) cmocka_unit_test(x) #define POOL_CREATE_TEST(x) cmocka_unit_test(x) @@ -3109,7 +3108,7 @@ main(void) POOL_EXTEND_TEST(test_drpc_extend_bad_uuid), POOL_EXTEND_TEST(test_drpc_extend_mgmt_svc_fails), POOL_EXTEND_TEST(test_drpc_extend_success), - REINTEGRATE_TEST(test_drpc_reintegrate_bad_uuid), + REINT_TEST(test_drpc_reint_bad_uuid), QUERY_TEST(test_drpc_pool_query_bad_uuid), QUERY_TEST(test_drpc_pool_query_mgmt_svc_fails), QUERY_TEST(test_drpc_pool_query_success), diff --git a/src/proto/mgmt/mgmt.proto b/src/proto/mgmt/mgmt.proto index c0b8c13919d..8ea7c119dbd 100644 --- a/src/proto/mgmt/mgmt.proto +++ b/src/proto/mgmt/mgmt.proto @@ -46,7 +46,7 @@ service MgmtSvc { // Extend a pool. rpc PoolExtend(PoolExtendReq) returns (PoolExtendResp) {} // Reintegrate a pool target. - rpc PoolReintegrate(PoolReintegrateReq) returns (PoolReintegrateResp) {} + rpc PoolReint(PoolReintReq) returns (PoolReintResp) {} // PoolQuery queries a DAOS pool. rpc PoolQuery(PoolQueryReq) returns (PoolQueryResp) {} // PoolQueryTarget queries a DAOS storage target. @@ -79,7 +79,7 @@ service MgmtSvc { rpc SystemStart(SystemStartReq) returns(SystemStartResp) {} // Exclude DAOS ranks rpc SystemExclude(SystemExcludeReq) returns(SystemExcludeResp) {} - // Drain DAOS ranks from all pools + // Drain or reintegrate DAOS ranks from all pools rpc SystemDrain(SystemDrainReq) returns (SystemDrainResp) {} // Erase DAOS system database prior to reformat rpc SystemErase(SystemEraseReq) returns(SystemEraseResp) {} diff --git a/src/proto/mgmt/pool.proto b/src/proto/mgmt/pool.proto index b6a7535cd7e..c7925d452d5 100644 --- a/src/proto/mgmt/pool.proto +++ b/src/proto/mgmt/pool.proto @@ -121,8 +121,9 @@ message PoolExtendResp { repeated uint64 tier_bytes = 2; // storage tiers allocated to pool } -// PoolReintegrateReq supplies pool identifier, rank, and target_idxs. -message PoolReintegrateReq { +// PoolReintReq supplies pool identifier, rank, and target_idxs. +message PoolReintReq +{ string sys = 1; // DAOS system identifier string id = 2; // uuid or label of pool to add target up to uint32 rank = 3; // target to move to the up state @@ -132,8 +133,9 @@ message PoolReintegrateReq { float mem_ratio = 7; // Fraction of meta-blob-sz to use as mem-file-sz } -// PoolReintegrateResp returns resultant state of Reintegrate operation. -message PoolReintegrateResp { +// PoolReintResp returns resultant state of Reintegrate operation. +message PoolReintResp +{ int32 status = 1; // DAOS error code } diff --git a/src/proto/mgmt/system.proto b/src/proto/mgmt/system.proto index 86cb26a02ef..df3c2a74d0f 100644 --- a/src/proto/mgmt/system.proto +++ b/src/proto/mgmt/system.proto @@ -78,25 +78,29 @@ message SystemExcludeResp { repeated shared.RankResult results = 1; } +// Results for system OSA calls on multiple pool-ranks. +message PoolRankResult +{ + int32 status = 1; // Status of the OSA operation on a specific pool + string msg = 2; // Error message if status indicates an error + string pool_id = 3; // Label or uuid of pool + string ranks = 4; // Rank-set that has encountered this result +} + // SystemDrainReq supplies system-drain parameters. message SystemDrainReq { string sys = 1; // DAOS system name string ranks = 2; // rankset to drain on all pools string hosts = 3; // hostset to drain on all pools + bool reint = 4; // Flag to indicate if request is for drain or reint. } // SystemDrainResp returns status of system-drain request. message SystemDrainResp { - message DrainResult - { - int32 status = 1; // Status of the evict on the specific pool - string msg = 2; // Error message if status indicates an error - string pool_id = 3; // Label or uuid of pool - string ranks = 4; // Rank-set that has encountered this result - } - repeated DrainResult results = 1; // Results for pool-ranks drain calls. + bool reint = 1; // Flag to indicate if results are for drain or reint. + repeated PoolRankResult results = 2; // Results for drain or reint calls on pool-ranks. } // SystemQueryReq supplies system query parameters.