|
|
@@ -56,74 +56,75 @@ func (p *StackRemoveEnvGroupHandler) ServeHTTP(w http.ResponseWriter, r *http.Re
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- k8sAgent, err := p.GetAgent(r, cluster, "")
|
|
|
+ newSourceConfigs, err := stacks.CloneSourceConfigs(revision.SourceConfigs)
|
|
|
|
|
|
if err != nil {
|
|
|
p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- envGroupDeleted := false
|
|
|
-
|
|
|
- for _, envGroup := range revision.EnvGroups {
|
|
|
- if envGroup.Name == envGroupName {
|
|
|
- err := envgroup.DeleteEnvGroup(k8sAgent, envGroup.Name, envGroup.Namespace)
|
|
|
+ appResources, err := stacks.CloneAppResources(revision.Resources, revision.SourceConfigs, newSourceConfigs)
|
|
|
|
|
|
- if err != nil {
|
|
|
- p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
- return
|
|
|
- }
|
|
|
+ if err != nil {
|
|
|
+ p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- envGroupDeleted = true
|
|
|
+ envGroups, err := stacks.CloneEnvGroups(revision.EnvGroups)
|
|
|
|
|
|
- break
|
|
|
- }
|
|
|
+ if err != nil {
|
|
|
+ p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- if envGroupDeleted {
|
|
|
- newSourceConfigs, err := stacks.CloneSourceConfigs(revision.SourceConfigs)
|
|
|
+ var newEnvGroups []models.StackEnvGroup
|
|
|
+ var envGroupNS string
|
|
|
|
|
|
- if err != nil {
|
|
|
- p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
- return
|
|
|
+ for _, envGroup := range envGroups {
|
|
|
+ if envGroup.Name != envGroupName {
|
|
|
+ newEnvGroups = append(newEnvGroups, envGroup)
|
|
|
+ } else {
|
|
|
+ envGroupNS = envGroup.Namespace
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- appResources, err := stacks.CloneAppResources(revision.Resources, revision.SourceConfigs, newSourceConfigs)
|
|
|
+ newRevision := &models.StackRevision{
|
|
|
+ StackID: stack.ID,
|
|
|
+ RevisionNumber: revision.RevisionNumber + 1,
|
|
|
+ Status: string(types.StackRevisionStatusDeploying),
|
|
|
+ SourceConfigs: newSourceConfigs,
|
|
|
+ Resources: appResources,
|
|
|
+ EnvGroups: newEnvGroups,
|
|
|
+ }
|
|
|
|
|
|
- if err != nil {
|
|
|
- p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
- return
|
|
|
- }
|
|
|
+ revision, err = p.Repo().Stack().AppendNewRevision(newRevision)
|
|
|
|
|
|
- envGroups, err := stacks.CloneEnvGroups(revision.EnvGroups)
|
|
|
+ if err != nil {
|
|
|
+ p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- if err != nil {
|
|
|
- p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
- return
|
|
|
- }
|
|
|
+ k8sAgent, err := p.GetAgent(r, cluster, "")
|
|
|
|
|
|
- var newEnvGroups []models.StackEnvGroup
|
|
|
+ if err != nil {
|
|
|
+ p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- for _, envGroup := range envGroups {
|
|
|
- if envGroup.Name != envGroupName {
|
|
|
- newEnvGroups = append(newEnvGroups, envGroup)
|
|
|
- }
|
|
|
- }
|
|
|
+ err = envgroup.DeleteEnvGroup(k8sAgent, envGroupName, envGroupNS)
|
|
|
|
|
|
- newRevision := &models.StackRevision{
|
|
|
- StackID: stack.ID,
|
|
|
- RevisionNumber: revision.RevisionNumber + 1,
|
|
|
- Status: string(types.StackRevisionStatusDeployed),
|
|
|
- SourceConfigs: newSourceConfigs,
|
|
|
- Resources: appResources,
|
|
|
- EnvGroups: newEnvGroups,
|
|
|
- }
|
|
|
+ if err == nil {
|
|
|
+ revision.Status = string(types.StackRevisionStatusDeployed)
|
|
|
+ } else {
|
|
|
+ revision.Status = string(types.StackRevisionStatusFailed)
|
|
|
+ revision.Reason = "RemoveEnvGroupError"
|
|
|
+ revision.Message = err.Error()
|
|
|
+ }
|
|
|
|
|
|
- _, err = p.Repo().Stack().AppendNewRevision(newRevision)
|
|
|
+ _, err = p.Repo().Stack().UpdateStackRevision(revision)
|
|
|
|
|
|
- if err != nil {
|
|
|
- p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
- return
|
|
|
- }
|
|
|
+ if err != nil {
|
|
|
+ p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
+ return
|
|
|
}
|
|
|
}
|