diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-11-02 23:38:45 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-11-02 23:38:45 -0700 |
| commit | 5160eb08f7665409221ebb0b9db6f4820e29bed3 (patch) | |
| tree | f63464dd23ee0742bd96afe52826b477a775dc5e /weed/server/master_server_cluster.go | |
| parent | 18bfbf62fcc64be380293ce797ab23f785c01760 (diff) | |
| download | seaweedfs-5160eb08f7665409221ebb0b9db6f4820e29bed3.tar.xz seaweedfs-5160eb08f7665409221ebb0b9db6f4820e29bed3.zip | |
shell: optionally read filer address from master
Diffstat (limited to 'weed/server/master_server_cluster.go')
| -rw-r--r-- | weed/server/master_server_cluster.go | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/weed/server/master_server_cluster.go b/weed/server/master_server_cluster.go new file mode 100644 index 000000000..52e1526f9 --- /dev/null +++ b/weed/server/master_server_cluster.go @@ -0,0 +1,70 @@ +package weed_server + +import ( + "github.com/chrislusf/seaweedfs/weed/pb" + "sync" +) + +type NodeType int + +const ( + filerNodeType NodeType = iota +) + +type ClusterNode struct { + address pb.ServerAddress + version string +} + +type Cluster struct { + filers map[pb.ServerAddress]*ClusterNode + filersLock sync.RWMutex +} + +func NewCluster() *Cluster { + return &Cluster{ + filers: make(map[pb.ServerAddress]*ClusterNode), + } +} + +func (cluster *Cluster) AddClusterNode(nodeType string, address pb.ServerAddress, version string) { + switch nodeType { + case "filer": + cluster.filersLock.Lock() + defer cluster.filersLock.Unlock() + if _, found := cluster.filers[address]; found { + return + } + cluster.filers[address] = &ClusterNode{ + address: address, + version: version, + } + case "master": + } +} + +func (cluster *Cluster) RemoveClusterNode(nodeType string, address pb.ServerAddress) { + switch nodeType { + case "filer": + cluster.filersLock.Lock() + defer cluster.filersLock.Unlock() + if _, found := cluster.filers[address]; !found { + return + } + delete(cluster.filers, address) + case "master": + } +} + +func (cluster *Cluster) ListClusterNode(nodeType string) (nodes []*ClusterNode){ + switch nodeType { + case "filer": + cluster.filersLock.RLock() + defer cluster.filersLock.RUnlock() + for _, node := range cluster.filers { + nodes = append(nodes, node) + } + case "master": + } + return +} |
