Skip to content
configmap.go 1.13 KiB
Newer Older
Timothee Gosselin's avatar
Timothee Gosselin committed
package configmap

import (
	"github.com/ankitrgadiya/operatorlib/pkg/meta"
	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"

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

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

	data, err := m.GenData()
	if err != nil {
		return out, errors.Wrap(err, "failed to generate configmap data")
	}
Timothee Gosselin's avatar
Timothee Gosselin committed

	binData, err := m.GenBinaryData()
	if err != nil {
		return out, errors.Wrap(err, "failed to generate configmap binary data")
	}
Timothee Gosselin's avatar
Timothee Gosselin committed

	out.ObjectMeta = *om
	out.Data = data
	out.BinaryData = binData
Timothee Gosselin's avatar
Timothee Gosselin committed

Timothee Gosselin's avatar
Timothee Gosselin committed

}

func (c Conf) Mutate() controllerutil.MutateFn {

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

Timothee Gosselin's avatar
Timothee Gosselin committed
	}
}

func (c Conf) MakeObject() *corev1.ConfigMap {
	obj := &corev1.ConfigMap{
		ObjectMeta: metav1.ObjectMeta{
			Name:      c.ObjectName(),
			Namespace: c.ObjectNamespace(),
		},
	}

	return obj
}