aboutsummaryrefslogtreecommitdiff
path: root/weed/server/master_server_cluster.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-11-02 23:38:45 -0700
committerChris Lu <chris.lu@gmail.com>2021-11-02 23:38:45 -0700
commit5160eb08f7665409221ebb0b9db6f4820e29bed3 (patch)
treef63464dd23ee0742bd96afe52826b477a775dc5e /weed/server/master_server_cluster.go
parent18bfbf62fcc64be380293ce797ab23f785c01760 (diff)
downloadseaweedfs-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.go70
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
+}