feat(cli): erase proxy cache by filter

. #1000225268

Signed-off-by: slasher <shenjie1@oppo.com>
This commit is contained in:
slasher 2025-07-11 11:13:48 +08:00
parent 3c7f0b429f
commit b959f64536
4 changed files with 40 additions and 11 deletions

View File

@ -18,9 +18,11 @@ import (
"github.com/desertbit/grumble"
"github.com/fatih/color"
"github.com/cubefs/cubefs/blobstore/api/clustermgr"
"github.com/cubefs/cubefs/blobstore/api/proxy"
"github.com/cubefs/cubefs/blobstore/cli/common"
"github.com/cubefs/cubefs/blobstore/cli/common/fmt"
"github.com/cubefs/cubefs/blobstore/cli/config"
"github.com/cubefs/cubefs/blobstore/common/proto"
)
@ -76,9 +78,13 @@ func addCmdCacher(cmd *grumble.Command) {
},
})
cacherCommand.AddCommand(&grumble.Command{
Name: "erase",
Help: "erase cache with key or all",
Flags: proxyFlags,
Name: "erase",
Help: "erase cache with key or all",
Flags: func(f *grumble.Flags) {
proxyFlags(f)
f.Int64L("clusterid", 0, "cluster id")
f.StringL("idc", "", "idc for proxy service, [ALL or xxx]")
},
Args: func(a *grumble.Args) {
a.String("key", "key of diskv [volume-{vid} or disk-{disk_id} or ALL]")
},
@ -87,7 +93,35 @@ func addCmdCacher(cmd *grumble.Command) {
if !common.Confirm("to erase key: " + color.RedString("%s", key)) {
return nil
}
return proxyCli.Erase(common.CmdContext(), c.Flags.String(_host), key)
if host := c.Flags.String(_host); host != "" {
return proxyCli.Erase(common.CmdContext(), host, key)
}
clusterID := proto.ClusterID(c.Flags.Int64("clusterid"))
if clusterID <= 0 {
return fmt.Errorf("setting --clusterid please")
}
cmcli := config.NewCluster(clusterID.ToString(), nil, "")
info, err := cmcli.GetService(common.CmdContext(),
clustermgr.GetServiceArgs{Name: proto.ServiceNameProxy})
if err != nil {
return err
}
idc := c.Flags.String("idc")
hosts := make([]string, 0, len(info.Nodes))
for _, ii := range info.Nodes {
if idc == "ALL" || ii.Idc == idc {
hosts = append(hosts, ii.Host)
}
}
for _, host := range hosts {
fmt.Printf("to erase host:%s key:%s\n", host, key)
if err = proxyCli.Erase(common.CmdContext(), host, key); err != nil {
return err
}
}
return nil
},
})
}

View File

@ -28,11 +28,6 @@ import (
_ "github.com/cubefs/cubefs/blobstore/testing/nolog"
)
// github.com/cubefs/cubefs/blobstore/scheduler/... module scheduler interfaces
//go:generate mockgen -destination=./client_mock_test.go -package=scheduler -mock_names ClusterMgrAPI=MockClusterMgrAPI,BlobnodeAPI=MockBlobnodeAPI,IVolumeUpdater=MockVolumeUpdater,ProxyAPI=MockMqProxyAPI github.com/cubefs/cubefs/blobstore/scheduler/client ClusterMgrAPI,BlobnodeAPI,ProxyAPI,TaskAPI
//go:generate mockgen -destination=./base_mock_test.go -package=scheduler -mock_names KafkaConsumer=MockKafkaConsumer,GroupConsumer=MockGroupConsumer,IProducer=MockProducer github.com/cubefs/cubefs/blobstore/scheduler/base KafkaConsumer,GroupConsumer,IProducer
//go:generate mockgen -destination=./scheduler_mock_test.go -package=scheduler -mock_names ITaskRunner=MockTaskRunner,IVolumeCache=MockVolumeCache,MMigrator=MockMigrater,IVolumeInspector=MockVolumeInspector,IClusterTopology=MockClusterTopology,ShardDiskMigrator=MockShardMigrator github.com/cubefs/cubefs/blobstore/scheduler ITaskRunner,IVolumeCache,MMigrator,IVolumeInspector,IClusterTopology,ShardDiskMigrator
const (
testTopic = "test_topic"
)

View File

@ -45,7 +45,7 @@ package testing
//go:generate mockgen -destination=../blobnode/shard_client_mock_test.go -package=blobnode -mock_names IShardNode=MockIShardNode github.com/cubefs/cubefs/blobstore/blobnode/client IShardNode
// github.com/cubefs/cubefs/blobstore/scheduler/... scheduler interfaces
//go:generate mockgen -destination=../scheduler/client_mock_test.go -package=scheduler -mock_names ClusterMgrAPI=MockClusterMgrAPI,BlobnodeAPI=MockBlobnodeAPI,IVolumeUpdater=MockVolumeUpdater,ProxyAPI=MockMqProxyAPI github.com/cubefs/cubefs/blobstore/scheduler/client ClusterMgrAPI,BlobnodeAPI,IVolumeUpdater,ProxyAPI
//go:generate mockgen -destination=../scheduler/client_mock_test.go -package=scheduler -mock_names ClusterMgrAPI=MockClusterMgrAPI,BlobnodeAPI=MockBlobnodeAPI,ProxyAPI=MockMqProxyAPI,TaskAPI=MockTaskAPI github.com/cubefs/cubefs/blobstore/scheduler/client ClusterMgrAPI,BlobnodeAPI,ProxyAPI,TaskAPI
//go:generate mockgen -destination=../scheduler/base_mock_test.go -package=scheduler -mock_names KafkaConsumer=MockKafkaConsumer,GroupConsumer=MockGroupConsumer,IProducer=MockProducer github.com/cubefs/cubefs/blobstore/scheduler/base KafkaConsumer,GroupConsumer,IProducer
//go:generate mockgen -destination=../scheduler/scheduler_mock_test.go -package=scheduler -mock_names ITaskRunner=MockTaskRunner,IVolumeCache=MockVolumeCache,MMigrator=MockMigrater,IVolumeInspector=MockVolumeInspector,IClusterTopology=MockClusterTopology,ShardDiskMigrator=MockShardMigrator github.com/cubefs/cubefs/blobstore/scheduler ITaskRunner,IVolumeCache,MMigrator,IVolumeInspector,IClusterTopology,ShardDiskMigrator
//go:generate mockgen -destination=../scheduler/base/utils_mock_test.go -package=base -mock_names IAllocVunit=MockAllocVunit github.com/cubefs/cubefs/blobstore/scheduler/base IAllocVunit

2
go.mod
View File

@ -51,7 +51,6 @@ require (
golang.org/x/sync v0.7.0
golang.org/x/sys v0.20.0
golang.org/x/time v0.3.0
google.golang.org/grpc v1.57.0
gopkg.in/bsm/ratelimit.v1 v1.0.0-20170922094635-f56db5e73a5e
gopkg.in/go-playground/validator.v9 v9.31.0
gopkg.in/natefinch/lumberjack.v2 v2.0.0
@ -123,6 +122,7 @@ require (
golang.org/x/crypto v0.23.0 // indirect
golang.org/x/text v0.15.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect
google.golang.org/grpc v1.57.0 // indirect
google.golang.org/protobuf v1.34.1 // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect