package ingress import ( "fmt" "github.com/ankitrgadiya/operatorlib/pkg/meta" "github.com/imdario/mergo" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "github.com/pkg/errors" networkingv1beta1 "k8s.io/api/networking/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func Generate(m Mutate) (out networkingv1beta1.Ingress, err error) { om, err := meta.MutateObjectMeta(m) tls, err := m.GenIngressTLS() if err != nil { return out, errors.Wrap(err, "failed to generate ingress tls spec") } rules, err := m.GenIngressRules() if err != nil { return out, errors.Wrap(err, "failed to generate ingress rules spec") } out.ObjectMeta = *om out.Spec = networkingv1beta1.IngressSpec{ // Backend: backend, TLS: tls, Rules: rules, } return out, err } func (c Conf) Mutate() controllerutil.MutateFn { return func() error { out, err := Generate(c) fmt.Println(out) if err != nil { return err } mergo.Merge(c.Obj, out) return nil } } func (c Conf) MakeObject() *networkingv1beta1.Ingress { obj := &networkingv1beta1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Name: c.ObjectName(), Namespace: c.ObjectNamespace(), }, } return obj }