@@ -19,6 +19,7 @@ package delete
1919import  (
2020	"fmt" 
2121	"github.com/devtron-labs/common-lib/utils/k8s" 
22+ 	appRepository "github.com/devtron-labs/devtron/internal/sql/repository/app" 
2223	dockerRegistryRepository "github.com/devtron-labs/devtron/internal/sql/repository/dockerRegistry" 
2324	"github.com/devtron-labs/devtron/internal/util" 
2425	"github.com/devtron-labs/devtron/pkg/appStore/installedApp/repository" 
@@ -58,6 +59,7 @@ type DeleteServiceImpl struct {
5859	dockerRegistryRepository  dockerRegistryRepository.DockerArtifactStoreRepository 
5960	K8sUtil                   k8s.K8sService 
6061	k8sInformerFactory        informer.K8sInformerFactory 
62+ 	appRepository             appRepository.AppRepository 
6163}
6264
6365func  NewDeleteServiceImpl (logger  * zap.SugaredLogger ,
@@ -70,6 +72,7 @@ func NewDeleteServiceImpl(logger *zap.SugaredLogger,
7072	dockerRegistryRepository  dockerRegistryRepository.DockerArtifactStoreRepository ,
7173	k8sInformerFactory  informer.K8sInformerFactory ,
7274	K8sUtil  k8s.K8sService ,
75+ 	appRepository  appRepository.AppRepository ,
7376) * DeleteServiceImpl  {
7477	return  & DeleteServiceImpl {
7578		logger :                   logger ,
@@ -82,6 +85,7 @@ func NewDeleteServiceImpl(logger *zap.SugaredLogger,
8285		dockerRegistryRepository : dockerRegistryRepository ,
8386		K8sUtil :                  K8sUtil ,
8487		k8sInformerFactory :       k8sInformerFactory ,
88+ 		appRepository :            appRepository ,
8589	}
8690}
8791
@@ -94,7 +98,8 @@ func (impl DeleteServiceImpl) DeleteCluster(deleteRequest *bean2.ClusterBean, us
9498	err  =  impl .DeleteClusterSecret (deleteRequest , err )
9599	if  err  !=  nil  {
96100		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 
98103	}
99104	impl .k8sInformerFactory .DeleteClusterFromCache (clusterName )
100105	return  nil 
@@ -121,7 +126,17 @@ func (impl DeleteServiceImpl) DeleteEnvironment(deleteRequest *bean.EnvironmentB
121126	return  nil 
122127}
123128func  (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 )
125140	if  err  !=  nil  {
126141		impl .logger .Errorw ("error in deleting team" , "err" , err , "deleteRequest" , deleteRequest )
127142		return  err 
0 commit comments