@@ -16,6 +16,7 @@ package pd
1616
1717import (
1818 "context"
19+ "fmt"
1920 "time"
2021
2122 "github.com/gogo/protobuf/proto"
@@ -34,14 +35,20 @@ import (
3435type actionType int
3536
3637const (
37- add actionType = 0
38- modify actionType = 1
39- groupSettingsPathPrefix = "resource_group/settings"
40- controllerConfigPathPrefix = "resource_group/controller"
38+ add actionType = 0
39+ modify actionType = 1
40+ groupSettingsPathPrefix = "resource_group/settings"
41+ keyspaceResourceGroupSettingPathPrefix = "resource_group/keyspace/settings/%d"
42+ controllerConfigPathPrefix = "resource_group/controller"
4143)
4244
4345// GroupSettingsPathPrefixBytes is used to watch or get resource groups.
44- var GroupSettingsPathPrefixBytes = []byte (groupSettingsPathPrefix )
46+ func GroupSettingsPathPrefixBytes (keyspaceID uint32 ) []byte {
47+ if keyspaceID == constants .NullKeyspaceID {
48+ return []byte (groupSettingsPathPrefix )
49+ }
50+ return fmt .Appendf (nil , keyspaceResourceGroupSettingPathPrefix , keyspaceID )
51+ }
4552
4653// ControllerConfigPathPrefixBytes is used to watch or get controller config.
4754var ControllerConfigPathPrefixBytes = []byte (controllerConfigPathPrefix )
@@ -52,16 +59,15 @@ type ResourceManagerClient interface {
5259 GetResourceGroup (ctx context.Context , resourceGroupName string , opts ... GetResourceGroupOption ) (* rmpb.ResourceGroup , error )
5360 AddResourceGroup (ctx context.Context , metaGroup * rmpb.ResourceGroup ) (string , error )
5461 ModifyResourceGroup (ctx context.Context , metaGroup * rmpb.ResourceGroup ) (string , error )
55- DeleteResourceGroup (ctx context.Context , resourceGroupName string , opts ... DeleteResourceGroupOption ) (string , error )
62+ DeleteResourceGroup (ctx context.Context , resourceGroupName string ) (string , error )
5663 LoadResourceGroups (ctx context.Context ) ([]* rmpb.ResourceGroup , int64 , error )
5764 AcquireTokenBuckets (ctx context.Context , request * rmpb.TokenBucketsRequest ) ([]* rmpb.TokenBucketResponse , error )
5865 Watch (ctx context.Context , key []byte , opts ... opt.MetaStorageOption ) (chan []* meta_storagepb.Event , error )
5966}
6067
6168// GetResourceGroupOp represents available options when getting resource group.
6269type GetResourceGroupOp struct {
63- withRUStats bool
64- withKeyspaceID * rmpb.KeyspaceIDValue
70+ withRUStats bool
6571}
6672
6773// GetResourceGroupOption configures GetResourceGroupOp.
@@ -72,32 +78,6 @@ func WithRUStats(op *GetResourceGroupOp) {
7278 op .withRUStats = true
7379}
7480
75- // WithKeyspaceID specifies to return resource group with keyspace id.
76- func WithKeyspaceID (keyspaceID uint32 ) GetResourceGroupOption {
77- return func (op * GetResourceGroupOp ) {
78- op .withKeyspaceID = & rmpb.KeyspaceIDValue {
79- Value : keyspaceID ,
80- }
81- }
82- }
83-
84- // DeleteResourceGroupOp represents available options when deleting resource group.
85- type DeleteResourceGroupOp struct {
86- withKeyspaceID * rmpb.KeyspaceIDValue
87- }
88-
89- // DeleteResourceGroupOption configures DeleteResourceGroupOp.
90- type DeleteResourceGroupOption func (* DeleteResourceGroupOp )
91-
92- // DeleteWithKeyspaceID specifies to delete resource group with keyspace id.
93- func DeleteWithKeyspaceID (keyspaceID uint32 ) DeleteResourceGroupOption {
94- return func (op * DeleteResourceGroupOp ) {
95- op .withKeyspaceID = & rmpb.KeyspaceIDValue {
96- Value : keyspaceID ,
97- }
98- }
99- }
100-
10181// resourceManagerClient gets the ResourceManager client of current PD leader.
10282func (c * innerClient ) resourceManagerClient () (rmpb.ResourceManagerClient , error ) {
10383 cc , err := c .getOrCreateGRPCConn ()
@@ -119,7 +99,9 @@ func (c *client) ListResourceGroups(ctx context.Context, ops ...GetResourceGroup
11999 }
120100 req := & rmpb.ListResourceGroupsRequest {
121101 WithRuStats : getOp .withRUStats ,
122- KeyspaceId : getOp .withKeyspaceID ,
102+ KeyspaceId : & rmpb.KeyspaceIDValue {
103+ Value : c .inner .keyspaceID ,
104+ },
123105 }
124106 resp , err := cc .ListResourceGroups (ctx , req )
125107 if err != nil {
@@ -146,7 +128,9 @@ func (c *client) GetResourceGroup(ctx context.Context, resourceGroupName string,
146128 req := & rmpb.GetResourceGroupRequest {
147129 ResourceGroupName : resourceGroupName ,
148130 WithRuStats : getOp .withRUStats ,
149- KeyspaceId : getOp .withKeyspaceID ,
131+ KeyspaceId : & rmpb.KeyspaceIDValue {
132+ Value : c .inner .keyspaceID ,
133+ },
150134 }
151135 resp , err := cc .GetResourceGroup (ctx , req )
152136 if err != nil {
@@ -197,18 +181,16 @@ func (c *client) putResourceGroup(ctx context.Context, metaGroup *rmpb.ResourceG
197181}
198182
199183// DeleteResourceGroup implements the ResourceManagerClient interface.
200- func (c * client ) DeleteResourceGroup (ctx context.Context , resourceGroupName string , ops ... DeleteResourceGroupOption ) (string , error ) {
184+ func (c * client ) DeleteResourceGroup (ctx context.Context , resourceGroupName string ) (string , error ) {
201185 cc , err := c .inner .resourceManagerClient ()
202186 if err != nil {
203187 return "" , err
204188 }
205- deleteOp := & DeleteResourceGroupOp {}
206- for _ , op := range ops {
207- op (deleteOp )
208- }
209189 req := & rmpb.DeleteResourceGroupRequest {
210190 ResourceGroupName : resourceGroupName ,
211- KeyspaceId : deleteOp .withKeyspaceID ,
191+ KeyspaceId : & rmpb.KeyspaceIDValue {
192+ Value : c .inner .keyspaceID ,
193+ },
212194 }
213195 resp , err := cc .DeleteResourceGroup (ctx , req )
214196 if err != nil {
@@ -224,7 +206,8 @@ func (c *client) DeleteResourceGroup(ctx context.Context, resourceGroupName stri
224206
225207// LoadResourceGroups implements the ResourceManagerClient interface.
226208func (c * client ) LoadResourceGroups (ctx context.Context ) ([]* rmpb.ResourceGroup , int64 , error ) {
227- resp , err := c .Get (ctx , GroupSettingsPathPrefixBytes , opt .WithPrefix ())
209+ prefix := GroupSettingsPathPrefixBytes (c .inner .keyspaceID )
210+ resp , err := c .Get (ctx , prefix , opt .WithPrefix ())
228211 if err != nil {
229212 return nil , 0 , err
230213 }
0 commit comments