Skip to content
pvc.go 1.02 KiB
Newer Older
Timothee Gosselin's avatar
Timothee Gosselin committed
package pvc

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

	"github.com/pkg/errors"
	corev1 "k8s.io/api/core/v1"
)

func Generate(m Mutate) (out corev1.PersistentVolumeClaim, err error) {
	om, err := meta.MutateObjectMeta(m)
Timothee Gosselin's avatar
Timothee Gosselin committed

	if err != nil {
		return out, errors.Wrap(err, "failed to generate objectmeta")
Timothee Gosselin's avatar
Timothee Gosselin committed
	}
	accessModes, err := m.GenAccessModes()
	if err != nil {
		return out, errors.Wrap(err, "failed to generate pvc accessmodes")
Timothee Gosselin's avatar
Timothee Gosselin committed
	}
	resources, err := m.GenResources()
	if err != nil {
		return out, errors.Wrap(err, "failed to generate pvc accessmodes")
Timothee Gosselin's avatar
Timothee Gosselin committed
	}

	out.ObjectMeta = *om
Timothee Gosselin's avatar
Timothee Gosselin committed

	out.Spec = corev1.PersistentVolumeClaimSpec{
		AccessModes: accessModes,
		Resources:   resources,
		//	StorageClassName: c.StorageClassName,
Timothee Gosselin's avatar
Timothee Gosselin committed
	}

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

	return func() error {
		out, err := Generate(c)
		if err != nil {
Timothee Gosselin's avatar
Timothee Gosselin committed

		mergo.Merge(c.Obj, out)
Timothee Gosselin's avatar
Timothee Gosselin committed

Timothee Gosselin's avatar
Timothee Gosselin committed
}