func buildRunnerGroupHandlers()

in cmd/kperf/commands/runnergroup/server.go [89:134]


func buildRunnerGroupHandlers(cliCtx *cli.Context, serverName string) ([]*runnergroup.Handler, error) {
	clientset, err := buildKubernetesClientset(cliCtx)
	if err != nil {
		return nil, fmt.Errorf("failed to build kubernetes clientset: %w", err)
	}

	specURIs := cliCtx.StringSlice("runnergroup")
	imgRef := cliCtx.String("runner-image")
	namespace := cliCtx.String("namespace")
	runnerVerbosity := cliCtx.Int("runner-verbosity")

	ownerRef := ""
	if cliCtx.IsSet("runner-owner") {
		ownerRef = cliCtx.String("runner-owner")
	}

	sa := ""
	if cliCtx.IsSet("runner-sa") {
		sa = cliCtx.String("runner-sa")
	}

	groups := make([]*runnergroup.Handler, 0, len(specURIs))
	for idx, specURI := range specURIs {
		spec, err := runnergroup.NewRunnerGroupSpecFromURI(clientset, specURI)
		if err != nil {
			return nil, err
		}

		if ownerRef != "" {
			spec.OwnerReference = &ownerRef
		}

		if sa != "" {
			spec.ServiceAccount = &sa
		}

		groupName := fmt.Sprintf("%s-%d", serverName, idx)
		g, err := runnergroup.NewHandler(clientset, namespace, groupName, spec, imgRef, runnerVerbosity)
		if err != nil {
			return nil, err
		}
		groups = append(groups, g)
	}

	return groups, nil
}