func()

in pkg/controller/ingress/ingress_controller.go [586:618]


func (r *ReconcileIngress) updateReverseProxy(instance *extensionsv1beta1.Ingress) (*corev1.Service, error) {
	objects := r.buildReverseProxyResources(instance)
	for _, object := range objects {
		if err := controllerutil.SetControllerReference(instance, object, r.scheme); err != nil {
			return nil, err
		}

		runtimeObject := object.(runtime.Object)
		err := r.Get(context.TODO(), k8stypes.NamespacedName{Name: object.GetName(), Namespace: object.GetNamespace()}, runtimeObject)
		switch errors.IsNotFound(err) {
		case true:
			r.log.Info("creating reverse proxy resource", zap.String("gvk", runtimeObject.GetObjectKind().GroupVersionKind().String()), zap.String("name", object.GetName()))
			if err := r.Create(context.TODO(), runtimeObject); err != nil {
				return nil, err
			}
		case false:
			r.log.Info("reverse proxy resource already exists, updating", zap.String("gvk", runtimeObject.GetObjectKind().GroupVersionKind().String()), zap.String("name", object.GetName()))
			if err := r.Update(context.TODO(), runtimeObject); err != nil {
				return nil, err
			}
		}
	}

	r.log.Info("fetching proxy service details")
	svc := &corev1.Service{}
	if err := r.Get(context.TODO(), k8stypes.NamespacedName{Name: createReverseProxyResourceName(instance.Name), Namespace: instance.Namespace}, svc); err != nil {
		r.log.Error("unable to fetch proxy service", zap.Error(err))

		return nil, err
	}

	return svc, nil
}