Skip to content

Commit 6820ffe

Browse files
feat: refactoring deployment app name usage (#5702)
* removing hard coded deployment app name * removing %s-%s usage * wip: query change for enterprise * wip * wip * wip * adding release mode in deployment config * wip: release changes * left join on pco and artifact * handling empty release mode - backward compatibility * fixing panic * migration number changes (#5692) * refrain from checkin autoscalingCheckBeforeTrigger for virt clus (#5696) * fix: Decode secret fix on add update oss (#5695) * ValidateEncodedDataByDecoding in case add or update secret * wire fix from main * minor refactor * comment * saving pco concurrency case handled (#5688) * migration updated * main merge and migration script updated * wip * review changes * fix sql no --------- Co-authored-by: Prakash <[email protected]>
1 parent f1aa1fc commit 6820ffe

22 files changed

+311
-188
lines changed

api/bean/AppView.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ type AppEnvironmentContainer struct {
144144
type DeploymentDetailContainer struct {
145145
InstalledAppId int `json:"installedAppId,omitempty"`
146146
AppId int `json:"appId,omitempty"`
147+
PcoId int `json:"pcoId"`
147148
CdPipelineId int `json:"cdPipelineId,omitempty"`
148149
TriggerType string `json:"triggerType,omitempty"`
149150
ParentEnvironmentName string `json:"parentEnvironmentName"`
@@ -183,6 +184,8 @@ type DeploymentDetailContainer struct {
183184
HelmPackageName string `json:"helmPackageName"`
184185
HelmReleaseInstallStatus string `json:"-"`
185186
DeploymentConfig *bean.DeploymentConfig `json:"-"`
187+
IsPipelineTriggered bool `json:"isPipelineTriggered"`
188+
ReleaseMode string `json:"releaseMode"`
186189
}
187190

188191
type AppDetailContainer struct {

api/helm-app/gRPC/applist.pb.go

Lines changed: 100 additions & 94 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/helm-app/gRPC/applist.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ service ApplicationService {
4444
rpc ValidateOCIRegistry(RegistryCredential) returns(OCIRegistryResponse) {}
4545
rpc GetResourceTreeForExternalResources(ExternalResourceTreeRequest) returns(ResourceTreeResponse){}
4646
rpc GetFluxAppDetail(FluxAppDetailRequest)returns(FluxAppDetail){}
47+
rpc GetReleaseDetails(ReleaseIdentifier)returns(DeployedAppDetail){}
4748

4849
}
4950

api/helm-app/gRPC/applist_grpc.pb.go

Lines changed: 111 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/helm-app/service/HelmAppService.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1136,7 +1136,7 @@ func (impl *HelmAppServiceImpl) appListRespProtoTransformer(deployedApps *gRPC.D
11361136
// do not add app in the list which are created using cd_pipelines (check combination of clusterId, namespace, releaseName)
11371137
var toExcludeFromList bool
11381138
for _, helmCdPipeline := range helmCdPipelines {
1139-
helmAppReleaseName := util2.BuildDeployedAppName(helmCdPipeline.App.AppName, helmCdPipeline.Environment.Name)
1139+
helmAppReleaseName := helmCdPipeline.DeploymentAppName
11401140
if deployedapp.AppName == helmAppReleaseName && int(deployedapp.EnvironmentDetail.ClusterId) == helmCdPipeline.Environment.ClusterId && deployedapp.EnvironmentDetail.Namespace == helmCdPipeline.Environment.Namespace {
11411141
toExcludeFromList = true
11421142
break

api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,11 @@ func (handler *PipelineConfigRestHandlerImpl) CreateCdPipeline(w http.ResponseWr
207207
handler.Logger.Infow("request payload, CreateCdPipeline", "payload", cdPipeline)
208208
userUploaded, err := handler.chartService.CheckIfChartRefUserUploadedByAppId(cdPipeline.AppId)
209209
if !userUploaded {
210+
for i, p := range cdPipeline.Pipelines {
211+
if len(p.ReleaseMode) == 0 {
212+
cdPipeline.Pipelines[i].ReleaseMode = util.PIPELINE_RELEASE_MODE_CREATE
213+
}
214+
}
210215
err = handler.validator.Struct(cdPipeline)
211216
if err != nil {
212217
handler.Logger.Errorw("validation err, CreateCdPipeline", "err", err, "payload", cdPipeline)

internal/sql/repository/AppListingRepository.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/devtron-labs/devtron/internal/middleware"
2828
appWorkflow2 "github.com/devtron-labs/devtron/internal/sql/repository/appWorkflow"
2929
"github.com/devtron-labs/devtron/internal/sql/repository/deploymentConfig"
30+
"github.com/devtron-labs/devtron/internal/util"
3031
repository2 "github.com/devtron-labs/devtron/pkg/cluster/repository"
3132
"go.opentelemetry.io/otel"
3233
"strings"
@@ -365,10 +366,10 @@ func (impl AppListingRepositoryImpl) deploymentDetailsByAppIdAndEnvId(ctx contex
365366
" p.ci_pipeline_id," +
366367
" p.trigger_type" +
367368
" FROM pipeline p" +
368-
" INNER JOIN pipeline_config_override pco on pco.pipeline_id=p.id" +
369+
" LEFT JOIN pipeline_config_override pco on pco.pipeline_id=p.id" +
369370
" INNER JOIN environment env ON env.id=p.environment_id" +
370371
" INNER JOIN cluster cl on cl.id=env.cluster_id" +
371-
" INNER JOIN ci_artifact cia on cia.id = pco.ci_artifact_id" +
372+
" LEFT JOIN ci_artifact cia on cia.id = pco.ci_artifact_id" +
372373
" INNER JOIN app a ON a.id=p.app_id" +
373374
" WHERE a.app_type = 0 AND a.id=? AND env.id=? AND p.deleted = FALSE AND env.active = TRUE" +
374375
" ORDER BY pco.created_on DESC LIMIT 1;"
@@ -378,13 +379,18 @@ func (impl AppListingRepositoryImpl) deploymentDetailsByAppIdAndEnvId(ctx contex
378379
return deploymentDetail, err
379380
}
380381
deploymentDetail.EnvironmentId = envId
381-
if len(deploymentDetail.DeploymentAppType) == 0 {
382-
dc, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(appId, envId)
383-
if err != nil {
384-
impl.Logger.Errorw("error in getting deployment config by appId and envId", "appId", appId, "envId", envId, "err", err)
385-
return deploymentDetail, err
386-
}
382+
383+
deploymentDetail.EnvironmentId = envId
384+
dc, err := impl.deploymentConfigRepository.GetByAppIdAndEnvId(appId, envId)
385+
if err != nil && err != pg.ErrNoRows {
386+
impl.Logger.Errorw("error in getting deployment config by appId and envId", "appId", appId, "envId", envId, "err", err)
387+
return deploymentDetail, err
388+
}
389+
if err == pg.ErrNoRows {
390+
deploymentDetail.ReleaseMode = util.PIPELINE_RELEASE_MODE_CREATE
391+
} else {
387392
deploymentDetail.DeploymentAppType = dc.DeploymentAppType
393+
deploymentDetail.ReleaseMode = dc.ReleaseMode
388394
}
389395

390396
return deploymentDetail, nil
@@ -455,6 +461,9 @@ func (impl AppListingRepositoryImpl) FetchAppDetail(ctx context.Context, appId i
455461
if err != nil {
456462
impl.Logger.Warn("unable to fetch deployment detail for app")
457463
}
464+
if deploymentDetail.PcoId > 0 {
465+
deploymentDetail.IsPipelineTriggered = true
466+
}
458467
appWfMapping, _ := impl.appWorkflowRepository.FindWFCDMappingByCDPipelineId(deploymentDetail.CdPipelineId)
459468
if appWfMapping.ParentType == appWorkflow2.CDPIPELINE {
460469
parentEnvironmentName, _ := impl.getEnvironmentNameFromPipelineId(appWfMapping.ParentId)

internal/sql/repository/deploymentConfig/repository.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type DeploymentConfig struct {
2929
ConfigType string `sql:"config_type"`
3030
RepoUrl string `sql:"repo_url"`
3131
RepoName string `sql:"repo_name"`
32+
ReleaseMode string `json:"release_mode"`
3233
Active bool `sql:"active,notnull"`
3334
sql.AuditLog
3435
}

internal/util/ChartTemplateService.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ const (
4646
CHART_WORKING_DIR_PATH = "/tmp/charts/"
4747
)
4848

49+
const (
50+
PIPELINE_RELEASE_MODE_CREATE = "create"
51+
)
52+
4953
type ChartCreateRequest struct {
5054
ChartMetaData *chart.Metadata
5155
ChartPath string

pkg/bean/app.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,7 @@ type CDPipelineConfigObject struct {
621621
ChildPipelineId int `json:"childPipelineId"`
622622
IsDigestEnforcedForPipeline bool `json:"isDigestEnforcedForPipeline"`
623623
IsDigestEnforcedForEnv bool `json:"isDigestEnforcedForEnv"`
624+
ReleaseMode string `json:"releaseMode" validate:"oneof=create"`
624625
}
625626

626627
type CDPipelineAddType string

0 commit comments

Comments
 (0)