func()

in pkg/cloudprovider/vsphereparavirtual/cloud.go [94:157]


func (cp *VSphereParavirtual) Initialize(clientBuilder cloudprovider.ControllerClientBuilder, stop <-chan struct{}) {
	klog.V(0).Info("Initing vSphere Paravirtual Cloud Provider")

	ownerRef, err := readOwnerRef(VsphereParavirtualCloudProviderConfigPath)
	if err != nil {
		klog.Fatalf("Failed to read ownerRef:%s", err)
	}

	client, err := clientBuilder.Client(clientName)
	if err != nil {
		klog.Fatalf("Failed to create cloud provider client: %v", err)
	}

	cp.client = client
	cp.informMgr = k8s.NewInformer(client, true)
	cp.ownerReference = ownerRef

	kcfg, err := getRestConfig(SupervisorClusterConfigPath)
	if err != nil {
		klog.Fatalf("Failed to create rest config to communicate with supervisor: %v", err)
	}

	clusterNS, err := getNameSpace(SupervisorClusterConfigPath)
	if err != nil {
		klog.Fatalf("Failed to get cluster namespace: %v", err)
	}

	routes, err := NewRoutes(clusterNS, kcfg, *cp.ownerReference)
	if err != nil {
		klog.Errorf("Failed to init Route: %v", err)
	}
	cp.routes = routes

	cp.informMgr.AddNodeListener(cp.nodeAdded, cp.nodeDeleted, nil)

	lb, err := NewLoadBalancer(clusterNS, kcfg, cp.ownerReference)
	if err != nil {
		klog.Errorf("Failed to init LoadBalancer: %v", err)
	}
	cp.loadBalancer = lb

	instances, err := NewInstances(clusterNS, kcfg)
	if err != nil {
		klog.Errorf("Failed to init Instance: %v", err)
	}
	cp.instances = instances

	if RouteEnabled {
		klog.V(0).Info("Starting routable pod controllers")

		if err := routablepod.StartControllers(kcfg, client, cp.informMgr, ClusterName, clusterNS, ownerRef); err != nil {
			klog.Errorf("Failed to start Routable pod controllers: %v", err)
		}
	}

	zones, err := NewZones(clusterNS, kcfg)
	if err != nil {
		klog.Errorf("Failed to init Zones: %v", err)
	}
	cp.zones = zones

	cp.informMgr.Listen()
	klog.V(0).Info("Initing vSphere Paravirtual Cloud Provider Succeeded")
}