func SetUpExecService()

in clusterloader2/pkg/execservice/exec_service.go [75:118]


func SetUpExecService(f *framework.Framework, c config.ExecServiceConfig) error {
	var err error
	lock.Lock()
	defer lock.Unlock()
	if podStore != nil {
		klog.V(3).Infof("%s: service already running!", execServiceName)
	}
	klog.V(2).Infof("%v: setting up service!", execServiceName)
	mapping := make(map[string]interface{})
	mapping["Name"] = execDeploymentName
	mapping["Namespace"] = execDeploymentNamespace
	mapping["Replicas"] = execPodReplicas
	if err = client.CreateNamespace(f.GetClientSets().GetClient(), execDeploymentNamespace); err != nil {
		return fmt.Errorf("namespace %s creation error: %v", execDeploymentNamespace, err)
	}
	if err = f.ApplyTemplatedManifests(
		c.DeploymentYaml,
		mapping,
		client.Retry(apierrs.IsNotFound)); err != nil {
		return fmt.Errorf("pod %s creation error: %v", execDeploymentName, err)
	}

	ctx, cancel := context.WithTimeout(context.TODO(), execPodCheckTimeout)
	defer cancel()
	selector := &util.ObjectSelector{
		Namespace:     execDeploymentNamespace,
		LabelSelector: execPodSelector,
		FieldSelector: "",
	}
	options := &measurementutil.WaitForPodOptions{
		DesiredPodCount:     func() int { return execPodReplicas },
		CallerName:          execServiceName,
		WaitForPodsInterval: execPodCheckInterval,
	}
	podStore, err = measurementutil.NewPodStore(f.GetClientSets().GetClient(), selector)
	if err != nil {
		return fmt.Errorf("pod store creation error: %v", err)
	}
	if err = measurementutil.WaitForPods(ctx, podStore, options); err != nil {
		return err
	}
	klog.V(2).Infof("%v: service set up successfully!", execServiceName)
	return nil
}