func (m *NetworkManager) init(args []string) { configFile := m.parseConfig() defer func() { if configFile != nil { configFile.Close() } }() loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() if m.config.KubeConfig != "" { loadingRules.ExplicitPath = m.config.KubeConfig } configOverrides := &clientcmd.ConfigOverrides{} if m.config.KubeUrl != "" { configOverrides.ClusterInfo.Server = m.config.KubeUrl } kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides) config, err := kubeConfig.ClientConfig() if err != nil { glog.Fatal(err) } m.Client, err = client.New(config) if err != nil { glog.Fatalf("Invalid API configuratin: %v", err) } m.Controller = network.NewNetworkFactory().Create(m.Client, args) m.Controller.Init(&m.config, configFile) }
func (m *NetworkManager) start(args []string) { config := &client.Config{ Host: m.config.KubeUrl, } var err error m.Client, err = client.New(config) if err != nil { glog.Fatalf("Invalid API configuratin: %v", err) } m.Controller = network.NewNetworkFactory().Create(m.Client, args) m.PodStore, m.PodInformer = framework.NewInformer( cache.NewListWatchFromClient( m.Client, string(api.ResourcePods), api.NamespaceAll, fields.Everything(), ), &api.Pod{}, m.config.ResyncPeriod, framework.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { m.Controller.AddPod(obj.(*api.Pod)) }, UpdateFunc: func(oldObj, newObj interface{}) { m.Controller.UpdatePod( oldObj.(*api.Pod), newObj.(*api.Pod)) }, DeleteFunc: func(obj interface{}) { if pod, ok := obj.(*api.Pod); ok { m.Controller.DeletePod(pod) } }, }, ) m.NamespaceStore, m.NamespaceInformer = framework.NewInformer( cache.NewListWatchFromClient( m.Client, "namespaces", api.NamespaceAll, fields.Everything(), ), &api.Namespace{}, m.config.ResyncPeriod, framework.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { m.Controller.AddNamespace( obj.(*api.Namespace)) }, UpdateFunc: func(oldObj, newObj interface{}) { m.Controller.UpdateNamespace( oldObj.(*api.Namespace), newObj.(*api.Namespace)) }, DeleteFunc: func(obj interface{}) { if namespace, ok := obj.(*api.Namespace); ok { m.Controller.DeleteNamespace(namespace) } }, }, ) m.RCStore, m.RCInformer = framework.NewInformer( cache.NewListWatchFromClient( m.Client, string(api.ResourceReplicationControllers), api.NamespaceAll, fields.Everything(), ), &api.ReplicationController{}, m.config.ResyncPeriod, framework.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { m.Controller.AddReplicationController( obj.(*api.ReplicationController)) }, UpdateFunc: func(oldObj, newObj interface{}) { m.Controller.UpdateReplicationController( oldObj.(*api.ReplicationController), newObj.(*api.ReplicationController)) }, DeleteFunc: func(obj interface{}) { if rc, ok := obj.(*api.ReplicationController); ok { m.Controller.DeleteReplicationController(rc) } }, }, ) m.ServiceStore, m.ServiceInformer = framework.NewInformer( cache.NewListWatchFromClient( m.Client, string(api.ResourceServices), api.NamespaceAll, fields.Everything(), ), &api.Service{}, m.config.ResyncPeriod, framework.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { m.Controller.AddService( obj.(*api.Service)) }, UpdateFunc: func(oldObj, newObj interface{}) { m.Controller.UpdateService( oldObj.(*api.Service), newObj.(*api.Service)) }, DeleteFunc: func(obj interface{}) { if service, ok := obj.(*api.Service); ok { m.Controller.DeleteService(service) } }, }, ) m.Controller.SetPodStore(m.PodStore) m.Controller.SetNamespaceStore(m.NamespaceStore) m.Controller.SetReplicationControllerStore(m.RCStore) m.Controller.SetServiceStore(m.ServiceStore) }