func deployWarmupVirtualNodepool()

in contrib/cmd/runkperf/commands/warmup/command.go [198:231]


func deployWarmupVirtualNodepool(ctx context.Context, kubeCfgPath string, isEKS bool, nodeAffinity string) (func() error, error) {
	target := "warmup"

	infoLogger := log.GetLogger(ctx).WithKeyValues("level", "info")
	warnLogger := log.GetLogger(ctx).WithKeyValues("level", "warn")

	infoLogger.LogKV("msg", "deploying virtual nodepool", "name", target)

	kr := utils.NewKperfRunner(kubeCfgPath, "")

	sharedProviderID := ""
	var err error

	if isEKS {
		sharedProviderID, err = utils.FetchNodeProviderIDByType(ctx, kubeCfgPath, utils.EKSIdleNodepoolInstanceType)
		if err != nil {
			return nil, fmt.Errorf("failed to get placeholder providerID: %w", err)
		}
	}

	infoLogger.LogKV("msg", "trying to delete", "nodepool", target)
	if err = kr.DeleteNodepool(ctx, 0, target); err != nil {
		warnLogger.LogKV("msg", "failed to delete", "nodepool", target, "error", err)
	}

	err = kr.NewNodepool(ctx, 0, target, 100, 32, 96, 110, nodeAffinity, sharedProviderID)
	if err != nil {
		return nil, fmt.Errorf("failed to create nodepool %s: %w", target, err)
	}

	return func() error {
		return kr.DeleteNodepool(ctx, 0, target)
	}, nil
}