package tools

import (
	"time"

	"github.com/pingcap/schrodinger/manager/operator/proc/k8s"
	"github.com/pingcap/schrodinger/pkg/types"
	"github.com/pingcap/schrodinger/util"
	"k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/api/resource"
)

func appConfigToProc(app *types.APPConfig) *k8s.Proc {
	resource := v1.ResourceRequirements{
		Requests: v1.ResourceList{
			v1.ResourceCPU:    resource.MustParse(app.ResourceRequirement.CPU),
			v1.ResourceMemory: resource.MustParse(app.ResourceRequirement.Memory),
		},
		Limits: v1.ResourceList{
			v1.ResourceCPU:    resource.MustParse(app.ResourceRequirement.CPU),
			v1.ResourceMemory: resource.MustParse(app.ResourceRequirement.Memory),
		},
	}

	p := k8s.New(app.Namespace, app.Name, app.BinaryName, app.Labels, app.URL, app.Args, 0, 0, 400*time.Hour, app.Envs, resource, "")
	p.ProcessName = app.BinaryName
	p.Actions = app.Actions
	if !util.IsEmpty(app.Image) {
		p.SetImage(app.Image)
	}

	return p
}
