Chris Lu
12 years ago
7 changed files with 109 additions and 18 deletions
-
1weed-fs/note/replication.txt
-
16weed-fs/src/pkg/admin/storage.go
-
37weed-fs/src/pkg/topology/data_center.go
-
6weed-fs/src/pkg/topology/data_node.go
-
10weed-fs/src/pkg/topology/ip_range.go
-
25weed-fs/src/pkg/topology/rack.go
-
32weed-fs/src/pkg/topology/topology.go
@ -1,16 +1,35 @@ |
|||
package topology |
|||
|
|||
import ( |
|||
) |
|||
import () |
|||
|
|||
type DataCenter struct { |
|||
NodeImpl |
|||
ipRange IpRange |
|||
ipRange *IpRange |
|||
} |
|||
func NewDataCenter(id string) *DataCenter{ |
|||
dc := &DataCenter{} |
|||
dc.id = NodeId(id) |
|||
dc.nodeType = "DataCenter" |
|||
dc.children = make(map[NodeId]Node) |
|||
return dc |
|||
|
|||
func NewDataCenter(id string) *DataCenter { |
|||
dc := &DataCenter{} |
|||
dc.id = NodeId(id) |
|||
dc.nodeType = "DataCenter" |
|||
dc.children = make(map[NodeId]Node) |
|||
return dc |
|||
} |
|||
|
|||
func (dc *DataCenter) MatchLocationRange(ip string) bool { |
|||
if dc.ipRange == nil { |
|||
return true |
|||
} |
|||
return dc.ipRange.Match(ip) |
|||
} |
|||
|
|||
func (dc *DataCenter) GetOrCreateRack(ip string) *Rack { |
|||
for _, c := range dc.Children() { |
|||
rack := c.(*Rack) |
|||
if rack.MatchLocationRange(ip) { |
|||
return rack |
|||
} |
|||
} |
|||
rack := NewRack("DefaultRack") |
|||
dc.LinkChildNode(rack) |
|||
return rack |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue