Skip to content
secret.go 1.22 KiB
Newer Older
package secret

import (
	"github.com/ankitrgadiya/operatorlib/pkg/meta"

	"github.com/imdario/mergo"

	"github.com/pkg/errors"
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)

func Generate(m Mutate) (out corev1.Secret, err error) {

		om, err := meta.MutateObjectMeta(m)

		data, err := m.GenData()
		if err != nil {
			return out, errors.Wrap(err, "failed to generate data")
		}

		//		stringData, err := c.GenStringDataFunc()
		//		if err != nil {
		//			return errors.Wrap(err, "failed to generate string data")
		//		}

		//		data, err = mergeData(data, stringData)
		//		if err != nil {
		//			return errors.Wrap(err, "failed to merge string data and data")
		//		}

		out.ObjectMeta = *om
		out.Data = data
		// out.Type = corev1.SecretType(m.Type())

		return out, err
}

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

	return func() error {
		out, err := Generate(c)
		if err != nil {
			return err
		}

		mergo.Merge(c.Obj, out)

		return nil
	}
}

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

	return obj
}