Skip to content
deployment.go 1.31 KiB
Newer Older
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed
package deployment

import (
	"fmt"

	"github.com/ankitrgadiya/operatorlib/pkg/meta"
	"github.com/ankitrgadiya/operatorlib/pkg/pod"
	"github.com/imdario/mergo"
	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed

	"github.com/pkg/errors"
	appsv1 "k8s.io/api/apps/v1"
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func Generate(m Mutate) (out appsv1.Deployment, err error) {
	om, err := meta.MutateObjectMeta(m)
	if err != nil {
		return out, errors.Wrap(err, "failed to generate objectmeta")
	}
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed

	child, err := pod.Generate(m)
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed

	if err != nil {
		return out, errors.Wrap(err, "failed to generate job template spec")
	}
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed

	out.ObjectMeta = *om
	out.Spec = appsv1.DeploymentSpec{
		//	Replicas:           c.Size,
		//	Strategy: c.Strategy,
		Selector: metav1.SetAsLabelSelector(om.Labels),
		Template: corev1.PodTemplateSpec{
			ObjectMeta: *om,
			Spec:       child.Spec,
		},
	}
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed

Timothee Gosselin's avatar
WIP
Timothee Gosselin committed

func (c Conf) Mutate() controllerutil.MutateFn {
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed

	return func() error {
		out, err := Generate(c)
		fmt.Println(out)
		if err != nil {
			return err
		mergo.Merge(c.Obj, out)
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed
}

func (c Conf) MakeObject() *appsv1.Deployment {
	obj := &appsv1.Deployment{
		ObjectMeta: metav1.ObjectMeta{
			Name:      c.ObjectName(),
			Namespace: c.ObjectNamespace(),
Timothee Gosselin's avatar
WIP
Timothee Gosselin committed
		},
	}

	return obj
}