You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							802 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							40 lines
						
					
					
						
							802 B
						
					
					
				| package topology | |
| 
 | |
| type DataCenter struct { | |
| 	NodeImpl | |
| } | |
| 
 | |
| func NewDataCenter(id string) *DataCenter { | |
| 	dc := &DataCenter{} | |
| 	dc.id = NodeId(id) | |
| 	dc.nodeType = "DataCenter" | |
| 	dc.children = make(map[NodeId]Node) | |
| 	dc.NodeImpl.value = dc | |
| 	return dc | |
| } | |
| 
 | |
| func (dc *DataCenter) GetOrCreateRack(rackName string) *Rack { | |
| 	for _, c := range dc.Children() { | |
| 		rack := c.(*Rack) | |
| 		if string(rack.Id()) == rackName { | |
| 			return rack | |
| 		} | |
| 	} | |
| 	rack := NewRack(rackName) | |
| 	dc.LinkChildNode(rack) | |
| 	return rack | |
| } | |
| 
 | |
| func (dc *DataCenter) ToMap() interface{} { | |
| 	m := make(map[string]interface{}) | |
| 	m["Id"] = dc.Id() | |
| 	m["Max"] = dc.GetMaxVolumeCount() | |
| 	m["Free"] = dc.FreeSpace() | |
| 	var racks []interface{} | |
| 	for _, c := range dc.Children() { | |
| 		rack := c.(*Rack) | |
| 		racks = append(racks, rack.ToMap()) | |
| 	} | |
| 	m["Racks"] = racks | |
| 	return m | |
| }
 |