@@ -19,6 +19,7 @@ package delete
19
19
import (
20
20
"fmt"
21
21
"github.com/devtron-labs/common-lib/utils/k8s"
22
+ appRepository "github.com/devtron-labs/devtron/internal/sql/repository/app"
22
23
dockerRegistryRepository "github.com/devtron-labs/devtron/internal/sql/repository/dockerRegistry"
23
24
"github.com/devtron-labs/devtron/internal/util"
24
25
"github.com/devtron-labs/devtron/pkg/appStore/installedApp/repository"
@@ -58,6 +59,7 @@ type DeleteServiceImpl struct {
58
59
dockerRegistryRepository dockerRegistryRepository.DockerArtifactStoreRepository
59
60
K8sUtil k8s.K8sService
60
61
k8sInformerFactory informer.K8sInformerFactory
62
+ appRepository appRepository.AppRepository
61
63
}
62
64
63
65
func NewDeleteServiceImpl (logger * zap.SugaredLogger ,
@@ -70,6 +72,7 @@ func NewDeleteServiceImpl(logger *zap.SugaredLogger,
70
72
dockerRegistryRepository dockerRegistryRepository.DockerArtifactStoreRepository ,
71
73
k8sInformerFactory informer.K8sInformerFactory ,
72
74
K8sUtil k8s.K8sService ,
75
+ appRepository appRepository.AppRepository ,
73
76
) * DeleteServiceImpl {
74
77
return & DeleteServiceImpl {
75
78
logger : logger ,
@@ -82,6 +85,7 @@ func NewDeleteServiceImpl(logger *zap.SugaredLogger,
82
85
dockerRegistryRepository : dockerRegistryRepository ,
83
86
K8sUtil : K8sUtil ,
84
87
k8sInformerFactory : k8sInformerFactory ,
88
+ appRepository : appRepository ,
85
89
}
86
90
}
87
91
@@ -94,7 +98,8 @@ func (impl DeleteServiceImpl) DeleteCluster(deleteRequest *bean2.ClusterBean, us
94
98
err = impl .DeleteClusterSecret (deleteRequest , err )
95
99
if err != nil {
96
100
impl .logger .Errorw ("error in deleting cluster secret" , "clusterId" , deleteRequest .Id , "error" , err )
97
- return err
101
+ // We are not returning error as it is not a blocking call as cluster can be unreachable at that time, and we have already deleted cluster from db.
102
+ //return err
98
103
}
99
104
impl .k8sInformerFactory .DeleteClusterFromCache (clusterName )
100
105
return nil
@@ -121,7 +126,17 @@ func (impl DeleteServiceImpl) DeleteEnvironment(deleteRequest *bean.EnvironmentB
121
126
return nil
122
127
}
123
128
func (impl DeleteServiceImpl ) DeleteTeam (deleteRequest * bean3.TeamRequest ) error {
124
- err := impl .teamService .Delete (deleteRequest )
129
+ //finding if this project is used in some app; if yes, will not perform delete operation
130
+ apps , err := impl .appRepository .FindAppsByTeamId (deleteRequest .Id )
131
+ if err != nil && err != pg .ErrNoRows {
132
+ impl .logger .Errorw ("err in deleting team" , "teamId" , deleteRequest .Id , "err" , err )
133
+ return err
134
+ }
135
+ if len (apps ) > 0 {
136
+ impl .logger .Errorw ("err in deleting team, found apps in team" , "teamName" , deleteRequest .Name , "err" , err )
137
+ return fmt .Errorf (" Please delete all apps in this project before deleting this project" )
138
+ }
139
+ err = impl .teamService .Delete (deleteRequest )
125
140
if err != nil {
126
141
impl .logger .Errorw ("error in deleting team" , "err" , err , "deleteRequest" , deleteRequest )
127
142
return err
0 commit comments