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
}