Просмотр исходного кода

return 404 on ingress not found

Alexander Belanger 4 лет назад
Родитель
Сommit
9db5e4cc1a
2 измененных файлов с 20 добавлено и 2 удалено
  1. 11 1
      api/server/handlers/namespace/get_ingress.go
  2. 9 1
      internal/kubernetes/agent.go

+ 11 - 1
api/server/handlers/namespace/get_ingress.go

@@ -1,6 +1,8 @@
 package namespace
 
 import (
+	"errors"
+	"fmt"
 	"net/http"
 
 	"github.com/porter-dev/porter/api/server/authz"
@@ -10,6 +12,7 @@ import (
 	"github.com/porter-dev/porter/api/server/shared/config"
 	"github.com/porter-dev/porter/api/server/shared/requestutils"
 	"github.com/porter-dev/porter/api/types"
+	"github.com/porter-dev/porter/internal/kubernetes"
 	"github.com/porter-dev/porter/internal/models"
 )
 
@@ -41,7 +44,14 @@ func (c *GetIngressHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 
 	ingress, err := agent.GetIngress(namespace, name)
 
-	if err != nil {
+	if targetErr := kubernetes.IsNotFoundError; errors.Is(err, targetErr) {
+		c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(
+			fmt.Errorf("ingress %s/%s was not found", namespace, name),
+			http.StatusNotFound,
+		))
+
+		return
+	} else if err != nil {
 		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 		return
 	}

+ 9 - 1
internal/kubernetes/agent.go

@@ -350,11 +350,19 @@ func (a *Agent) GetJobPods(namespace, jobName string) ([]v1.Pod, error) {
 
 // GetIngress gets ingress given the name and namespace
 func (a *Agent) GetIngress(namespace string, name string) (*v1beta1.Ingress, error) {
-	return a.Clientset.ExtensionsV1beta1().Ingresses(namespace).Get(
+	resp, err := a.Clientset.ExtensionsV1beta1().Ingresses(namespace).Get(
 		context.TODO(),
 		name,
 		metav1.GetOptions{},
 	)
+
+	if err != nil && errors.IsNotFound(err) {
+		return nil, IsNotFoundError
+	} else if err != nil {
+		return nil, err
+	}
+
+	return resp, nil
 }
 
 var IsNotFoundError = fmt.Errorf("not found")