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

Merge pull request #2148 from porter-dev/belanger/fix-stack-delete-handler

Fix stack delete edge case with no revision
abelanger5 3 лет назад
Родитель
Сommit
da60e06a4e
1 измененных файлов с 19 добавлено и 17 удалено
  1. 19 17
      api/server/handlers/stack/delete.go

+ 19 - 17
api/server/handlers/stack/delete.go

@@ -32,29 +32,31 @@ func (p *StackDeleteHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	cluster, _ := r.Context().Value(types.ClusterScope).(*models.Cluster)
 	cluster, _ := r.Context().Value(types.ClusterScope).(*models.Cluster)
 	namespace, _ := r.Context().Value(types.NamespaceScope).(string)
 	namespace, _ := r.Context().Value(types.NamespaceScope).(string)
 
 
-	revision, err := p.Repo().Stack().ReadStackRevisionByNumber(stack.ID, stack.Revisions[0].ID)
+	if len(stack.Revisions) > 0 {
+		revision, err := p.Repo().Stack().ReadStackRevisionByNumber(stack.ID, stack.Revisions[0].ID)
 
 
-	if err != nil {
-		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
-		return
-	}
+		if err != nil {
+			p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+			return
+		}
 
 
-	helmAgent, err := p.GetHelmAgent(r, cluster, namespace)
+		helmAgent, err := p.GetHelmAgent(r, cluster, namespace)
 
 
-	if err != nil {
-		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
-		return
-	}
+		if err != nil {
+			p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+			return
+		}
 
 
-	// delete all resources in stack
-	for _, appResource := range revision.Resources {
-		deleteAppResource(&deleteAppResourceOpts{
-			helmAgent: helmAgent,
-			name:      appResource.Name,
-		})
+		// delete all resources in stack
+		for _, appResource := range revision.Resources {
+			deleteAppResource(&deleteAppResourceOpts{
+				helmAgent: helmAgent,
+				name:      appResource.Name,
+			})
+		}
 	}
 	}
 
 
-	stack, err = p.Repo().Stack().DeleteStack(stack)
+	stack, err := p.Repo().Stack().DeleteStack(stack)
 
 
 	if err != nil {
 	if err != nil {
 		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))