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.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							811 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							44 lines
						
					
					
						
							811 B
						
					
					
				
								package topology
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"encoding/xml"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								type loc struct {
							 | 
						|
									dcName   string
							 | 
						|
									rackName string
							 | 
						|
								}
							 | 
						|
								type rack struct {
							 | 
						|
									Name string   `xml:"name,attr"`
							 | 
						|
									Ips  []string `xml:"Ip"`
							 | 
						|
								}
							 | 
						|
								type dataCenter struct {
							 | 
						|
									Name  string `xml:"name,attr"`
							 | 
						|
									Racks []rack `xml:"Rack"`
							 | 
						|
								}
							 | 
						|
								type topology struct {
							 | 
						|
									DataCenters []dataCenter `xml:"DataCenter"`
							 | 
						|
								}
							 | 
						|
								type Configuration struct {
							 | 
						|
									XMLName xml.Name `xml:"Configuration"`
							 | 
						|
									Topo    topology `xml:"Topology"`
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func (c *Configuration) String() string {
							 | 
						|
									if b, e := xml.MarshalIndent(c, "  ", "  "); e == nil {
							 | 
						|
										return string(b)
							 | 
						|
									}
							 | 
						|
									return ""
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func (c *Configuration) Locate(ip string, dcName string, rackName string) (dc string, rack string) {
							 | 
						|
									if dcName == "" {
							 | 
						|
										dcName = "DefaultDataCenter"
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									if rackName == "" {
							 | 
						|
										rackName = "DefaultRack"
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									return dcName, rackName
							 | 
						|
								}
							 |