github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/edgemesh/pkg/common/utils.go (about) 1 package common 2 3 import ( 4 "fmt" 5 "net" 6 "os" 7 "strings" 8 9 "github.com/go-chassis/go-chassis/core/common" 10 ) 11 12 func SplitServiceKey(key string) (name, namespace string) { 13 sets := strings.Split(key, ".") 14 if len(sets) >= 2 { 15 return sets[0], sets[1] 16 } 17 18 ns := os.Getenv("POD_NAMESPACE") 19 if ns == "" { 20 ns = common.DefaultValue 21 } 22 if len(sets) == 1 { 23 return sets[0], ns 24 } 25 return key, ns 26 } 27 28 func GetInterfaceIP(name string) (net.IP, error) { 29 ifi, err := net.InterfaceByName(name) 30 if err != nil { 31 return nil, err 32 } 33 addrs, _ := ifi.Addrs() 34 for _, addr := range addrs { 35 if ip, ipn, _ := net.ParseCIDR(addr.String()); len(ipn.Mask) == 4 { 36 return ip, nil 37 } 38 } 39 return nil, fmt.Errorf("no ip of version 4 found for interface %s", name) 40 }