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  }