소스 검색

case on GH API for 404s and let FE know

Mohammed Nafees 4 년 전
부모
커밋
fa9f1006b7

+ 6 - 1
api/server/handlers/environment/enable_pull_request.go

@@ -47,7 +47,7 @@ func (c *EnablePullRequestHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
 		return
 	}
 
-	_, err = client.Actions.CreateWorkflowDispatchEventByFileName(
+	ghResp, err := client.Actions.CreateWorkflowDispatchEventByFileName(
 		r.Context(), env.GitRepoOwner, env.GitRepoName, fmt.Sprintf("porter_%s_env.yml", env.Name),
 		github.CreateWorkflowDispatchEventRequest{
 			Ref: request.BranchFrom,
@@ -60,6 +60,11 @@ func (c *EnablePullRequestHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
 		},
 	)
 
+	if ghResp.StatusCode == 404 {
+		c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(fmt.Errorf("workflow file not found"), 404))
+		return
+	}
+
 	if err != nil {
 		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 		return

+ 7 - 3
api/server/handlers/environment/list_deployments_by_cluster.go

@@ -115,7 +115,7 @@ func populateOpenPullRequests(
 		return nil, err
 	}
 
-	openPRs, _, err := client.PullRequests.List(ctx, env.GitRepoOwner, env.GitRepoName,
+	openPRs, resp, err := client.PullRequests.List(ctx, env.GitRepoOwner, env.GitRepoName,
 		&github.PullRequestListOptions{
 			ListOptions: github.ListOptions{
 				PerPage: 50,
@@ -123,12 +123,16 @@ func populateOpenPullRequests(
 		},
 	)
 
+	var prs []*types.PullRequest
+
+	if resp.StatusCode == 404 {
+		return prs, nil
+	}
+
 	if err != nil {
 		return nil, err
 	}
 
-	var prs []*types.PullRequest
-
 	for _, pr := range openPRs {
 		prs = append(prs, &types.PullRequest{
 			Title:      pr.GetTitle(),

+ 6 - 1
api/server/handlers/environment/reenable_deployment.go

@@ -64,7 +64,7 @@ func (c *ReenableDeploymentHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
 		return
 	}
 
-	_, err = client.Actions.CreateWorkflowDispatchEventByFileName(
+	ghResp, err := client.Actions.CreateWorkflowDispatchEventByFileName(
 		r.Context(), env.GitRepoOwner, env.GitRepoName, fmt.Sprintf("porter_%s_env.yml", env.Name),
 		github.CreateWorkflowDispatchEventRequest{
 			Ref: depl.PRBranchFrom,
@@ -77,6 +77,11 @@ func (c *ReenableDeploymentHandler) ServeHTTP(w http.ResponseWriter, r *http.Req
 		},
 	)
 
+	if ghResp.StatusCode == 404 {
+		c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(fmt.Errorf("workflow file not found"), 404))
+		return
+	}
+
 	if err != nil {
 		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 		return