mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
feat(cli): erase proxy cache by filter
. #1000225268 Signed-off-by: slasher <shenjie1@oppo.com>
This commit is contained in:
parent
3c7f0b429f
commit
b959f64536
@ -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
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@ -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"
|
||||
)
|
||||
|
||||
@ -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
2
go.mod
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user