func ProbeNetworkProviders(remoteAddr string) error { conn, err := grpc.Dial(remoteAddr, grpc.WithInsecure()) if err != nil { glog.Errorf("Connect network provider %s failed: %v", remoteAddr, err) return err } networkClient := types.NewNetworksClient(conn) podClient := types.NewPodsClient(conn) lbClient := types.NewLoadBalancersClient(conn) resp, err := networkClient.Active( context.Background(), &types.ActiveRequest{}, ) if err != nil || !resp.Result { glog.Errorf("Active network provider %s failed: %v", remoteAddr, err) return err } networkprovider.RegisterNetworkProvider(remoteAddr, func() (networkprovider.Interface, error) { return &RemoteProvider{ server: remoteAddr, podClient: podClient, loadbalancerClient: lbClient, networkClient: networkClient, }, nil }) return nil }
func ProbeNetworkProviders() { files, _ := ioutil.ReadDir(PluginsPath) for _, f := range files { // only treat .sock/.spec as plugins if !f.IsDir() { if strings.HasSuffix(f.Name(), ".sock") || strings.HasSuffix(f.Name(), ".spec") { pluginName := f.Name()[:len(f.Name())-5] networkprovider.RegisterNetworkProvider(pluginName, func() (networkprovider.Interface, error) { plugin, err := GetPlugin(pluginName) if err != nil { glog.Warningf("Initialize network provider %s failed: %v", pluginName, err) return nil, err } else { glog.V(4).Infof("Network provider %s initialized", pluginName) } return plugin, nil }) } } } }