Browse Source

return 404 on controllers

Alexander Belanger 4 years ago
parent
commit
08f760c14c
2 changed files with 29 additions and 7 deletions
  1. 9 1
      api/server/handlers/release/get_controllers.go
  2. 20 6
      internal/kubernetes/agent.go

+ 9 - 1
api/server/handlers/release/get_controllers.go

@@ -1,6 +1,7 @@
 package release
 
 import (
+	"errors"
 	"fmt"
 	"net/http"
 	"strings"
@@ -54,7 +55,14 @@ func (c *GetControllersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
 		controller.Namespace = helmRelease.Namespace
 		rc, _, err := getController(controller, agent)
 
-		if err != nil {
+		if targetErr := kubernetes.IsNotFoundError; errors.Is(err, targetErr) {
+			c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(
+				fmt.Errorf("%s/%s of kind %s was not found", controller.Namespace, controller.Name, controller.Kind),
+				http.StatusNotFound,
+			))
+
+			return
+		} else if err != nil {
 			c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 			return
 		}

+ 20 - 6
internal/kubernetes/agent.go

@@ -357,6 +357,8 @@ func (a *Agent) GetIngress(namespace string, name string) (*v1beta1.Ingress, err
 	)
 }
 
+var IsNotFoundError = fmt.Errorf("not found")
+
 // GetDeployment gets the deployment given the name and namespace
 func (a *Agent) GetDeployment(c grapher.Object) (*appsv1.Deployment, error) {
 	res, err := a.Clientset.AppsV1().Deployments(c.Namespace).Get(
@@ -365,7 +367,9 @@ func (a *Agent) GetDeployment(c grapher.Object) (*appsv1.Deployment, error) {
 		metav1.GetOptions{},
 	)
 
-	if err != nil {
+	if err != nil && errors.IsNotFound(err) {
+		return nil, IsNotFoundError
+	} else if err != nil {
 		return nil, err
 	}
 
@@ -382,7 +386,9 @@ func (a *Agent) GetStatefulSet(c grapher.Object) (*appsv1.StatefulSet, error) {
 		metav1.GetOptions{},
 	)
 
-	if err != nil {
+	if err != nil && errors.IsNotFound(err) {
+		return nil, IsNotFoundError
+	} else if err != nil {
 		return nil, err
 	}
 
@@ -399,7 +405,9 @@ func (a *Agent) GetReplicaSet(c grapher.Object) (*appsv1.ReplicaSet, error) {
 		metav1.GetOptions{},
 	)
 
-	if err != nil {
+	if err != nil && errors.IsNotFound(err) {
+		return nil, IsNotFoundError
+	} else if err != nil {
 		return nil, err
 	}
 
@@ -416,7 +424,9 @@ func (a *Agent) GetDaemonSet(c grapher.Object) (*appsv1.DaemonSet, error) {
 		metav1.GetOptions{},
 	)
 
-	if err != nil {
+	if err != nil && errors.IsNotFound(err) {
+		return nil, IsNotFoundError
+	} else if err != nil {
 		return nil, err
 	}
 
@@ -433,7 +443,9 @@ func (a *Agent) GetJob(c grapher.Object) (*batchv1.Job, error) {
 		metav1.GetOptions{},
 	)
 
-	if err != nil {
+	if err != nil && errors.IsNotFound(err) {
+		return nil, IsNotFoundError
+	} else if err != nil {
 		return nil, err
 	}
 
@@ -450,7 +462,9 @@ func (a *Agent) GetCronJob(c grapher.Object) (*batchv1beta1.CronJob, error) {
 		metav1.GetOptions{},
 	)
 
-	if err != nil {
+	if err != nil && errors.IsNotFound(err) {
+		return nil, IsNotFoundError
+	} else if err != nil {
 		return nil, err
 	}