From f53b58a068960d93e5907e94b275bc973c68b9a4 Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Thu, 6 Feb 2025 10:10:20 +0530 Subject: [PATCH 01/25] ci pipeline get change --- .../pipeline/configure/BuildPipelineRestHandler.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go b/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go index c6321b098c..f915e53ffa 100644 --- a/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go +++ b/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go @@ -565,16 +565,24 @@ func (handler *PipelineConfigRestHandlerImpl) GetCiPipeline(w http.ResponseWrite common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), "Unauthorized User", http.StatusForbidden) return } - ciConf, err := handler.pipelineBuilder.GetCiPipeline(appId) + ciConf, err := handler.getCiPipelineRespResolved(appId) if err != nil { handler.Logger.Errorw("service err, GetCiPipeline", "err", err, "appId", appId) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) return } + common.WriteJsonResp(w, err, ciConf, http.StatusOK) +} + +func (handler *PipelineConfigRestHandlerImpl) getCiPipelineRespResolved(appId int) (*bean.CiConfigRequest, error) { + ciConf, err := handler.pipelineBuilder.GetCiPipeline(appId) + if err != nil { + return nil, err + } if ciConf == nil || ciConf.Id == 0 { err = &util.ApiError{Code: "404", HttpStatusCode: 200, UserMessage: "no data found"} } - common.WriteJsonResp(w, err, ciConf, http.StatusOK) + return ciConf, err } func (handler *PipelineConfigRestHandlerImpl) GetExternalCi(w http.ResponseWriter, r *http.Request) { From bf2b3c5572652640b0e6370937b12952b54ee25e Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Thu, 6 Feb 2025 10:18:59 +0530 Subject: [PATCH 02/25] ci pipeline get change --- .../configure/BuildPipelineRestHandler.go | 15 ++------------- pkg/pipeline/BuildPipelineConfigService.go | 13 +++++++++++++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go b/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go index f915e53ffa..c5a8baf3dd 100644 --- a/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go +++ b/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go @@ -565,26 +565,15 @@ func (handler *PipelineConfigRestHandlerImpl) GetCiPipeline(w http.ResponseWrite common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), "Unauthorized User", http.StatusForbidden) return } - ciConf, err := handler.getCiPipelineRespResolved(appId) + ciConf, err := handler.pipelineBuilder.GetCiPipelineRespResolved(appId) if err != nil { - handler.Logger.Errorw("service err, GetCiPipeline", "err", err, "appId", appId) + handler.Logger.Errorw("service err, GetCiPipelineRespResolved", "appId", appId, "err", err) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) return } common.WriteJsonResp(w, err, ciConf, http.StatusOK) } -func (handler *PipelineConfigRestHandlerImpl) getCiPipelineRespResolved(appId int) (*bean.CiConfigRequest, error) { - ciConf, err := handler.pipelineBuilder.GetCiPipeline(appId) - if err != nil { - return nil, err - } - if ciConf == nil || ciConf.Id == 0 { - err = &util.ApiError{Code: "404", HttpStatusCode: 200, UserMessage: "no data found"} - } - return ciConf, err -} - func (handler *PipelineConfigRestHandlerImpl) GetExternalCi(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) appId, err := strconv.Atoi(vars["appId"]) diff --git a/pkg/pipeline/BuildPipelineConfigService.go b/pkg/pipeline/BuildPipelineConfigService.go index de9006a732..d1c931a716 100644 --- a/pkg/pipeline/BuildPipelineConfigService.go +++ b/pkg/pipeline/BuildPipelineConfigService.go @@ -55,6 +55,8 @@ import ( ) type CiPipelineConfigService interface { + // GetCiPipelineRespResolved : gets the ci pipeline get response after resolving empty data response as expected by FE + GetCiPipelineRespResolved(appId int) (*bean.CiConfigRequest, error) //GetCiPipeline : retrieves CI pipeline configuration (CiConfigRequest) for a specific application (appId). // It fetches CI pipeline data, including pipeline materials, scripts, and associated configurations. // It returns a detailed CiConfigRequest. @@ -511,6 +513,17 @@ func (impl *CiPipelineConfigServiceImpl) getCiTemplateVariables(appId int) (ciCo return ciConfig, err } +func (impl *CiPipelineConfigServiceImpl) GetCiPipelineRespResolved(appId int) (*bean.CiConfigRequest, error) { + ciConf, err := impl.GetCiPipeline(appId) + if err != nil { + return nil, err + } + if ciConf == nil || ciConf.Id == 0 { + err = &util.ApiError{Code: "404", HttpStatusCode: 200, UserMessage: "no data found"} + } + return ciConf, err +} + func (impl *CiPipelineConfigServiceImpl) GetCiPipeline(appId int) (ciConfig *bean.CiConfigRequest, err error) { ciConfig, err = impl.getCiTemplateVariables(appId) if err != nil { From 08570ebbd6ccd3728cac5991579fb45f7cb5d66e Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Fri, 7 Feb 2025 13:59:50 +0530 Subject: [PATCH 03/25] GetCiPipelineByIdWithDefaultTag change --- .../pipeline/configure/BuildPipelineRestHandler.go | 5 ++--- pkg/pipeline/BuildPipelineConfigService.go | 12 ++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go b/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go index c5a8baf3dd..07d52166d4 100644 --- a/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go +++ b/api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go @@ -1283,13 +1283,12 @@ func (handler *PipelineConfigRestHandlerImpl) GetCIPipelineById(w http.ResponseW } } - ciPipeline, err := handler.pipelineBuilder.GetCiPipelineById(pipelineId) + ciPipeline, err := handler.pipelineBuilder.GetCiPipelineByIdWithDefaultTag(pipelineId) if err != nil { - handler.Logger.Infow("service error, GetCIPipelineById", "err", err, "appId", appId, "pipelineId", pipelineId) + handler.Logger.Infow("service error, GetCiPipelineByIdWithDefaultTag", "err", err, "appId", appId, "pipelineId", pipelineId) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) return } - ciPipeline.DefaultTag = []string{"{git_hash}", "{ci_pipeline_id}", "{global_counter}"} common.WriteJsonResp(w, err, ciPipeline, http.StatusOK) } diff --git a/pkg/pipeline/BuildPipelineConfigService.go b/pkg/pipeline/BuildPipelineConfigService.go index d1c931a716..c8ee42940c 100644 --- a/pkg/pipeline/BuildPipelineConfigService.go +++ b/pkg/pipeline/BuildPipelineConfigService.go @@ -63,6 +63,8 @@ type CiPipelineConfigService interface { //If any errors occur during the retrieval process CI pipeline configuration remains nil. //If you want less detail of ciPipeline ,Please refer GetCiPipelineMin GetCiPipeline(appId int) (ciConfig *bean.CiConfigRequest, err error) + // GetCiPipelineByIdWithDefaultTag : Retrieve ciPipeline for given ciPipelineId with defaultTagData + GetCiPipelineByIdWithDefaultTag(pipelineId int) (ciPipeline *bean.CiPipeline, err error) //GetCiPipelineById : Retrieve ciPipeline for given ciPipelineId GetCiPipelineById(pipelineId int) (ciPipeline *bean.CiPipeline, err error) //GetTriggerViewCiPipeline : retrieves a detailed view of the CI pipelines configured for a specific application (appId). @@ -688,6 +690,16 @@ func (impl *CiPipelineConfigServiceImpl) GetCiPipeline(appId int) (ciConfig *bea return ciConfig, err } +func (impl *CiPipelineConfigServiceImpl) GetCiPipelineByIdWithDefaultTag(pipelineId int) (ciPipeline *bean.CiPipeline, err error) { + ciPipeline, err = impl.GetCiPipelineById(pipelineId) + if err != nil { + impl.logger.Infow("service error, GetCIPipelineById", "pipelineId", pipelineId, "err", err) + return nil, err + } + ciPipeline.DefaultTag = []string{"{git_hash}", "{ci_pipeline_id}", "{global_counter}"} + return ciPipeline, nil +} + func (impl *CiPipelineConfigServiceImpl) GetCiPipelineById(pipelineId int) (ciPipeline *bean.CiPipeline, err error) { pipeline, err := impl.ciPipelineRepository.FindById(pipelineId) if err != nil && !util.IsErrNoRows(err) { From cd26b82ecb1d848be09254e10efc14e203f8a8a6 Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Sat, 8 Feb 2025 15:29:00 +0530 Subject: [PATCH 04/25] deployment template get response --- .../DeploymentPipelineRestHandler.go | 69 +----------------- pkg/chart/ChartService.go | 71 +++++++++++++++++++ 2 files changed, 73 insertions(+), 67 deletions(-) diff --git a/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go b/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go index 6b12a03169..892a827372 100644 --- a/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go +++ b/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go @@ -1030,77 +1030,12 @@ func (handler *PipelineConfigRestHandlerImpl) GetDeploymentTemplate(w http.Respo common.WriteJsonResp(w, fmt.Errorf("unauthorized user"), "Unauthorized User", http.StatusForbidden) return } - - appConfigResponse := make(map[string]interface{}) - appConfigResponse["globalConfig"] = nil - - err = handler.chartRefService.CheckChartExists(chartRefId) - if err != nil { - handler.Logger.Errorw("refChartDir Not Found err, JsonSchemaExtractFromFile", err) - common.WriteJsonResp(w, err, nil, http.StatusForbidden) - return - } - - schema, readme, err := handler.chartRefService.GetSchemaAndReadmeForTemplateByChartRefId(chartRefId) + appConfigResponse, err := handler.chartService.GetDeploymentTemplateDataByAppIdAndCharRefId(appId, chartRefId) if err != nil { - handler.Logger.Errorw("err in getting schema and readme, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) - } - - template, err := handler.chartService.FindLatestChartForAppByAppId(appId) - if err != nil && pg.ErrNoRows != err { - handler.Logger.Errorw("service err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) + handler.Logger.Error("service err, GetDeploymentTemplateDataByAppIdAndCharRefId", "appId", appId, "chartRefId", chartRefId, "err", err) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) return } - - if pg.ErrNoRows == err { - appOverride, _, err := handler.chartRefService.GetAppOverrideForDefaultTemplate(chartRefId) - if err != nil { - handler.Logger.Errorw("service err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) - common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) - return - } - appOverride["schema"] = json.RawMessage(schema) - appOverride["readme"] = string(readme) - mapB, err := json.Marshal(appOverride) - if err != nil { - handler.Logger.Errorw("marshal err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) - return - } - appConfigResponse["globalConfig"] = json.RawMessage(mapB) - } else { - if template.ChartRefId != chartRefId { - templateRequested, err := handler.chartService.GetByAppIdAndChartRefId(appId, chartRefId) - if err != nil && err != pg.ErrNoRows { - handler.Logger.Errorw("service err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) - common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) - return - } - - if pg.ErrNoRows == err { - template.ChartRefId = chartRefId - template.Id = 0 - template.Latest = false - } else { - template.ChartRefId = templateRequested.ChartRefId - template.Id = templateRequested.Id - template.ChartRepositoryId = templateRequested.ChartRepositoryId - template.RefChartTemplate = templateRequested.RefChartTemplate - template.RefChartTemplateVersion = templateRequested.RefChartTemplateVersion - template.Latest = templateRequested.Latest - } - } - template.Schema = schema - template.Readme = string(readme) - bytes, err := json.Marshal(template) - if err != nil { - handler.Logger.Errorw("marshal err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) - return - } - appOverride := json.RawMessage(bytes) - appConfigResponse["globalConfig"] = appOverride - } - common.WriteJsonResp(w, nil, appConfigResponse, http.StatusOK) } diff --git a/pkg/chart/ChartService.go b/pkg/chart/ChartService.go index 74db49eefb..0c1ed5a65d 100644 --- a/pkg/chart/ChartService.go +++ b/pkg/chart/ChartService.go @@ -72,6 +72,8 @@ type ChartService interface { IsGitOpsRepoConfiguredForDevtronApp(appId int) (bool, error) IsGitOpsRepoConfiguredForDevtronApps(appIds []int) (map[int]bool, error) IsGitOpsRepoAlreadyRegistered(gitOpsRepoUrl string) (bool, error) + + GetDeploymentTemplateDataByAppIdAndCharRefId(appId, chartRefId int) (map[string]interface{}, error) } type ChartServiceImpl struct { @@ -1073,3 +1075,72 @@ func (impl *ChartServiceImpl) IsGitOpsRepoAlreadyRegistered(gitOpsRepoUrl string impl.logger.Errorw("repository is already in use for devtron app", "repoUrl", gitOpsRepoUrl, "appId", chartModel.AppId) return true, nil } + +func (impl *ChartServiceImpl) GetDeploymentTemplateDataByAppIdAndCharRefId(appId, chartRefId int) (map[string]interface{}, error) { + appConfigResponse := make(map[string]interface{}) + appConfigResponse["globalConfig"] = nil + + err := impl.chartRefService.CheckChartExists(chartRefId) + if err != nil { + impl.logger.Errorw("refChartDir Not Found err, JsonSchemaExtractFromFile", err) + return nil, err + } + + schema, readme, err := impl.chartRefService.GetSchemaAndReadmeForTemplateByChartRefId(chartRefId) + if err != nil { + impl.logger.Errorw("err in getting schema and readme, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) + } + + template, err := impl.FindLatestChartForAppByAppId(appId) + if err != nil && pg.ErrNoRows != err { + impl.logger.Errorw("service err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) + return nil, err + } + + if pg.ErrNoRows == err { + appOverride, _, err := impl.chartRefService.GetAppOverrideForDefaultTemplate(chartRefId) + if err != nil { + impl.logger.Errorw("service err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) + return nil, err + } + appOverride["schema"] = json.RawMessage(schema) + appOverride["readme"] = string(readme) + mapB, err := json.Marshal(appOverride) + if err != nil { + impl.logger.Errorw("marshal err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) + return nil, err + } + appConfigResponse["globalConfig"] = json.RawMessage(mapB) + } else { + if template.ChartRefId != chartRefId { + templateRequested, err := impl.GetByAppIdAndChartRefId(appId, chartRefId) + if err != nil && err != pg.ErrNoRows { + impl.logger.Errorw("service err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) + return nil, err + } + + if pg.ErrNoRows == err { + template.ChartRefId = chartRefId + template.Id = 0 + template.Latest = false + } else { + template.ChartRefId = templateRequested.ChartRefId + template.Id = templateRequested.Id + template.ChartRepositoryId = templateRequested.ChartRepositoryId + template.RefChartTemplate = templateRequested.RefChartTemplate + template.RefChartTemplateVersion = templateRequested.RefChartTemplateVersion + template.Latest = templateRequested.Latest + } + } + template.Schema = schema + template.Readme = string(readme) + bytes, err := json.Marshal(template) + if err != nil { + impl.logger.Errorw("marshal err, GetDeploymentTemplate", "err", err, "appId", appId, "chartRefId", chartRefId) + return nil, err + } + appOverride := json.RawMessage(bytes) + appConfigResponse["globalConfig"] = appOverride + } + return appConfigResponse, nil +} From b0342db02404a778b58f2c75dadf550575a6eb00 Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Sat, 8 Feb 2025 16:19:14 +0530 Subject: [PATCH 05/25] cd pipeline get response change --- .../configure/DeploymentPipelineRestHandler.go | 11 ++--------- pkg/pipeline/DeploymentPipelineConfigService.go | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go b/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go index 892a827372..071d0f428c 100644 --- a/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go +++ b/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go @@ -39,7 +39,6 @@ import ( "github.com/devtron-labs/devtron/pkg/bean" "github.com/devtron-labs/devtron/pkg/chart" "github.com/devtron-labs/devtron/pkg/generateManifest" - "github.com/devtron-labs/devtron/pkg/pipeline" pipelineBean "github.com/devtron-labs/devtron/pkg/pipeline/bean" resourceGroup2 "github.com/devtron-labs/devtron/pkg/resourceGroup" "github.com/devtron-labs/devtron/pkg/resourceQualifiers" @@ -1920,15 +1919,9 @@ func (handler *PipelineConfigRestHandlerImpl) GetCdPipelineById(w http.ResponseW return } - cdPipeline, err := handler.pipelineBuilder.GetCdPipelineById(pipelineId) + cdResp, err := handler.pipelineBuilder.GetCdPipelineByIdResolved(pipelineId, version) if err != nil { - handler.Logger.Errorw("service err, GetCdPipelineById", "err", err, "appId", appId, "pipelineId", pipelineId) - common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) - return - } - cdResp, err := pipeline.CreatePreAndPostStageResponse(cdPipeline, version) - if err != nil { - handler.Logger.Errorw("service err, CheckForVersionAndCreatePreAndPostStagePayload", "err", err, "appId", appId, "pipelineId", pipelineId) + handler.Logger.Errorw("service err, GetCdPipelineByIdResolved", "appId", appId, "pipelineId", pipelineId, "err", err) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) return } diff --git a/pkg/pipeline/DeploymentPipelineConfigService.go b/pkg/pipeline/DeploymentPipelineConfigService.go index 904b64d5b7..108851d650 100644 --- a/pkg/pipeline/DeploymentPipelineConfigService.go +++ b/pkg/pipeline/DeploymentPipelineConfigService.go @@ -76,6 +76,8 @@ import ( ) type CdPipelineConfigService interface { + // GetCdPipelineByIdResolved : Retrieve cdPipeline for given cdPipelineId and update response as per version(change of pre/post stage data) + GetCdPipelineByIdResolved(pipelineId int, version string) (cdPipeline *bean.CDPipelineConfigObject, err error) // GetCdPipelineById : Retrieve cdPipeline for given cdPipelineId. // getting cdPipeline,environment and strategies ,preDeployStage, postDeployStage,appWorkflowMapping from respective repository and service layer // converting above data in proper bean object and then assigning to CDPipelineConfigObject @@ -224,6 +226,20 @@ func NewCdPipelineConfigServiceImpl(logger *zap.SugaredLogger, pipelineRepositor } } +func (impl *CdPipelineConfigServiceImpl) GetCdPipelineByIdResolved(pipelineId int, version string) (cdPipeline *bean.CDPipelineConfigObject, err error) { + cdPipeline, err = impl.GetCdPipelineById(pipelineId) + if err != nil { + impl.logger.Errorw("service err, GetCdPipelineById", "pipelineId", pipelineId, "err", err) + return + } + cdResp, err := CreatePreAndPostStageResponse(cdPipeline, version) + if err != nil { + impl.logger.Errorw("service err, CheckForVersionAndCreatePreAndPostStagePayload", "pipelineId", pipelineId, "err", err) + return + } + return cdResp, nil +} + func (impl *CdPipelineConfigServiceImpl) GetCdPipelineById(pipelineId int) (cdPipeline *bean.CDPipelineConfigObject, err error) { dbPipeline, err := impl.pipelineRepository.FindById(pipelineId) if err != nil && errors.IsNotFound(err) { From cc2481cfb3736b830cddd6a68c58c54e46575dcb Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Thu, 6 Mar 2025 15:23:22 +0530 Subject: [PATCH 06/25] oss etn change --- pkg/chart/ChartService.go | 68 ++++++++++--------- .../DeploymentConfigurationService.go | 12 ++-- 2 files changed, 45 insertions(+), 35 deletions(-) diff --git a/pkg/chart/ChartService.go b/pkg/chart/ChartService.go index 0c1ed5a65d..208f22dbb5 100644 --- a/pkg/chart/ChartService.go +++ b/pkg/chart/ChartService.go @@ -65,6 +65,7 @@ type ChartService interface { CheckIfChartRefUserUploadedByAppId(id int) (bool, error) PatchEnvOverrides(values json.RawMessage, oldChartType string, newChartType string) (json.RawMessage, error) + ChartRefAutocompleteGlobalData() (*chartRefBean.ChartRefAutocompleteResponse, error) ChartRefAutocompleteForAppOrEnv(appId int, envId int) (*chartRefBean.ChartRefAutocompleteResponse, error) ConfigureGitOpsRepoUrlForApp(appId int, repoUrl, chartLocation string, isCustomRepo bool, userId int32) (*bean2.DeploymentConfig, error) @@ -814,22 +815,45 @@ func (impl *ChartServiceImpl) IsReadyToTrigger(appId int, envId int, pipelineId } func (impl *ChartServiceImpl) ChartRefAutocompleteForAppOrEnv(appId int, envId int) (*chartRefBean.ChartRefAutocompleteResponse, error) { - chartRefResponse := &chartRefBean.ChartRefAutocompleteResponse{} - var chartRefs []chartRefBean.ChartRefAutocompleteDto + chartRefResponse, err := impl.ChartRefAutocompleteGlobalData() + if err != nil { + impl.logger.Errorw("error, ChartRefAutocompleteGlobalData", "err", err) + return nil, err + } + chart, err := impl.chartRepository.FindLatestChartForAppByAppId(appId) + if err != nil && err != pg.ErrNoRows { + impl.logger.Errorw("error in fetching latest chart", "err", err) + return chartRefResponse, err + } + chartRefResponse.LatestAppChartRef = chart.ChartRefId + if envId > 0 { + envOverride, err := impl.envConfigOverrideReadService.FindLatestChartForAppByAppIdAndEnvId(appId, envId) + if err != nil && !errors.IsNotFound(err) { + impl.logger.Errorw("error in fetching latest chart", "err", err) + return chartRefResponse, err + } + if envOverride != nil && envOverride.Chart != nil { + chartRefResponse.LatestEnvChartRef = envOverride.Chart.ChartRefId + } else { + chartRefResponse.LatestEnvChartRef = chart.ChartRefId + } + } + return chartRefResponse, nil +} +func (impl *ChartServiceImpl) ChartRefAutocompleteGlobalData() (*chartRefBean.ChartRefAutocompleteResponse, error) { results, err := impl.chartRefService.GetAll() if err != nil { impl.logger.Errorw("error in fetching chart ref", "err", err) - return chartRefResponse, err + return nil, err } - resultsMetadataMap, err := impl.chartRefService.GetAllChartMetadata() if err != nil { impl.logger.Errorw("error in fetching chart metadata", "err", err) - return chartRefResponse, err + return nil, err } - chartRefResponse.ChartsMetadata = resultsMetadataMap - var LatestAppChartRef int + var latestChartRef int + chartRefs := make([]chartRefBean.ChartRefAutocompleteDto, 0, len(results)) for _, result := range results { chartRefs = append(chartRefs, chartRefBean.ChartRefAutocompleteDto{ Id: result.Id, @@ -840,32 +864,14 @@ func (impl *ChartServiceImpl) ChartRefAutocompleteForAppOrEnv(appId int, envId i IsAppMetricsSupported: result.IsAppMetricsSupported, }) if result.Default == true { - LatestAppChartRef = result.Id - } - } - - chart, err := impl.chartRepository.FindLatestChartForAppByAppId(appId) - if err != nil && err != pg.ErrNoRows { - impl.logger.Errorw("error in fetching latest chart", "err", err) - return chartRefResponse, err - } - - if envId > 0 { - envOverride, err := impl.envConfigOverrideReadService.FindLatestChartForAppByAppIdAndEnvId(appId, envId) - if err != nil && !errors.IsNotFound(err) { - impl.logger.Errorw("error in fetching latest chart", "err", err) - return chartRefResponse, err - } - if envOverride != nil && envOverride.Chart != nil { - chartRefResponse.LatestEnvChartRef = envOverride.Chart.ChartRefId - } else { - chartRefResponse.LatestEnvChartRef = chart.ChartRefId + latestChartRef = result.Id } } - chartRefResponse.LatestAppChartRef = chart.ChartRefId - chartRefResponse.ChartRefs = chartRefs - chartRefResponse.LatestChartRef = LatestAppChartRef - return chartRefResponse, nil + return &chartRefBean.ChartRefAutocompleteResponse{ + ChartsMetadata: resultsMetadataMap, + ChartRefs: chartRefs, + LatestChartRef: latestChartRef, + }, nil } func (impl *ChartServiceImpl) FindPreviousChartByAppId(appId int) (chartTemplate *TemplateRequest, err error) { diff --git a/pkg/config/configDiff/DeploymentConfigurationService.go b/pkg/config/configDiff/DeploymentConfigurationService.go index e820fd2827..9ab9f151d9 100644 --- a/pkg/config/configDiff/DeploymentConfigurationService.go +++ b/pkg/config/configDiff/DeploymentConfigurationService.go @@ -144,6 +144,12 @@ func (impl *DeploymentConfigurationServiceImpl) ConfigAutoComplete(appId int, en impl.logger.Errorw("error in fetching CM and CS names at app or env level", "appId", appId, "envId", envId, "err", err) return nil, err } + combinedProperties := GetConfigAutoCompleteCombinedPropertiesDataWithoutDraft(cMCSNamesAppLevel, cMCSNamesEnvLevel, envId) + configDataResp := bean2.NewConfigDataResponse().WithResourceConfig(combinedProperties) + return configDataResp, nil +} + +func GetConfigAutoCompleteCombinedPropertiesDataWithoutDraft(cMCSNamesAppLevel, cMCSNamesEnvLevel []bean.ConfigNameAndType, envId int) (combinedProperties []*bean2.ConfigProperty) { cmcsKeyPropertyAppLevelMap, cmcsKeyPropertyEnvLevelMap := adaptor.GetCmCsAppAndEnvLevelMap(cMCSNamesAppLevel, cMCSNamesEnvLevel) for key, configProperty := range cmcsKeyPropertyAppLevelMap { if _, ok := cmcsKeyPropertyEnvLevelMap[key]; !ok { @@ -161,11 +167,9 @@ func (impl *DeploymentConfigurationServiceImpl) ConfigAutoComplete(appId int, en configProperty.ConfigStage = bean2.Env } } - combinedProperties := helper.GetCombinedPropertiesMap(cmcsKeyPropertyAppLevelMap, cmcsKeyPropertyEnvLevelMap) + combinedProperties = helper.GetCombinedPropertiesMap(cmcsKeyPropertyAppLevelMap, cmcsKeyPropertyEnvLevelMap) combinedProperties = append(combinedProperties, adaptor.GetConfigProperty(0, "", bean.DeploymentTemplate, bean2.PublishedConfigState)) - - configDataResp := bean2.NewConfigDataResponse().WithResourceConfig(combinedProperties) - return configDataResp, nil + return combinedProperties } func (impl *DeploymentConfigurationServiceImpl) GetAllConfigData(ctx context.Context, configDataQueryParams *bean2.ConfigDataQueryParams, userHasAdminAccess bool) (*bean2.DeploymentAndCmCsConfigDto, error) { From f9e40a26d987824e30f230f0bd2d7987588bb24c Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Fri, 7 Mar 2025 17:20:55 +0530 Subject: [PATCH 07/25] oss ent change --- .../app/workflow/AppWorkflowRestHandler.go | 38 ++++--------------- pkg/appWorkflow/AppWorkflowService.go | 33 ++++++++++++++++ pkg/appWorkflow/bean/bean.go | 7 ++++ 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/api/restHandler/app/workflow/AppWorkflowRestHandler.go b/api/restHandler/app/workflow/AppWorkflowRestHandler.go index 4ef1bba590..b4251d2630 100644 --- a/api/restHandler/app/workflow/AppWorkflowRestHandler.go +++ b/api/restHandler/app/workflow/AppWorkflowRestHandler.go @@ -188,13 +188,6 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r return } token := r.Header.Get("token") - app, err := impl.pipelineBuilder.GetApp(appId) - if err != nil { - impl.Logger.Errorw("bad request", "err", err) - common.WriteJsonResp(w, err, nil, http.StatusBadRequest) - return - } - v := r.URL.Query() envIdsString := v.Get("envIds") envIds := make([]int, 0) @@ -207,7 +200,7 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r } // RBAC enforcer applying - object := impl.enforcerUtil.GetAppRBACName(app.AppName) + object := impl.enforcerUtil.GetAppRBACNameByAppId(appId) impl.Logger.Debugw("rbac object for other environment list", "object", object) ok := impl.enforcerUtil.CheckAppRbacForAppOrJob(token, object, casbin.ActionGet) if !ok { @@ -215,8 +208,7 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r return } //RBAC enforcer Ends - workflows := make(map[string]interface{}) - workflowsList, err := impl.appWorkflowService.FindAppWorkflows(appId) + workflowsListResp, appType, err := impl.appWorkflowService.FindAppWorkflowsListResolvedResp(appId) if err != nil { impl.Logger.Errorw("error in fetching workflows for app", "err", err) common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) @@ -231,7 +223,7 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r return } triggerViewPayload := &bean2.TriggerViewWorkflowConfig{ - Workflows: workflowsList, + Workflows: workflowsListResp.Workflows, CdPipelines: cdPipelineWfData, } queryParam := bean2.NewWorkflowsFilterQuery().WithEnvIds(envIds) @@ -242,12 +234,10 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) return } - workflowsList = response.Workflows + workflowsListResp.Workflows = response.Workflows } - workflows["appId"] = app.Id - workflows["appName"] = app.AppName - if len(workflowsList) > 0 && app.AppType == helper.Job { + if len(workflowsListResp.Workflows) > 0 && appType == helper.Job { // RBAC var workflowNames []string @@ -256,7 +246,7 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r var rbacObjects []string workNameObjectMap := make(map[string]bean2.AppWorkflowDto) - for _, workflow := range workflowsList { + for _, workflow := range workflowsListResp.Workflows { workflowNames = append(workflowNames, workflow.Name) workflowIds = append(workflowIds, workflow.Id) } @@ -264,7 +254,7 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r itr := 0 for _, val := range workflowIdToObjectMap { rbacObjects = append(rbacObjects, val) - workNameObjectMap[val] = workflowsList[itr] + workNameObjectMap[val] = workflowsListResp.Workflows[itr] itr++ } @@ -277,20 +267,8 @@ func (impl AppWorkflowRestHandlerImpl) FindAppWorkflow(w http.ResponseWriter, r if len(updatedWorkflowList) == 0 { updatedWorkflowList = []bean2.AppWorkflowDto{} } - workflows[bean3.Workflows] = updatedWorkflowList - } else if len(workflowsList) > 0 { - workflows[bean3.Workflows] = workflowsList - } else { - workflows[bean3.Workflows] = []bean2.AppWorkflowDto{} - } - isAppLevelGitOpsConfigured, err := impl.chartService.IsGitOpsRepoConfiguredForDevtronApp(appId) - if err != nil && !util.IsErrNoRows(err) { - impl.Logger.Errorw("service err, IsGitOpsRepoConfiguredForDevtronApp", "appId", appId, "envIds", envIds, "err", err) - common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) - return } - workflows["isGitOpsRepoNotConfigured"] = !isAppLevelGitOpsConfigured - common.WriteJsonResp(w, nil, workflows, http.StatusOK) + common.WriteJsonResp(w, nil, workflowsListResp, http.StatusOK) } func (impl AppWorkflowRestHandlerImpl) FindAllWorkflows(w http.ResponseWriter, r *http.Request) { diff --git a/pkg/appWorkflow/AppWorkflowService.go b/pkg/appWorkflow/AppWorkflowService.go index ba700ca925..a09106058d 100644 --- a/pkg/appWorkflow/AppWorkflowService.go +++ b/pkg/appWorkflow/AppWorkflowService.go @@ -19,6 +19,7 @@ package appWorkflow import ( "errors" "fmt" + "github.com/devtron-labs/devtron/internal/sql/repository/helper" bean4 "github.com/devtron-labs/devtron/pkg/appWorkflow/bean" "github.com/devtron-labs/devtron/pkg/deployment/common" util2 "github.com/devtron-labs/devtron/util" @@ -46,6 +47,7 @@ import ( type AppWorkflowService interface { CreateAppWorkflow(req bean4.AppWorkflowDto) (bean4.AppWorkflowDto, error) + FindAppWorkflowsListResolvedResp(appId int) (resp bean4.AppWorkflowListRespDto, appType helper.AppType, err error) FindAppWorkflows(appId int) ([]bean4.AppWorkflowDto, error) FindAppWorkflowById(Id int, appId int) (bean4.AppWorkflowDto, error) DeleteAppWorkflow(appWorkflowId int, userId int32) error @@ -79,6 +81,7 @@ type AppWorkflowServiceImpl struct { userAuthService user.UserAuthService chartService chart.ChartService deploymentConfigService common.DeploymentConfigService + pipelineBuilder pipeline.PipelineBuilder } func NewAppWorkflowServiceImpl(logger *zap.SugaredLogger, appWorkflowRepository appWorkflow.AppWorkflowRepository, @@ -86,6 +89,7 @@ func NewAppWorkflowServiceImpl(logger *zap.SugaredLogger, appWorkflowRepository pipelineRepository pipelineConfig.PipelineRepository, enforcerUtil rbac.EnforcerUtil, resourceGroupService resourceGroup2.ResourceGroupService, appRepository appRepository.AppRepository, userAuthService user.UserAuthService, chartService chart.ChartService, deploymentConfigService common.DeploymentConfigService, + pipelineBuilder pipeline.PipelineBuilder, ) *AppWorkflowServiceImpl { return &AppWorkflowServiceImpl{ Logger: logger, @@ -99,6 +103,7 @@ func NewAppWorkflowServiceImpl(logger *zap.SugaredLogger, appWorkflowRepository userAuthService: userAuthService, chartService: chartService, deploymentConfigService: deploymentConfigService, + pipelineBuilder: pipelineBuilder, } } @@ -153,6 +158,34 @@ func (impl AppWorkflowServiceImpl) CreateAppWorkflow(req bean4.AppWorkflowDto) ( return req, nil } +func (impl AppWorkflowServiceImpl) FindAppWorkflowsListResolvedResp(appId int) (resp bean4.AppWorkflowListRespDto, appType helper.AppType, err error) { + app, err := impl.pipelineBuilder.GetApp(appId) + if err != nil { + impl.Logger.Errorw("error, GetApp", "appId", appId, "err", err) + return resp, appType, err + } + workflowsList, err := impl.FindAppWorkflows(appId) + if err != nil { + impl.Logger.Errorw("error in fetching workflows for app", "appId", appId, "err", err) + return resp, appType, err + } + isAppLevelGitOpsConfigured, err := impl.chartService.IsGitOpsRepoConfiguredForDevtronApp(appId) + if err != nil && !util.IsErrNoRows(err) { + impl.Logger.Errorw("service err, IsGitOpsRepoConfiguredForDevtronApp", "appId", appId, "err", err) + return resp, appType, err + } + resp.AppId = app.Id + resp.AppName = app.AppName + resp.Workflows = workflowsList + resp.IsGitOpsRepoNotConfigured = !isAppLevelGitOpsConfigured + if len(workflowsList) > 0 { + resp.Workflows = workflowsList + } else { + resp.Workflows = []bean4.AppWorkflowDto{} + } + return resp, app.AppType, nil +} + func (impl AppWorkflowServiceImpl) FindAppWorkflows(appId int) ([]bean4.AppWorkflowDto, error) { appWorkflows, err := impl.appWorkflowRepository.FindByAppId(appId) if err != nil && err != pg.ErrNoRows { diff --git a/pkg/appWorkflow/bean/bean.go b/pkg/appWorkflow/bean/bean.go index 9660e50ee8..655d01c9a3 100644 --- a/pkg/appWorkflow/bean/bean.go +++ b/pkg/appWorkflow/bean/bean.go @@ -55,6 +55,13 @@ type WorkflowComponents struct { CdPipelineIds []int } +type AppWorkflowListRespDto struct { + Workflows []AppWorkflowDto `json:"workflows"` + AppId int `json:"appId"` + AppName string `json:"appName"` + IsGitOpsRepoNotConfigured bool `json:"isGitOpsRepoNotConfigured"` +} + type AppWorkflowDto struct { Id int `json:"id,omitempty"` Name string `json:"name"` From 20e44d1232ffcc5f7cb191bc4a101198ba83e887 Mon Sep 17 00:00:00 2001 From: prakhar katiyar Date: Tue, 11 Mar 2025 18:40:23 +0530 Subject: [PATCH 08/25] prom client in chart-sync --- pkg/chartRepo/ManualAppSyncYaml.go | 32 ++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/pkg/chartRepo/ManualAppSyncYaml.go b/pkg/chartRepo/ManualAppSyncYaml.go index 14fdac4d1a..ba083e0ab5 100644 --- a/pkg/chartRepo/ManualAppSyncYaml.go +++ b/pkg/chartRepo/ManualAppSyncYaml.go @@ -23,12 +23,13 @@ import ( ) type AppSyncConfig struct { - DbConfig sql.Config - DockerImage string - AppSyncJobResourcesObj string - ChartProviderConfig *ChartProviderConfig - AppSyncServiceAccount string + DbConfig sql.Config + DockerImage string + AppSyncJobResourcesObj string + ChartProviderConfig *ChartProviderConfig + AppSyncServiceAccount string ParallelismLimitForTagProcessing int + AppSyncJobShutDownInterval int } type ChartProviderConfig struct { @@ -36,15 +37,18 @@ type ChartProviderConfig struct { IsOCIRegistry bool } +const AppSyncJobShutDownInterval = 60 + func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, appSyncServiceAccount string, chartProviderConfig *ChartProviderConfig, ParallelismLimitForTagProcessing int) []byte { cfg, _ := sql.GetConfig() configValues := AppSyncConfig{ - DbConfig: sql.Config{Addr: cfg.Addr, Database: cfg.Database, User: cfg.User, Password: cfg.Password}, - DockerImage: dockerImage, - AppSyncJobResourcesObj: appSyncJobResourcesObj, - ChartProviderConfig: chartProviderConfig, - AppSyncServiceAccount: appSyncServiceAccount, + DbConfig: sql.Config{Addr: cfg.Addr, Database: cfg.Database, User: cfg.User, Password: cfg.Password}, + DockerImage: dockerImage, + AppSyncJobResourcesObj: appSyncJobResourcesObj, + ChartProviderConfig: chartProviderConfig, + AppSyncServiceAccount: appSyncServiceAccount, ParallelismLimitForTagProcessing: ParallelismLimitForTagProcessing, + AppSyncJobShutDownInterval: AppSyncJobShutDownInterval, } temp := template.New("manualAppSyncJobByteArr") temp, _ = temp.Parse(`{"apiVersion": "batch/v1", @@ -71,6 +75,10 @@ func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, { "name": "chart-sync", "image": "{{.DockerImage}}", + "ports": + - "containerPort": 8080 + "name": "metrics" + "protocol": "TCP" {{if .AppSyncJobResourcesObj}} "resources": {{.AppSyncJobResourcesObj}}, {{end}} @@ -102,6 +110,10 @@ func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, { "name": "PARALLELISM_LIMIT_FOR_TAG_PROCESSING", "value": "{{.ParallelismLimitForTagProcessing}}" + }, + { + "name": "APP_SYNC_SHUTDOWN_INTERVAL", + "value": "{{.AppSyncJobShutDownInterval}}" } ] } From e048bd69e47c6468961e7721ae8a674771bc7be4 Mon Sep 17 00:00:00 2001 From: prakhar katiyar Date: Wed, 12 Mar 2025 12:10:17 +0530 Subject: [PATCH 09/25] fix in yaml --- pkg/chartRepo/ManualAppSyncYaml.go | 11 +++++++---- wire_gen.go | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pkg/chartRepo/ManualAppSyncYaml.go b/pkg/chartRepo/ManualAppSyncYaml.go index ba083e0ab5..7047d77b4d 100644 --- a/pkg/chartRepo/ManualAppSyncYaml.go +++ b/pkg/chartRepo/ManualAppSyncYaml.go @@ -75,10 +75,13 @@ func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, { "name": "chart-sync", "image": "{{.DockerImage}}", - "ports": - - "containerPort": 8080 - "name": "metrics" - "protocol": "TCP" + "ports": [ + { + "containerPort": 8080, + "name": "metrics", + "protocol": "TCP" + } + ], {{if .AppSyncJobResourcesObj}} "resources": {{.AppSyncJobResourcesObj}}, {{end}} diff --git a/wire_gen.go b/wire_gen.go index 6a846a465a..2a551d534e 100644 --- a/wire_gen.go +++ b/wire_gen.go @@ -1,6 +1,6 @@ // Code generated by Wire. DO NOT EDIT. -//go:generate go run github.com/google/wire/cmd/wire +//go:generate go run -mod=mod github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject From ee3565ff3cc73e7b9c04cb5e31c91e5e054e72d7 Mon Sep 17 00:00:00 2001 From: prakhar katiyar Date: Sun, 16 Mar 2025 13:23:14 +0530 Subject: [PATCH 10/25] APP_SYNC_SHUTDOWN_WAIT_DURATION env --- env_gen.json | 2 +- env_gen.md | 1 + pkg/chartRepo/ManualAppSyncYaml.go | 9 +++------ 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/env_gen.json b/env_gen.json index 6ca53e47c4..d82bf63650 100644 --- a/env_gen.json +++ b/env_gen.json @@ -1 +1 @@ -[{"Category":"CD","Fields":[{"Env":"ARGO_APP_MANUAL_SYNC_TIME","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_HELM_PIPELINE_STATUS_CRON_TIME","EnvType":"string","EnvValue":"*/2 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PIPELINE_STATUS_CRON_TIME","EnvType":"string","EnvValue":"*/2 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PIPELINE_STATUS_TIMEOUT_DURATION","EnvType":"string","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEPLOY_STATUS_CRON_GET_PIPELINE_DEPLOYED_WITHIN_HOURS","EnvType":"int","EnvValue":"12","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_CHART_ARGO_CD_INSTALL_REQUEST_TIMEOUT","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_CHART_INSTALL_REQUEST_TIMEOUT","EnvType":"int","EnvValue":"6","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXPOSE_CD_METRICS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_MIGRATE_ARGOCD_APPLICATION_ENABLE","EnvType":"bool","EnvValue":"false","EnvDescription":"enable migration of external argocd application to devtron pipeline","Example":"","Deprecated":"false"},{"Env":"HELM_PIPELINE_STATUS_CHECK_ELIGIBLE_TIME","EnvType":"string","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IS_INTERNAL_USE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MIGRATE_DEPLOYMENT_CONFIG_DATA","EnvType":"bool","EnvValue":"false","EnvDescription":"migrate deployment config data from charts table to deployment_config table","Example":"","Deprecated":"false"},{"Env":"PIPELINE_DEGRADED_TIME","EnvType":"string","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_DEVTRON_APP","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_EXTERNAL_HELM_APP","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_HELM_APP","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUN_HELM_INSTALL_IN_ASYNC_MODE_HELM_APPS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SHOULD_CHECK_NAMESPACE_ON_CLONE","EnvType":"bool","EnvValue":"false","EnvDescription":"should we check if namespace exists or not while cloning app","Example":"","Deprecated":"false"},{"Env":"USE_DEPLOYMENT_CONFIG_DATA","EnvType":"bool","EnvValue":"false","EnvDescription":"use deployment config data from deployment_config table","Example":"","Deprecated":"true"}]},{"Category":"CI_RUNNER","Fields":[{"Env":"AZURE_ACCOUNT_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_ACCOUNT_NAME","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_BLOB_CONTAINER_CI_CACHE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_BLOB_CONTAINER_CI_LOG","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_GATEWAY_CONNECTION_INSECURE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_GATEWAY_URL","EnvType":"string","EnvValue":"http://devtron-minio.devtroncd:9000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BASE_LOG_LOCATION_PATH","EnvType":"string","EnvValue":"/home/devtron/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_GCP_CREDENTIALS_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_PROVIDER","EnvType":"","EnvValue":"S3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ACCESS_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_BUCKET_VERSIONED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ENDPOINT","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ENDPOINT_INSECURE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_SECRET_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_CACHE_PATH","EnvType":"string","EnvValue":"/var/lib/devtron/buildx","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_K8S_DRIVER_OPTIONS","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_PROVENANCE_MODE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILD_LOG_TTL_VALUE_IN_SECS","EnvType":"int","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CACHE_LIMIT","EnvType":"int64","EnvValue":"5000000000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_DEFAULT_ADDRESS_POOL_BASE_CIDR","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_DEFAULT_ADDRESS_POOL_SIZE","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_LIMIT_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_LIMIT_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"dedicated","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_REQ_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_REQ_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_WORKFLOW_EXECUTOR_TYPE","EnvType":"","EnvValue":"AWF","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_WORKFLOW_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"cd-runner","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_DEFAULT_ADDRESS_POOL_BASE_CIDR","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_DEFAULT_ADDRESS_POOL_SIZE","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_IGNORE_DOCKER_CACHE","EnvType":"bool","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_LOGS_KEY_PREFIX","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_RUNNER_DOCKER_MTU_VALUE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_SUCCESS_AUTO_TRIGGER_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_VOLUME_MOUNTS_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_WORKFLOW_EXECUTOR_TYPE","EnvType":"","EnvValue":"AWF","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_ARTIFACT_KEY_LOCATION","EnvType":"string","EnvValue":"arsenal-v1/ci-artifacts","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_BUILD_LOGS_BUCKET","EnvType":"string","EnvValue":"devtron-pro-ci-logs","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_BUILD_LOGS_KEY_PREFIX","EnvType":"string","EnvValue":"arsenal-v1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CACHE_BUCKET","EnvType":"string","EnvValue":"ci-caching","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CACHE_BUCKET_REGION","EnvType":"string","EnvValue":"us-east-2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_ARTIFACT_KEY_LOCATION","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_LOGS_BUCKET_REGION","EnvType":"string","EnvValue":"us-east-2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_NAMESPACE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_TIMEOUT","EnvType":"int64","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CI_IMAGE","EnvType":"string","EnvValue":"686244538589.dkr.ecr.us-east-2.amazonaws.com/cirunner:47","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"devtron-ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_TARGET_PLATFORM","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DOCKER_BUILD_CACHE_PATH","EnvType":"string","EnvValue":"/var/lib/docker","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_BUILD_CONTEXT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_WORKFLOW_EXECUTION_STAGE","EnvType":"bool","EnvValue":"true","EnvDescription":"if enabled then we will display build stages separately for CI/Job/Pre-Post CD","Example":"true","Deprecated":"false"},{"Env":"EXTERNAL_BLOB_STORAGE_CM_NAME","EnvType":"string","EnvValue":"blob-storage-cm","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_BLOB_STORAGE_SECRET_NAME","EnvType":"string","EnvValue":"blob-storage-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"dedicated","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_API_SECRET","EnvType":"string","EnvValue":"devtroncd-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_PAYLOAD","EnvType":"string","EnvValue":"{\"ciProjectDetails\":[{\"gitRepository\":\"https://github.com/vikram1601/getting-started-nodejs.git\",\"checkoutPath\":\"./abc\",\"commitHash\":\"239077135f8cdeeccb7857e2851348f558cb53d3\",\"commitTime\":\"2022-10-30T20:00:00\",\"branch\":\"master\",\"message\":\"Update README.md\",\"author\":\"User Name \"}],\"dockerImage\":\"445808685819.dkr.ecr.us-east-2.amazonaws.com/orch:23907713-2\"}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_WEB_HOOK_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IGNORE_CM_CS_IN_CI_JOB","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_RETRY_COUNT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_RETRY_INTERVAL","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCANNER_ENDPOINT","EnvType":"string","EnvValue":"http://image-scanner-new-demo-devtroncd-service.devtroncd:80","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCAN_MAX_RETRIES","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCAN_RETRY_DELAY","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IN_APP_LOGGING_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_CD_WORKFLOW_RUNNER_RETRIES","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_CI_WORKFLOW_RETRIES","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODE","EnvType":"string","EnvValue":"DEV","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_SERVER_HOST","EnvType":"string","EnvValue":"localhost:4222","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ORCH_HOST","EnvType":"string","EnvValue":"http://devtroncd-orchestrator-service-prod.devtroncd/webhook/msg/nats","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ORCH_TOKEN","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PRE_CI_CACHE_PATH","EnvType":"string","EnvValue":"/devtroncd-cache","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SHOW_DOCKER_BUILD_ARGS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SKIP_CI_JOB_BUILD_CACHE_PUSH_PULL","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SKIP_CREATING_ECR_REPO","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINATION_GRACE_PERIOD_SECS","EnvType":"int","EnvValue":"180","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_ARTIFACT_LISTING_QUERY_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BLOB_STORAGE_CONFIG_IN_CD_WORKFLOW","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BLOB_STORAGE_CONFIG_IN_CI_WORKFLOW","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BUILDX","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_DOCKER_API_TO_GET_DIGEST","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_EXTERNAL_NODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_IMAGE_TAG_FROM_GIT_PROVIDER_FOR_TAG_BASED_BUILD","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WF_CONTROLLER_INSTANCE_ID","EnvType":"string","EnvValue":"devtron-runner","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WORKFLOW_CACHE_CONFIG","EnvType":"string","EnvValue":"{}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WORKFLOW_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"ci-runner","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"DEVTRON","Fields":[{"Env":"-","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_IMAGE","EnvType":"string","EnvValue":"quay.io/devtron/chart-sync:1227622d-132-3775","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_JOB_RESOURCES_OBJ","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"chart-sync","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_AUTO_SYNC_ENABLED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_GIT_COMMIT_RETRY_COUNT_ON_CONFLICT","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_GIT_COMMIT_RETRY_DELAY_ON_CONFLICT","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_REPO_REGISTER_RETRY_COUNT","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_REPO_REGISTER_RETRY_DELAY","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ASYNC_BUILDX_CACHE_EXPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BATCH_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_CACHE_MODE_MIN","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PORT","EnvType":"string","EnvValue":"8000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CExpirationTime","EnvType":"int","EnvValue":"600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_TRIGGER_CRON_TIME","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_WORKFLOW_STATUS_UPDATE_CRON","EnvType":"string","EnvValue":"*/5 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CLI_CMD_TIMEOUT_GLOBAL_SECONDS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CLUSTER_STATUS_CRON_TIME","EnvType":"int","EnvValue":"15","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CONSUMER_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_LOG_TIME_LIMIT","EnvType":"int64","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_TIMEOUT","EnvType":"float64","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_BOM_URL","EnvType":"string","EnvValue":"https://raw.githubusercontent.com/devtron-labs/devtron/%s/charts/devtron/devtron-bom.yaml","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_DEX_SECRET_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_CHART_NAME","EnvType":"string","EnvValue":"devtron-operator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_NAME","EnvType":"string","EnvValue":"devtron","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_REPO_NAME","EnvType":"string","EnvValue":"devtron","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_REPO_URL","EnvType":"string","EnvValue":"https://helm.devtron.ai","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_INSTALLATION_TYPE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_MODULES_IDENTIFIER_IN_HELM_VALUES","EnvType":"string","EnvValue":"installer.modules","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_SECRET_NAME","EnvType":"string","EnvValue":"devtron-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_VERSION_IDENTIFIER_IN_HELM_VALUES","EnvType":"string","EnvValue":"installer.release","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CID","EnvType":"string","EnvValue":"example-app","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CLIENT_ID","EnvType":"string","EnvValue":"argo-cd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CSTOREKEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_JWTKEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_RURL","EnvType":"string","EnvValue":"http://127.0.0.1:8080/callback","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_SECRET","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ECR_REPO_NAME_PREFIX","EnvType":"string","EnvValue":"test/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_ASYNC_ARGO_CD_INSTALL_DEVTRON_CHART","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_ASYNC_INSTALL_DEVTRON_CHART","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EPHEMERAL_SERVER_VERSION_REGEX","EnvType":"string","EnvValue":"v[1-9]\\.\\b(2[3-9]\\|[3-9][0-9])\\b.*","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EVENT_URL","EnvType":"string","EnvValue":"http://localhost:3000/notify","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXECUTE_WIRE_NIL_CHECKER","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXPOSE_CI_METRICS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_RESTART_WORKLOAD_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_RESTART_WORKLOAD_WORKER_POOL_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FORCE_SECURITY_SCANNING","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GITOPS_REPO_PREFIX","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GO_RUNTIME_ENV","EnvType":"string","EnvValue":"production","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_ORG_ID","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_PASSWORD","EnvType":"string","EnvValue":"prom-operator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_PORT","EnvType":"string","EnvValue":"8090","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_USERNAME","EnvType":"string","EnvValue":"admin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"HIDE_IMAGE_TAGGING_HARD_DELETE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IGNORE_AUTOCOMPLETE_AUTH_CHECK","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_GROUP_NAME","EnvType":"string","EnvValue":"installer.devtron.ai","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_RESOURCE","EnvType":"string","EnvValue":"installers","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_VERSION","EnvType":"string","EnvValue":"v1alpha1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"JwtExpirationTime","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_CLIENT_MAX_IDLE_CONNS_PER_HOST","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_IDLE_CONN_TIMEOUT","EnvType":"int","EnvValue":"300","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_KEEPALIVE","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_TIMEOUT","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TLS_HANDSHAKE_TIMEOUT","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_RECEIVE_MSG_SIZE","EnvType":"int","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_SEND_MSG_SIZE","EnvType":"int","EnvValue":"4","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LENS_TIMEOUT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LENS_URL","EnvType":"string","EnvValue":"http://lens-milandevtron-service:80","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LIMIT_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LIMIT_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOGGER_DEV_MODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOG_LEVEL","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_SESSION_PER_USER","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODULE_METADATA_API_URL","EnvType":"string","EnvValue":"https://api.devtron.ai/module?name=%s","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODULE_STATUS_HANDLING_CRON_DURATION_MIN","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_ACK_WAIT_IN_SECS","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_BUFFER_SIZE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_MAX_AGE","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_PROCESSING_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_REPLICAS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NOTIFICATION_MEDIUM","EnvType":"NotificationMedium","EnvValue":"rest","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"OTEL_COLLECTOR_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PARALLELISM_LIMIT_FOR_TAG_PROCESSING","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_EXPORT_PROM_METRICS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_FAILURE_QUERIES","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_QUERY","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_SLOW_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_QUERY_DUR_THRESHOLD","EnvType":"int64","EnvValue":"5000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PLUGIN_NAME","EnvType":"string","EnvValue":"Pull images from container repository","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PROPAGATE_EXTRA_LABELS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PROXY_SERVICE_CONFIG","EnvType":"string","EnvValue":"{}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REQ_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REQ_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESTRICT_TERMINAL_ACCESS_FOR_NON_SUPER_USER","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUNTIME_CONFIG_LOCAL_DEV","EnvType":"LocalDevMode","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_FORMAT","EnvType":"string","EnvValue":"@{{%s}}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_HANDLE_PRIMITIVES","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_NAME_REGEX","EnvType":"string","EnvValue":"^[a-zA-Z][a-zA-Z0-9_-]{0,62}[a-zA-Z0-9]$","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SOCKET_DISCONNECT_DELAY_SECONDS","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SOCKET_HEARTBEAT_SECONDS","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"STREAM_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SYSTEM_VAR_PREFIX","EnvType":"string","EnvValue":"DEVTRON_","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"default","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_INACTIVE_DURATION_IN_MINS","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_STATUS_SYNC_In_SECS","EnvType":"int","EnvValue":"600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_APP","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_LOG_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_PASSWORD","EnvType":"string","EnvValue":"postgrespw","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_PORT","EnvType":"string","EnvValue":"55000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_USER","EnvType":"string","EnvValue":"postgres","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TIMEOUT_FOR_FAILED_CI_BUILD","EnvType":"string","EnvValue":"15","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TIMEOUT_IN_SECONDS","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USER_SESSION_DURATION_SECONDS","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_ARTIFACT_LISTING_API_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CUSTOM_HTTP_TRANSPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_GIT_CLI","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_RBAC_CREATION_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"VARIABLE_CACHE_ENABLED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"VARIABLE_EXPRESSION_REGEX","EnvType":"string","EnvValue":"@{{([^}]+)}}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WEBHOOK_TOKEN","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"GITOPS","Fields":[{"Env":"ACD_CM","EnvType":"string","EnvValue":"argocd-cm","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_PASSWORD","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_USERNAME","EnvType":"string","EnvValue":"admin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GITOPS_SECRET_NAME","EnvType":"string","EnvValue":"devtron-gitops-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESOURCE_LIST_FOR_REPLICAS","EnvType":"string","EnvValue":"Deployment,Rollout,StatefulSet,ReplicaSet","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESOURCE_LIST_FOR_REPLICAS_BATCH_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"INFRA_SETUP","Fields":[{"Env":"DASHBOARD_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DASHBOARD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DASHBOARD_PORT","EnvType":"string","EnvValue":"3000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_HOST","EnvType":"string","EnvValue":"http://localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_PORT","EnvType":"string","EnvValue":"5556","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_PROTOCOL","EnvType":"string","EnvValue":"REST","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_TIMEOUT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_URL","EnvType":"string","EnvValue":"127.0.0.1:7070","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"HELM_CLIENT_URL","EnvType":"string","EnvValue":"127.0.0.1:50051","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"POSTGRES","Fields":[{"Env":"APP","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"Application name","Example":"","Deprecated":"false"},{"Env":"CASBIN_DATABASE","EnvType":"string","EnvValue":"casbin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"address of postgres service","Example":"postgresql-postgresql.devtroncd","Deprecated":"false"},{"Env":"PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"postgres database to be made connection with","Example":"orchestrator, casbin, git_sensor, lens","Deprecated":"false"},{"Env":"PG_PASSWORD","EnvType":"string","EnvValue":"{password}","EnvDescription":"password for postgres, associated with PG_USER","Example":"confidential ;)","Deprecated":"false"},{"Env":"PG_PORT","EnvType":"string","EnvValue":"5432","EnvDescription":"port of postgresql service","Example":"5432","Deprecated":"false"},{"Env":"PG_READ_TIMEOUT","EnvType":"int64","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_USER","EnvType":"string","EnvValue":"postgres","EnvDescription":"user for postgres","Example":"postgres","Deprecated":"false"},{"Env":"PG_WRITE_TIMEOUT","EnvType":"int64","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"RBAC","Fields":[{"Env":"ENFORCER_CACHE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENFORCER_CACHE_EXPIRATION_IN_SEC","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENFORCER_MAX_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CASBIN_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"}]}] \ No newline at end of file +[{"Category":"CD","Fields":[{"Env":"ARGO_APP_MANUAL_SYNC_TIME","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_HELM_PIPELINE_STATUS_CRON_TIME","EnvType":"string","EnvValue":"*/2 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PIPELINE_STATUS_CRON_TIME","EnvType":"string","EnvValue":"*/2 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PIPELINE_STATUS_TIMEOUT_DURATION","EnvType":"string","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEPLOY_STATUS_CRON_GET_PIPELINE_DEPLOYED_WITHIN_HOURS","EnvType":"int","EnvValue":"12","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_CHART_ARGO_CD_INSTALL_REQUEST_TIMEOUT","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_CHART_INSTALL_REQUEST_TIMEOUT","EnvType":"int","EnvValue":"6","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXPOSE_CD_METRICS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_MIGRATE_ARGOCD_APPLICATION_ENABLE","EnvType":"bool","EnvValue":"false","EnvDescription":"enable migration of external argocd application to devtron pipeline","Example":"","Deprecated":"false"},{"Env":"HELM_PIPELINE_STATUS_CHECK_ELIGIBLE_TIME","EnvType":"string","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IS_INTERNAL_USE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MIGRATE_DEPLOYMENT_CONFIG_DATA","EnvType":"bool","EnvValue":"false","EnvDescription":"migrate deployment config data from charts table to deployment_config table","Example":"","Deprecated":"false"},{"Env":"PIPELINE_DEGRADED_TIME","EnvType":"string","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_DEVTRON_APP","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_EXTERNAL_HELM_APP","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_HELM_APP","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUN_HELM_INSTALL_IN_ASYNC_MODE_HELM_APPS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SHOULD_CHECK_NAMESPACE_ON_CLONE","EnvType":"bool","EnvValue":"false","EnvDescription":"should we check if namespace exists or not while cloning app","Example":"","Deprecated":"false"},{"Env":"USE_DEPLOYMENT_CONFIG_DATA","EnvType":"bool","EnvValue":"false","EnvDescription":"use deployment config data from deployment_config table","Example":"","Deprecated":"true"}]},{"Category":"CI_RUNNER","Fields":[{"Env":"AZURE_ACCOUNT_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_ACCOUNT_NAME","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_BLOB_CONTAINER_CI_CACHE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_BLOB_CONTAINER_CI_LOG","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_GATEWAY_CONNECTION_INSECURE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_GATEWAY_URL","EnvType":"string","EnvValue":"http://devtron-minio.devtroncd:9000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BASE_LOG_LOCATION_PATH","EnvType":"string","EnvValue":"/home/devtron/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_GCP_CREDENTIALS_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_PROVIDER","EnvType":"","EnvValue":"S3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ACCESS_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_BUCKET_VERSIONED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ENDPOINT","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ENDPOINT_INSECURE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_SECRET_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_CACHE_PATH","EnvType":"string","EnvValue":"/var/lib/devtron/buildx","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_K8S_DRIVER_OPTIONS","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_PROVENANCE_MODE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILD_LOG_TTL_VALUE_IN_SECS","EnvType":"int","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CACHE_LIMIT","EnvType":"int64","EnvValue":"5000000000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_DEFAULT_ADDRESS_POOL_BASE_CIDR","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_DEFAULT_ADDRESS_POOL_SIZE","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_LIMIT_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_LIMIT_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"dedicated","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_REQ_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_REQ_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_WORKFLOW_EXECUTOR_TYPE","EnvType":"","EnvValue":"AWF","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_WORKFLOW_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"cd-runner","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_DEFAULT_ADDRESS_POOL_BASE_CIDR","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_DEFAULT_ADDRESS_POOL_SIZE","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_IGNORE_DOCKER_CACHE","EnvType":"bool","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_LOGS_KEY_PREFIX","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_RUNNER_DOCKER_MTU_VALUE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_SUCCESS_AUTO_TRIGGER_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_VOLUME_MOUNTS_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_WORKFLOW_EXECUTOR_TYPE","EnvType":"","EnvValue":"AWF","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_ARTIFACT_KEY_LOCATION","EnvType":"string","EnvValue":"arsenal-v1/ci-artifacts","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_BUILD_LOGS_BUCKET","EnvType":"string","EnvValue":"devtron-pro-ci-logs","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_BUILD_LOGS_KEY_PREFIX","EnvType":"string","EnvValue":"arsenal-v1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CACHE_BUCKET","EnvType":"string","EnvValue":"ci-caching","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CACHE_BUCKET_REGION","EnvType":"string","EnvValue":"us-east-2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_ARTIFACT_KEY_LOCATION","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_LOGS_BUCKET_REGION","EnvType":"string","EnvValue":"us-east-2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_NAMESPACE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_TIMEOUT","EnvType":"int64","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CI_IMAGE","EnvType":"string","EnvValue":"686244538589.dkr.ecr.us-east-2.amazonaws.com/cirunner:47","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"devtron-ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_TARGET_PLATFORM","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DOCKER_BUILD_CACHE_PATH","EnvType":"string","EnvValue":"/var/lib/docker","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_BUILD_CONTEXT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_WORKFLOW_EXECUTION_STAGE","EnvType":"bool","EnvValue":"true","EnvDescription":"if enabled then we will display build stages separately for CI/Job/Pre-Post CD","Example":"true","Deprecated":"false"},{"Env":"EXTERNAL_BLOB_STORAGE_CM_NAME","EnvType":"string","EnvValue":"blob-storage-cm","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_BLOB_STORAGE_SECRET_NAME","EnvType":"string","EnvValue":"blob-storage-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"dedicated","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_API_SECRET","EnvType":"string","EnvValue":"devtroncd-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_PAYLOAD","EnvType":"string","EnvValue":"{\"ciProjectDetails\":[{\"gitRepository\":\"https://github.com/vikram1601/getting-started-nodejs.git\",\"checkoutPath\":\"./abc\",\"commitHash\":\"239077135f8cdeeccb7857e2851348f558cb53d3\",\"commitTime\":\"2022-10-30T20:00:00\",\"branch\":\"master\",\"message\":\"Update README.md\",\"author\":\"User Name \"}],\"dockerImage\":\"445808685819.dkr.ecr.us-east-2.amazonaws.com/orch:23907713-2\"}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_WEB_HOOK_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IGNORE_CM_CS_IN_CI_JOB","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_RETRY_COUNT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_RETRY_INTERVAL","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCANNER_ENDPOINT","EnvType":"string","EnvValue":"http://image-scanner-new-demo-devtroncd-service.devtroncd:80","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCAN_MAX_RETRIES","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCAN_RETRY_DELAY","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IN_APP_LOGGING_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_CD_WORKFLOW_RUNNER_RETRIES","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_CI_WORKFLOW_RETRIES","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODE","EnvType":"string","EnvValue":"DEV","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_SERVER_HOST","EnvType":"string","EnvValue":"localhost:4222","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ORCH_HOST","EnvType":"string","EnvValue":"http://devtroncd-orchestrator-service-prod.devtroncd/webhook/msg/nats","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ORCH_TOKEN","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PRE_CI_CACHE_PATH","EnvType":"string","EnvValue":"/devtroncd-cache","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SHOW_DOCKER_BUILD_ARGS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SKIP_CI_JOB_BUILD_CACHE_PUSH_PULL","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SKIP_CREATING_ECR_REPO","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINATION_GRACE_PERIOD_SECS","EnvType":"int","EnvValue":"180","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_ARTIFACT_LISTING_QUERY_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BLOB_STORAGE_CONFIG_IN_CD_WORKFLOW","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BLOB_STORAGE_CONFIG_IN_CI_WORKFLOW","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BUILDX","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_DOCKER_API_TO_GET_DIGEST","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_EXTERNAL_NODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_IMAGE_TAG_FROM_GIT_PROVIDER_FOR_TAG_BASED_BUILD","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WF_CONTROLLER_INSTANCE_ID","EnvType":"string","EnvValue":"devtron-runner","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WORKFLOW_CACHE_CONFIG","EnvType":"string","EnvValue":"{}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WORKFLOW_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"ci-runner","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"DEVTRON","Fields":[{"Env":"-","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_IMAGE","EnvType":"string","EnvValue":"quay.io/devtron/chart-sync:1227622d-132-3775","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_JOB_RESOURCES_OBJ","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"chart-sync","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_SHUTDOWN_WAIT_DURATION","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_AUTO_SYNC_ENABLED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_GIT_COMMIT_RETRY_COUNT_ON_CONFLICT","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_GIT_COMMIT_RETRY_DELAY_ON_CONFLICT","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_REPO_REGISTER_RETRY_COUNT","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_REPO_REGISTER_RETRY_DELAY","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ASYNC_BUILDX_CACHE_EXPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BATCH_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_CACHE_MODE_MIN","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PORT","EnvType":"string","EnvValue":"8000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CExpirationTime","EnvType":"int","EnvValue":"600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_TRIGGER_CRON_TIME","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_WORKFLOW_STATUS_UPDATE_CRON","EnvType":"string","EnvValue":"*/5 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CLI_CMD_TIMEOUT_GLOBAL_SECONDS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CLUSTER_STATUS_CRON_TIME","EnvType":"int","EnvValue":"15","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CONSUMER_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_LOG_TIME_LIMIT","EnvType":"int64","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_TIMEOUT","EnvType":"float64","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_BOM_URL","EnvType":"string","EnvValue":"https://raw.githubusercontent.com/devtron-labs/devtron/%s/charts/devtron/devtron-bom.yaml","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_DEX_SECRET_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_CHART_NAME","EnvType":"string","EnvValue":"devtron-operator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_NAME","EnvType":"string","EnvValue":"devtron","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_REPO_NAME","EnvType":"string","EnvValue":"devtron","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_REPO_URL","EnvType":"string","EnvValue":"https://helm.devtron.ai","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_INSTALLATION_TYPE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_MODULES_IDENTIFIER_IN_HELM_VALUES","EnvType":"string","EnvValue":"installer.modules","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_SECRET_NAME","EnvType":"string","EnvValue":"devtron-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_VERSION_IDENTIFIER_IN_HELM_VALUES","EnvType":"string","EnvValue":"installer.release","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CID","EnvType":"string","EnvValue":"example-app","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CLIENT_ID","EnvType":"string","EnvValue":"argo-cd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CSTOREKEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_JWTKEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_RURL","EnvType":"string","EnvValue":"http://127.0.0.1:8080/callback","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_SECRET","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ECR_REPO_NAME_PREFIX","EnvType":"string","EnvValue":"test/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_ASYNC_ARGO_CD_INSTALL_DEVTRON_CHART","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_ASYNC_INSTALL_DEVTRON_CHART","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EPHEMERAL_SERVER_VERSION_REGEX","EnvType":"string","EnvValue":"v[1-9]\\.\\b(2[3-9]\\|[3-9][0-9])\\b.*","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EVENT_URL","EnvType":"string","EnvValue":"http://localhost:3000/notify","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXECUTE_WIRE_NIL_CHECKER","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXPOSE_CI_METRICS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_RESTART_WORKLOAD_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_RESTART_WORKLOAD_WORKER_POOL_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FORCE_SECURITY_SCANNING","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GITOPS_REPO_PREFIX","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GO_RUNTIME_ENV","EnvType":"string","EnvValue":"production","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_ORG_ID","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_PASSWORD","EnvType":"string","EnvValue":"prom-operator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_PORT","EnvType":"string","EnvValue":"8090","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_USERNAME","EnvType":"string","EnvValue":"admin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"HIDE_IMAGE_TAGGING_HARD_DELETE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IGNORE_AUTOCOMPLETE_AUTH_CHECK","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_GROUP_NAME","EnvType":"string","EnvValue":"installer.devtron.ai","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_RESOURCE","EnvType":"string","EnvValue":"installers","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_VERSION","EnvType":"string","EnvValue":"v1alpha1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"JwtExpirationTime","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_CLIENT_MAX_IDLE_CONNS_PER_HOST","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_IDLE_CONN_TIMEOUT","EnvType":"int","EnvValue":"300","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_KEEPALIVE","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_TIMEOUT","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TLS_HANDSHAKE_TIMEOUT","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_RECEIVE_MSG_SIZE","EnvType":"int","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_SEND_MSG_SIZE","EnvType":"int","EnvValue":"4","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LENS_TIMEOUT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LENS_URL","EnvType":"string","EnvValue":"http://lens-milandevtron-service:80","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LIMIT_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LIMIT_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOGGER_DEV_MODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOG_LEVEL","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_SESSION_PER_USER","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODULE_METADATA_API_URL","EnvType":"string","EnvValue":"https://api.devtron.ai/module?name=%s","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODULE_STATUS_HANDLING_CRON_DURATION_MIN","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_ACK_WAIT_IN_SECS","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_BUFFER_SIZE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_MAX_AGE","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_PROCESSING_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_REPLICAS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NOTIFICATION_MEDIUM","EnvType":"NotificationMedium","EnvValue":"rest","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"OTEL_COLLECTOR_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PARALLELISM_LIMIT_FOR_TAG_PROCESSING","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_EXPORT_PROM_METRICS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_FAILURE_QUERIES","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_QUERY","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_SLOW_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_QUERY_DUR_THRESHOLD","EnvType":"int64","EnvValue":"5000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PLUGIN_NAME","EnvType":"string","EnvValue":"Pull images from container repository","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PROPAGATE_EXTRA_LABELS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PROXY_SERVICE_CONFIG","EnvType":"string","EnvValue":"{}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REQ_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REQ_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESTRICT_TERMINAL_ACCESS_FOR_NON_SUPER_USER","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUNTIME_CONFIG_LOCAL_DEV","EnvType":"LocalDevMode","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_FORMAT","EnvType":"string","EnvValue":"@{{%s}}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_HANDLE_PRIMITIVES","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_NAME_REGEX","EnvType":"string","EnvValue":"^[a-zA-Z][a-zA-Z0-9_-]{0,62}[a-zA-Z0-9]$","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SOCKET_DISCONNECT_DELAY_SECONDS","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SOCKET_HEARTBEAT_SECONDS","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"STREAM_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SYSTEM_VAR_PREFIX","EnvType":"string","EnvValue":"DEVTRON_","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"default","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_INACTIVE_DURATION_IN_MINS","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_STATUS_SYNC_In_SECS","EnvType":"int","EnvValue":"600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_APP","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_LOG_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_PASSWORD","EnvType":"string","EnvValue":"postgrespw","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_PORT","EnvType":"string","EnvValue":"55000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_USER","EnvType":"string","EnvValue":"postgres","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TIMEOUT_FOR_FAILED_CI_BUILD","EnvType":"string","EnvValue":"15","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TIMEOUT_IN_SECONDS","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USER_SESSION_DURATION_SECONDS","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_ARTIFACT_LISTING_API_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CUSTOM_HTTP_TRANSPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_GIT_CLI","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_RBAC_CREATION_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"VARIABLE_CACHE_ENABLED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"VARIABLE_EXPRESSION_REGEX","EnvType":"string","EnvValue":"@{{([^}]+)}}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WEBHOOK_TOKEN","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"GITOPS","Fields":[{"Env":"ACD_CM","EnvType":"string","EnvValue":"argocd-cm","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_PASSWORD","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_USERNAME","EnvType":"string","EnvValue":"admin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GITOPS_SECRET_NAME","EnvType":"string","EnvValue":"devtron-gitops-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESOURCE_LIST_FOR_REPLICAS","EnvType":"string","EnvValue":"Deployment,Rollout,StatefulSet,ReplicaSet","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESOURCE_LIST_FOR_REPLICAS_BATCH_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"INFRA_SETUP","Fields":[{"Env":"DASHBOARD_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DASHBOARD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DASHBOARD_PORT","EnvType":"string","EnvValue":"3000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_HOST","EnvType":"string","EnvValue":"http://localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_PORT","EnvType":"string","EnvValue":"5556","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_PROTOCOL","EnvType":"string","EnvValue":"REST","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_TIMEOUT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_URL","EnvType":"string","EnvValue":"127.0.0.1:7070","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"HELM_CLIENT_URL","EnvType":"string","EnvValue":"127.0.0.1:50051","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"POSTGRES","Fields":[{"Env":"APP","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"Application name","Example":"","Deprecated":"false"},{"Env":"CASBIN_DATABASE","EnvType":"string","EnvValue":"casbin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"address of postgres service","Example":"postgresql-postgresql.devtroncd","Deprecated":"false"},{"Env":"PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"postgres database to be made connection with","Example":"orchestrator, casbin, git_sensor, lens","Deprecated":"false"},{"Env":"PG_PASSWORD","EnvType":"string","EnvValue":"{password}","EnvDescription":"password for postgres, associated with PG_USER","Example":"confidential ;)","Deprecated":"false"},{"Env":"PG_PORT","EnvType":"string","EnvValue":"5432","EnvDescription":"port of postgresql service","Example":"5432","Deprecated":"false"},{"Env":"PG_READ_TIMEOUT","EnvType":"int64","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_USER","EnvType":"string","EnvValue":"postgres","EnvDescription":"user for postgres","Example":"postgres","Deprecated":"false"},{"Env":"PG_WRITE_TIMEOUT","EnvType":"int64","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"RBAC","Fields":[{"Env":"ENFORCER_CACHE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENFORCER_CACHE_EXPIRATION_IN_SEC","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENFORCER_MAX_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CASBIN_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"}]}] \ No newline at end of file diff --git a/env_gen.md b/env_gen.md index 454ac52c8d..58315830a0 100644 --- a/env_gen.md +++ b/env_gen.md @@ -128,6 +128,7 @@ | APP_SYNC_IMAGE | string |quay.io/devtron/chart-sync:1227622d-132-3775 | | | false | | APP_SYNC_JOB_RESOURCES_OBJ | string | | | | false | | APP_SYNC_SERVICE_ACCOUNT | string |chart-sync | | | false | + | APP_SYNC_SHUTDOWN_WAIT_DURATION | int |120 | | | false | | ARGO_AUTO_SYNC_ENABLED | bool |true | | | false | | ARGO_GIT_COMMIT_RETRY_COUNT_ON_CONFLICT | int |3 | | | false | | ARGO_GIT_COMMIT_RETRY_DELAY_ON_CONFLICT | int |1 | | | false | diff --git a/pkg/chartRepo/ManualAppSyncYaml.go b/pkg/chartRepo/ManualAppSyncYaml.go index 7047d77b4d..6b8b525bb5 100644 --- a/pkg/chartRepo/ManualAppSyncYaml.go +++ b/pkg/chartRepo/ManualAppSyncYaml.go @@ -29,7 +29,7 @@ type AppSyncConfig struct { ChartProviderConfig *ChartProviderConfig AppSyncServiceAccount string ParallelismLimitForTagProcessing int - AppSyncJobShutDownInterval int + AppSyncJobShutDownWaitDuration int `env:"APP_SYNC_SHUTDOWN_WAIT_DURATION" envDefault:"120"` } type ChartProviderConfig struct { @@ -37,8 +37,6 @@ type ChartProviderConfig struct { IsOCIRegistry bool } -const AppSyncJobShutDownInterval = 60 - func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, appSyncServiceAccount string, chartProviderConfig *ChartProviderConfig, ParallelismLimitForTagProcessing int) []byte { cfg, _ := sql.GetConfig() configValues := AppSyncConfig{ @@ -48,7 +46,6 @@ func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, ChartProviderConfig: chartProviderConfig, AppSyncServiceAccount: appSyncServiceAccount, ParallelismLimitForTagProcessing: ParallelismLimitForTagProcessing, - AppSyncJobShutDownInterval: AppSyncJobShutDownInterval, } temp := template.New("manualAppSyncJobByteArr") temp, _ = temp.Parse(`{"apiVersion": "batch/v1", @@ -115,8 +112,8 @@ func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, "value": "{{.ParallelismLimitForTagProcessing}}" }, { - "name": "APP_SYNC_SHUTDOWN_INTERVAL", - "value": "{{.AppSyncJobShutDownInterval}}" + "name": "APP_SYNC_SHUTDOWN_WAIT_DURATION", + "value": "{{.AppSyncJobShutDownWaitDuration}}" } ] } From b8e164a22b2b67712413b84528d97499c41c9bcf Mon Sep 17 00:00:00 2001 From: prakhar katiyar Date: Mon, 17 Mar 2025 01:05:36 +0530 Subject: [PATCH 11/25] APP_SYNC_SHUTDOWN_WAIT_DURATION env --- pkg/chartRepo/ChartRepositoryService.go | 2 +- pkg/chartRepo/ManualAppSyncYaml.go | 3 ++- pkg/server/config/ServerEnvConfig.go | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/chartRepo/ChartRepositoryService.go b/pkg/chartRepo/ChartRepositoryService.go index deaa4f1127..1df2c48e43 100644 --- a/pkg/chartRepo/ChartRepositoryService.go +++ b/pkg/chartRepo/ChartRepositoryService.go @@ -509,7 +509,7 @@ func (impl *ChartRepositoryServiceImpl) TriggerChartSyncManual(chartProviderConf defaultClusterConfig := defaultClusterBean.GetClusterConfig() - manualAppSyncJobByteArr := manualAppSyncJobByteArr(impl.serverEnvConfig.AppSyncImage, impl.serverEnvConfig.AppSyncJobResourcesObj, impl.serverEnvConfig.AppSyncServiceAccount, chartProviderConfig, impl.serverEnvConfig.ParallelismLimitForTagProcessing) + manualAppSyncJobByteArr := manualAppSyncJobByteArr(impl.serverEnvConfig.AppSyncImage, impl.serverEnvConfig.AppSyncJobResourcesObj, impl.serverEnvConfig.AppSyncServiceAccount, chartProviderConfig, impl.serverEnvConfig.ParallelismLimitForTagProcessing, impl.serverEnvConfig.AppSyncJobShutDownWaitDuration) err = impl.K8sUtil.DeleteAndCreateJob(manualAppSyncJobByteArr, impl.aCDAuthConfig.ACDConfigMapNamespace, defaultClusterConfig) if err != nil { impl.logger.Errorw("DeleteAndCreateJob err, TriggerChartSyncManual", "err", err) diff --git a/pkg/chartRepo/ManualAppSyncYaml.go b/pkg/chartRepo/ManualAppSyncYaml.go index 6b8b525bb5..651b4cd51f 100644 --- a/pkg/chartRepo/ManualAppSyncYaml.go +++ b/pkg/chartRepo/ManualAppSyncYaml.go @@ -37,7 +37,7 @@ type ChartProviderConfig struct { IsOCIRegistry bool } -func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, appSyncServiceAccount string, chartProviderConfig *ChartProviderConfig, ParallelismLimitForTagProcessing int) []byte { +func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, appSyncServiceAccount string, chartProviderConfig *ChartProviderConfig, ParallelismLimitForTagProcessing, AppSyncJobShutDownWaitDuration int) []byte { cfg, _ := sql.GetConfig() configValues := AppSyncConfig{ DbConfig: sql.Config{Addr: cfg.Addr, Database: cfg.Database, User: cfg.User, Password: cfg.Password}, @@ -46,6 +46,7 @@ func manualAppSyncJobByteArr(dockerImage string, appSyncJobResourcesObj string, ChartProviderConfig: chartProviderConfig, AppSyncServiceAccount: appSyncServiceAccount, ParallelismLimitForTagProcessing: ParallelismLimitForTagProcessing, + AppSyncJobShutDownWaitDuration: AppSyncJobShutDownWaitDuration, } temp := template.New("manualAppSyncJobByteArr") temp, _ = temp.Parse(`{"apiVersion": "batch/v1", diff --git a/pkg/server/config/ServerEnvConfig.go b/pkg/server/config/ServerEnvConfig.go index 4b4b908365..87de843bc0 100644 --- a/pkg/server/config/ServerEnvConfig.go +++ b/pkg/server/config/ServerEnvConfig.go @@ -40,6 +40,7 @@ type ServerEnvConfig struct { AppSyncJobResourcesObj string `env:"APP_SYNC_JOB_RESOURCES_OBJ"` ModuleMetaDataApiUrl string `env:"MODULE_METADATA_API_URL" envDefault:"https://api.devtron.ai/module?name=%s"` ParallelismLimitForTagProcessing int `env:"PARALLELISM_LIMIT_FOR_TAG_PROCESSING"` + AppSyncJobShutDownWaitDuration int `env:"APP_SYNC_SHUTDOWN_WAIT_DURATION" envDefault:"120"` ErrorEncounteredOnGettingDevtronHelmRelease error } From dae4efce4cfa8bb62e36f40b43c8dabd95586736 Mon Sep 17 00:00:00 2001 From: Vikram Singh Date: Mon, 17 Mar 2025 11:59:03 +0530 Subject: [PATCH 12/25] vendor update in develop --- go.mod | 4 ++-- go.sum | 8 ++++---- vendor/modules.txt | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index c30a3cd547..3f05540a21 100644 --- a/go.mod +++ b/go.mod @@ -291,8 +291,8 @@ require ( replace ( github.com/argoproj/argo-workflows/v3 v3.5.13 => github.com/devtron-labs/argo-workflows/v3 v3.5.13 - github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250313102545-75df8a5bec13 - github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13 + github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250317062447-742cf1539ee2 + github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250317062447-742cf1539ee2 github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127 github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5 k8s.io/api => k8s.io/api v0.29.7 diff --git a/go.sum b/go.sum index b55b5525b2..38ef80739b 100644 --- a/go.sum +++ b/go.sum @@ -792,10 +792,10 @@ github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc h1:VRRKCwnzq github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/devtron-labs/argo-workflows/v3 v3.5.13 h1:3pINq0gXOSeTw2z/vYe+j80lRpSN5Rp/8mfQORh8SmU= github.com/devtron-labs/argo-workflows/v3 v3.5.13/go.mod h1:/vqxcovDPT4zqr4DjR5v7CF8ggpY1l3TSa2CIG3jmjA= -github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250313102545-75df8a5bec13 h1:lXA7TfjkWmExAEyk631Ajuo3+jduEGnufe0wmzbT+hc= -github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250313102545-75df8a5bec13/go.mod h1:5lv4Wfj5ERhhvDGXe2IeES6qxjvUVCcohaRwKnWBMNo= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13 h1:oL8v0vMVzRouQAUDx+LlhfDgy8K1PbGKV8L4yOqyvGI= -github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13/go.mod h1:1QJJLpgJSkb5Jm9xPeKAk+kXb0QgBOOOgJj0cgYhAVA= +github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250317062447-742cf1539ee2 h1:7jQYKn1eLMIn7QgV13bNhueU+CbbRaSBxkWp+Dp/GTo= +github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250317062447-742cf1539ee2/go.mod h1:5lv4Wfj5ERhhvDGXe2IeES6qxjvUVCcohaRwKnWBMNo= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250317062447-742cf1539ee2 h1:blntkjXNtvA1AccbAcM6TKV+WcbXNyIstSnhDtAfuI8= +github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250317062447-742cf1539ee2/go.mod h1:1QJJLpgJSkb5Jm9xPeKAk+kXb0QgBOOOgJj0cgYhAVA= github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU= github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y= github.com/devtron-labs/protos v0.0.3-0.20240802105333-92ee9bb85d80 h1:xwbTeijNTf4/j1v+tSfwVqwLVnReas/NqEKeQHvSTys= diff --git a/vendor/modules.txt b/vendor/modules.txt index ac18a95f9f..ba21d7342d 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -342,7 +342,7 @@ github.com/davecgh/go-spew/spew # github.com/deckarep/golang-set v1.8.0 ## explicit; go 1.17 github.com/deckarep/golang-set -# github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250313102545-75df8a5bec13 +# github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250317062447-742cf1539ee2 ## explicit; go 1.21 github.com/devtron-labs/authenticator/apiToken github.com/devtron-labs/authenticator/client @@ -350,7 +350,7 @@ github.com/devtron-labs/authenticator/jwt github.com/devtron-labs/authenticator/middleware github.com/devtron-labs/authenticator/oidc github.com/devtron-labs/authenticator/password -# github.com/devtron-labs/common-lib v0.18.1-0.20241001061923-eda545dc839e => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13 +# github.com/devtron-labs/common-lib v0.18.1-0.20241001061923-eda545dc839e => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250317062447-742cf1539ee2 ## explicit; go 1.21 github.com/devtron-labs/common-lib/async github.com/devtron-labs/common-lib/blob-storage @@ -2226,8 +2226,8 @@ xorm.io/xorm/log xorm.io/xorm/names xorm.io/xorm/schemas xorm.io/xorm/tags -# github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250313102545-75df8a5bec13 -# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13 +# github.com/devtron-labs/authenticator => github.com/devtron-labs/devtron-services/authenticator v0.0.0-20250317062447-742cf1539ee2 +# github.com/devtron-labs/common-lib => github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250317062447-742cf1539ee2 # github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127 # github.com/googleapis/gnostic => github.com/googleapis/gnostic v0.5.5 # k8s.io/api => k8s.io/api v0.29.7 From a2b6047517f57649dbd2c8abcc60f3e152fef554 Mon Sep 17 00:00:00 2001 From: iamayushm <32041961+iamayushm@users.noreply.github.com> Date: Mon, 17 Mar 2025 12:36:46 +0530 Subject: [PATCH 13/25] fix: incorrect gitops metrics (#6444) * wip: fix gitops metrics * fix pull metrics * github create repo function * wip: metrics changed from defer function * fix metrics publish * self review changes --- .../argocdServer/ArgoClientWrapperService.go | 2 +- cmd/external-app/wire_gen.go | 2 +- .../gitOps/git/GitOperationService.go | 31 ++++------------ pkg/deployment/gitOps/git/GitOpsClient.go | 2 +- pkg/deployment/gitOps/git/GitOpsHelper.go | 14 +++++-- pkg/deployment/gitOps/git/GitServiceAzure.go | 30 +++++++++++---- .../gitOps/git/GitServiceBitbucket.go | 34 ++++++++++++----- pkg/deployment/gitOps/git/GitServiceGithub.go | 37 +++++++++++++------ pkg/deployment/gitOps/git/GitServiceGitlab.go | 28 +++++++++----- .../git/commandManager/GitCliManager.go | 19 +++++----- .../commandManager/GitCommandBaseManager.go | 9 +++-- .../gitOps/git/commandManager/utils.go | 8 ++++ util/helper.go | 7 +++- util/retryFunc/RetryFunction.go | 4 +- 14 files changed, 143 insertions(+), 84 deletions(-) diff --git a/client/argocdServer/ArgoClientWrapperService.go b/client/argocdServer/ArgoClientWrapperService.go index 4b028eede5..4e3b634a13 100644 --- a/client/argocdServer/ArgoClientWrapperService.go +++ b/client/argocdServer/ArgoClientWrapperService.go @@ -348,7 +348,7 @@ func (impl *ArgoClientWrapperServiceImpl) RegisterGitOpsRepoInArgoWithRetry(ctx return nil } - callback := func() error { + callback := func(int) error { return impl.createRepoInArgoCd(ctx, grpcConfig, gitOpsRepoUrl) } argoCdErr := retryFunc.Retry(callback, diff --git a/cmd/external-app/wire_gen.go b/cmd/external-app/wire_gen.go index f172415218..0d91a63f76 100644 --- a/cmd/external-app/wire_gen.go +++ b/cmd/external-app/wire_gen.go @@ -1,6 +1,6 @@ // Code generated by Wire. DO NOT EDIT. -//go:generate go run github.com/google/wire/cmd/wire +//go:generate go run -mod=mod github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject diff --git a/pkg/deployment/gitOps/git/GitOperationService.go b/pkg/deployment/gitOps/git/GitOperationService.go index a9b4e1c820..2f96fc0333 100644 --- a/pkg/deployment/gitOps/git/GitOperationService.go +++ b/pkg/deployment/gitOps/git/GitOperationService.go @@ -51,7 +51,6 @@ type GitOperationService interface { PushChartToGitOpsRepoForHelmApp(ctx context.Context, pushChartToGitRequest *bean.PushChartToGitRequestDTO, requirementsConfig, valuesConfig *ChartConfig) (*commonBean.ChartGitAttribute, string, error) CreateRepository(ctx context.Context, dto *apiBean.GitOpsConfigDto, userId int32) (string, bool, bool, error) - GetRepoUrlByRepoName(repoName string) (string, error) GetClonedDir(ctx context.Context, chartDir, repoUrl, targetRevision string) (string, error) ReloadGitOpsProvider() error @@ -170,7 +169,7 @@ func (impl *GitOperationServiceImpl) PushChartToGitRepo(ctx context.Context, git commit, err := impl.gitFactory.GitOpsHelper.CommitAndPushAllChanges(newCtx, clonedDir, targetRevision, "first commit", userName, userEmailId) if err != nil { impl.logger.Errorw("error in pushing git", "err", err) - callback := func() error { + callback := func(int) error { commit, err = impl.updateRepoAndPushAllChanges(newCtx, clonedDir, repoUrl, targetRevision, tempReferenceTemplateDir, dir, userName, userEmailId, impl.gitFactory.GitOpsHelper) return err @@ -264,8 +263,12 @@ func (impl *GitOperationServiceImpl) CommitValues(ctx context.Context, chartGitA return commitHash, commitTime, err } gitOpsConfig := &apiBean.GitOpsConfigDto{BitBucketWorkspaceId: bitbucketMetadata.BitBucketWorkspaceId} - callback := func() error { - commitHash, commitTime, err = impl.gitFactory.Client.CommitValues(newCtx, chartGitAttr, gitOpsConfig) + callback := func(retriesLeft int) error { + publishStatusConflictError := false + if retriesLeft <= 0 { + publishStatusConflictError = true + } + commitHash, commitTime, err = impl.gitFactory.Client.CommitValues(newCtx, chartGitAttr, gitOpsConfig, publishStatusConflictError) return err } err = retryFunc.Retry(callback, impl.isRetryableGitCommitError, @@ -303,26 +306,6 @@ func (impl *GitOperationServiceImpl) CreateRepository(ctx context.Context, dto * return repoUrl, isNew, isEmpty, nil } -func (impl *GitOperationServiceImpl) GetRepoUrlByRepoName(repoName string) (string, error) { - repoUrl := "" - bitbucketMetadata, err := impl.gitOpsConfigReadService.GetBitbucketMetadata() - if err != nil { - impl.logger.Errorw("error in getting bitbucket metadata", "err", err) - return repoUrl, err - } - dto := &apiBean.GitOpsConfigDto{ - GitRepoName: repoName, - BitBucketWorkspaceId: bitbucketMetadata.BitBucketWorkspaceId, - BitBucketProjectKey: bitbucketMetadata.BitBucketProjectKey, - } - repoUrl, _, err = impl.gitFactory.Client.GetRepoUrl(dto) - if err != nil { - //will allow to continue to persist status on next operation - impl.logger.Errorw("error in getting repo url", "err", err, "repoName", repoName) - } - return repoUrl, nil -} - // PushChartToGitOpsRepoForHelmApp pushes built chart to GitOps repo (Specific implementation for Helm Apps) // TODO refactoring: Make a common method for both PushChartToGitRepo and PushChartToGitOpsRepoForHelmApp func (impl *GitOperationServiceImpl) PushChartToGitOpsRepoForHelmApp(ctx context.Context, pushChartToGitRequest *bean.PushChartToGitRequestDTO, requirementsConfig, valuesConfig *ChartConfig) (*commonBean.ChartGitAttribute, string, error) { diff --git a/pkg/deployment/gitOps/git/GitOpsClient.go b/pkg/deployment/gitOps/git/GitOpsClient.go index a08047e525..dc622edd4b 100644 --- a/pkg/deployment/gitOps/git/GitOpsClient.go +++ b/pkg/deployment/gitOps/git/GitOpsClient.go @@ -30,7 +30,7 @@ import ( type GitOpsClient interface { CreateRepository(ctx context.Context, config *gitOps.GitOpsConfigDto) (url string, isNew bool, isEmpty bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions) - CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *gitOps.GitOpsConfigDto) (commitHash string, commitTime time.Time, err error) + CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *gitOps.GitOpsConfigDto, publishStatusConflictError bool) (commitHash string, commitTime time.Time, err error) GetRepoUrl(config *gitOps.GitOpsConfigDto) (repoUrl string, isRepoEmpty bool, err error) DeleteRepository(config *gitOps.GitOpsConfigDto) error CreateReadme(ctx context.Context, config *gitOps.GitOpsConfigDto) (string, error) diff --git a/pkg/deployment/gitOps/git/GitOpsHelper.go b/pkg/deployment/gitOps/git/GitOpsHelper.go index 9c5d02c7d4..2c9b51b8d6 100644 --- a/pkg/deployment/gitOps/git/GitOpsHelper.go +++ b/pkg/deployment/gitOps/git/GitOpsHelper.go @@ -97,12 +97,15 @@ func (impl *GitOpsHelper) Clone(url, targetDir, targetRevision string) (clonedDi func (impl *GitOpsHelper) Pull(repoRoot, targetRevision string) (err error) { start := time.Now() - defer func() { - util.TriggerGitOpsMetrics("Pull", "GitService", start, err) - }() ctx := git.BuildGitContext(context.Background()).WithCredentials(impl.Auth). WithTLSData(impl.tlsConfig.CaData, impl.tlsConfig.TLSKeyData, impl.tlsConfig.TLSCertData, impl.isTlsEnabled) - return impl.gitCommandManager.Pull(ctx, targetRevision, repoRoot) + err = impl.gitCommandManager.Pull(ctx, targetRevision, repoRoot) + if err != nil { + util.TriggerGitOpsMetrics("Pull", "GitService", start, err) + return err + } + util.TriggerGitOpsMetrics("Pull", "GitService", start, nil) + return nil } const PushErrorMessage = "failed to push some refs" @@ -129,11 +132,14 @@ func (impl *GitOpsHelper) pullFromBranch(ctx git.GitContext, rootDir, targetRevi impl.logger.Warnw("no branch found in git repo", "rootDir", rootDir) return "", "", err } + start := time.Now() response, errMsg, err := impl.gitCommandManager.PullCli(ctx, rootDir, branch) if err != nil { + util.TriggerGitOpsMetrics("Pull", "GitCli", start, err) impl.logger.Errorw("error on git pull", "branch", branch, "err", err) return response, errMsg, err } + util.TriggerGitOpsMetrics("Pull", "GitCli", start, nil) return response, errMsg, err } diff --git a/pkg/deployment/gitOps/git/GitServiceAzure.go b/pkg/deployment/gitOps/git/GitServiceAzure.go index ff5a6d5dbd..323196e220 100644 --- a/pkg/deployment/gitOps/git/GitServiceAzure.go +++ b/pkg/deployment/gitOps/git/GitServiceAzure.go @@ -107,19 +107,18 @@ func (impl GitAzureClient) CreateRepository(ctx context.Context, config *bean2.G repoExists bool ) start := time.Now() - defer func() { - globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) - }() detailedErrorGitOpsConfigActions.StageErrorMap = make(map[string]error) url, repoExists, isEmpty, err = impl.repoExists(config.GitRepoName, impl.project) if err != nil { impl.logger.Errorw("error in communication with azure", "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[GetRepoUrlStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) return "", false, isEmpty, detailedErrorGitOpsConfigActions } if repoExists { detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, GetRepoUrlStage) + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, nil) return url, false, isEmpty, detailedErrorGitOpsConfigActions } gitRepositoryCreateOptions := git.GitRepositoryCreateOptions{ @@ -138,6 +137,7 @@ func (impl GitAzureClient) CreateRepository(ctx context.Context, config *bean2.G impl.logger.Errorw("error in communication with azure", "err", err) } if err != nil || !repoExists { + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } } @@ -146,11 +146,14 @@ func (impl GitAzureClient) CreateRepository(ctx context.Context, config *bean2.G validated, err := impl.ensureProjectAvailabilityOnHttp(config.GitRepoName) if err != nil { impl.logger.Errorw("error in ensuring project availability azure", "project", config.GitRepoName, "err", err) + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err return *operationReference.WebUrl, true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneHttpStage) @@ -159,6 +162,7 @@ func (impl GitAzureClient) CreateRepository(ctx context.Context, config *bean2.G if err != nil { impl.logger.Errorw("error in creating readme azure", "project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CreateReadmeStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) return *operationReference.WebUrl, true, isEmpty, detailedErrorGitOpsConfigActions } isEmpty = false //As we have created readme, repo is no longer empty @@ -167,13 +171,17 @@ func (impl GitAzureClient) CreateRepository(ctx context.Context, config *bean2.G if err != nil { impl.logger.Errorw("error in ensuring project availability azure", "project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) return *operationReference.WebUrl, true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneSshStage) + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitAzureClient", start, nil) return *operationReference.WebUrl, true, isEmpty, detailedErrorGitOpsConfigActions } @@ -196,14 +204,15 @@ func (impl GitAzureClient) CreateReadme(ctx context.Context, config *bean2.GitOp UserName: config.Username, UserEmailId: config.UserEmailId, } - hash, _, err := impl.CommitValues(ctx, cfg, config) + hash, _, err := impl.CommitValues(ctx, cfg, config, true) if err != nil { impl.logger.Errorw("error in creating readme azure", "repo", config.GitRepoName, "err", err) } return hash, err } -func (impl GitAzureClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto) (commitHash string, commitTime time.Time, err error) { +func (impl GitAzureClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto, publishStatusConflictError bool) (commitHash string, commitTime time.Time, err error) { + start := time.Now() branch := config.TargetRevision if len(branch) == 0 { branch = globalUtil.GetDefaultTargetRevision() @@ -229,6 +238,7 @@ func (impl GitAzureClient) CommitValues(ctx context.Context, config *ChartConfig if err != nil { if e, ok := err.(azuredevops.WrappedError); !ok || *e.StatusCode >= 500 { impl.logger.Errorw("error in fetching branch from azure devops", "err", err) + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitAzureClient", start, err) return "", time.Time{}, err } } else if branchStat != nil { @@ -236,6 +246,7 @@ func (impl GitAzureClient) CommitValues(ctx context.Context, config *ChartConfig } } else { impl.logger.Errorw("error in fetching file from azure devops", "err", err) + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitAzureClient", start, err) return "", time.Time{}, err } } else { @@ -292,9 +303,13 @@ func (impl GitAzureClient) CommitValues(ctx context.Context, config *ChartConfig }) if e := (azuredevops.WrappedError{}); errors.As(err, &e) && e.StatusCode != nil && *e.StatusCode == http2.StatusConflict { impl.logger.Warn("conflict found in commit azure", "err", err, "config", config) + if publishStatusConflictError { + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitAzureClient", start, err) + } return "", time.Time{}, retryFunc.NewRetryableError(err) } else if err != nil { impl.logger.Errorw("error in commit azure", "err", err) + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitAzureClient", start, err) return "", time.Time{}, err } //gitPush.Commits @@ -305,6 +320,7 @@ func (impl GitAzureClient) CommitValues(ctx context.Context, config *ChartConfig commitAuthorTime = (*push.Commits)[0].Author.Date.Time } // push.Commits[0].CommitId + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitAzureClient", start, nil) return commitId, commitAuthorTime, nil } diff --git a/pkg/deployment/gitOps/git/GitServiceBitbucket.go b/pkg/deployment/gitOps/git/GitServiceBitbucket.go index 243f399e11..4d3adc58f8 100644 --- a/pkg/deployment/gitOps/git/GitServiceBitbucket.go +++ b/pkg/deployment/gitOps/git/GitServiceBitbucket.go @@ -106,9 +106,6 @@ func (impl GitBitbucketClient) GetRepoUrl(config *bean2.GitOpsConfigDto) (repoUr func (impl GitBitbucketClient) CreateRepository(ctx context.Context, config *bean2.GitOpsConfigDto) (url string, isNew bool, isEmpty bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions) { var err error start := time.Now() - defer func() { - util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) - }() detailedErrorGitOpsConfigActions.StageErrorMap = make(map[string]error) @@ -127,10 +124,12 @@ func (impl GitBitbucketClient) CreateRepository(ctx context.Context, config *bea if err != nil { impl.logger.Errorw("error in communication with bitbucket", "repoOptions", repoOptions, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[GetRepoUrlStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) return "", false, isEmpty, detailedErrorGitOpsConfigActions } if repoExists { detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, GetRepoUrlStage) + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, nil) return repoUrl, false, isEmpty, detailedErrorGitOpsConfigActions } _, err = impl.client.Repositories.Repository.Create(repoOptions) @@ -142,6 +141,7 @@ func (impl GitBitbucketClient) CreateRepository(ctx context.Context, config *bea impl.logger.Errorw("error in creating repo bitbucket", "repoOptions", repoOptions, "err", err) } if err != nil || !repoExists { + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } } @@ -153,10 +153,13 @@ func (impl GitBitbucketClient) CreateRepository(ctx context.Context, config *bea if err != nil { impl.logger.Errorw("error in ensuring project availability bitbucket", "repoName", repoOptions.RepoSlug, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneHttpStage) @@ -165,6 +168,7 @@ func (impl GitBitbucketClient) CreateRepository(ctx context.Context, config *bea if err != nil { impl.logger.Errorw("error in creating readme bitbucket", "repoName", repoOptions.RepoSlug, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CreateReadmeStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CreateReadmeStage) @@ -173,13 +177,17 @@ func (impl GitBitbucketClient) CreateRepository(ctx context.Context, config *bea if err != nil { impl.logger.Errorw("error in ensuring project availability bitbucket", "project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneSshStage) + util.TriggerGitOpsMetrics("CreateRepository", "GitBitbucketClient", start, nil) return repoUrl, true, isEmpty, detailedErrorGitOpsConfigActions } @@ -242,7 +250,7 @@ func (impl GitBitbucketClient) CreateReadme(ctx context.Context, config *bean2.G UserEmailId: config.UserEmailId, } cfg.SetBitBucketBaseDir(getDir()) - hash, _, err := impl.CommitValues(ctx, cfg, config) + hash, _, err := impl.CommitValues(ctx, cfg, config, true) if err != nil { impl.logger.Errorw("error in creating readme bitbucket", "repo", config.GitRepoName, "err", err) } @@ -270,16 +278,14 @@ func (impl GitBitbucketClient) cleanUp(cloneDir string) { } } -func (impl GitBitbucketClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto) (commitHash string, commitTime time.Time, err error) { +func (impl GitBitbucketClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto, publishStatusConflictError bool) (commitHash string, commitTime time.Time, err error) { start := time.Now() - defer func() { - util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, err) - }() homeDir, err := os.UserHomeDir() if err != nil { impl.logger.Errorw("error in getting home dir", "err", err) + util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, err) return "", time.Time{}, err } bitbucketGitOpsDirPath := path.Join(homeDir, BITBUCKET_GITOPS_DIR, config.GetBitBucketBaseDir()) @@ -294,6 +300,7 @@ func (impl GitBitbucketClient) CommitValues(ctx context.Context, config *ChartCo err = ioutil.WriteFile(bitbucketCommitFilePath, []byte(config.FileContent), 0666) if err != nil { + util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, err) impl.logger.Errorw("error in writing bitbucket commit file", "bitbucketCommitFilePath", bitbucketCommitFilePath, "err", err) return "", time.Time{}, err } @@ -319,8 +326,12 @@ func (impl GitBitbucketClient) CommitValues(ctx context.Context, config *ChartCo if err != nil { impl.logger.Errorw("error in committing file to bitbucket", "repoWriteOptions", repoWriteOptions, "err", err) if e := (&bitbucket.UnexpectedResponseStatusError{}); errors.As(err, &e) && strings.Contains(e.Error(), "500 Internal Server Error") { + if publishStatusConflictError { + util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, err) + } return "", time.Time{}, retryFunc.NewRetryableError(err) } + util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, err) return "", time.Time{}, err } commitOptions := &bitbucket.CommitsOptions{ @@ -330,6 +341,7 @@ func (impl GitBitbucketClient) CommitValues(ctx context.Context, config *ChartCo } commits, err := impl.client.Repositories.Commits.GetCommits(commitOptions) if err != nil { + util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, err) impl.logger.Errorw("error in getting commits from bitbucket", "commitOptions", commitOptions, "err", err) return "", time.Time{}, err } @@ -339,8 +351,10 @@ func (impl GitBitbucketClient) CommitValues(ctx context.Context, config *ChartCo commitTimeString := commits.(map[string]interface{})["values"].([]interface{})[0].(map[string]interface{})["date"].(string) commitTime, err = time.Parse(time.RFC3339, commitTimeString) if err != nil { + util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, err) impl.logger.Errorw("error in getting commitTime", "err", err) return "", time.Time{}, err } + util.TriggerGitOpsMetrics("CommitValues", "GitBitbucketClient", start, nil) return commitHash, commitTime, nil } diff --git a/pkg/deployment/gitOps/git/GitServiceGithub.go b/pkg/deployment/gitOps/git/GitServiceGithub.go index 2ddb364e07..7589b13a02 100644 --- a/pkg/deployment/gitOps/git/GitServiceGithub.go +++ b/pkg/deployment/gitOps/git/GitServiceGithub.go @@ -103,11 +103,10 @@ func IsRepoNotFound(err error) bool { } func (impl GitHubClient) CreateRepository(ctx context.Context, config *bean2.GitOpsConfigDto) (url string, isNew bool, isEmpty bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions) { + var err error + start := time.Now() - defer func() { - globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err) - }() detailedErrorGitOpsConfigActions.StageErrorMap = make(map[string]error) repoExists := true @@ -118,11 +117,13 @@ func (impl GitHubClient) CreateRepository(ctx context.Context, config *bean2.Git } else { impl.logger.Errorw("error in creating github repo", "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[GetRepoUrlStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err) return "", false, isEmpty, detailedErrorGitOpsConfigActions } } if repoExists { detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, GetRepoUrlStage) + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, nil) return url, false, isEmpty, detailedErrorGitOpsConfigActions } private := true @@ -134,15 +135,16 @@ func (impl GitHubClient) CreateRepository(ctx context.Context, config *bean2.Git // Visibility: &visibility, }) if err1 != nil { - impl.logger.Errorw("error in creating github repo, ", "repo", config.GitRepoName, "err", err) - + impl.logger.Errorw("error in creating github repo, ", "repo", config.GitRepoName, "err", err1) url, isEmpty, err = impl.GetRepoUrl(config) if err != nil { impl.logger.Errorw("error in getting github repo", "repo", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CreateRepoStage] = err1 + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err1) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, GetRepoUrlStage) + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, nil) return url, false, isEmpty, detailedErrorGitOpsConfigActions } impl.logger.Infow("github repo created ", "r", r.CloneURL) @@ -152,10 +154,13 @@ func (impl GitHubClient) CreateRepository(ctx context.Context, config *bean2.Git if err != nil { impl.logger.Errorw("error in ensuring project availability github", "project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err) return *r.CloneURL, true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneHttpStage) @@ -164,6 +169,7 @@ func (impl GitHubClient) CreateRepository(ctx context.Context, config *bean2.Git if err != nil { impl.logger.Errorw("error in creating readme github", "project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CreateReadmeStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err) return *r.CloneURL, true, isEmpty, detailedErrorGitOpsConfigActions } isEmpty = false //As we have created readme, repo is no longer empty @@ -173,14 +179,18 @@ func (impl GitHubClient) CreateRepository(ctx context.Context, config *bean2.Git if err != nil { impl.logger.Errorw("error in ensuring project availability github", "project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err) return *r.CloneURL, true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneSshStage) //_, err = impl.createReadme(name) + globalUtil.TriggerGitOpsMetrics("CreateRepository", "GitHubClient", start, nil) return *r.CloneURL, true, isEmpty, detailedErrorGitOpsConfigActions } @@ -202,19 +212,16 @@ func (impl GitHubClient) CreateReadme(ctx context.Context, config *bean2.GitOpsC UserName: config.Username, UserEmailId: config.UserEmailId, } - hash, _, err := impl.CommitValues(ctx, cfg, config) + hash, _, err := impl.CommitValues(ctx, cfg, config, true) if err != nil { impl.logger.Errorw("error in creating readme github", "repo", config.GitRepoName, "err", err) } return hash, err } -func (impl GitHubClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto) (commitHash string, commitTime time.Time, err error) { +func (impl GitHubClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto, publishStatusConflictErrorMetrics bool) (commitHash string, commitTime time.Time, err error) { start := time.Now() - defer func() { - globalUtil.TriggerGitOpsMetrics("CommitValues", "GitHubClient", start, err) - }() branch := config.TargetRevision if len(branch) == 0 { @@ -227,6 +234,7 @@ func (impl GitHubClient) CommitValues(ctx context.Context, config *ChartConfig, responseErr, ok := err.(*github.ErrorResponse) if !ok || responseErr.Response.StatusCode != 404 { impl.logger.Errorw("error in creating repo github", "err", err, "config", config) + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitHubClient", start, err) return "", time.Time{}, err } else { newFile = true @@ -256,15 +264,20 @@ func (impl GitHubClient) CommitValues(ctx context.Context, config *ChartConfig, c, httpRes, err := impl.client.Repositories.CreateFile(ctx, impl.org, config.ChartRepoName, path, options) if err != nil && httpRes != nil && httpRes.StatusCode == http2.StatusConflict { impl.logger.Warn("conflict found in commit github", "err", err, "config", config) + if publishStatusConflictErrorMetrics { + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitHubClient", start, err) + } return "", time.Time{}, retryFunc.NewRetryableError(err) } else if err != nil { impl.logger.Errorw("error in commit github", "err", err, "config", config) + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitHubClient", start, err) return "", time.Time{}, err } commitTime = time.Now() // default is current time, if found then will get updated accordingly if c != nil && c.Commit.Author != nil { commitTime = *c.Commit.Author.Date } + globalUtil.TriggerGitOpsMetrics("CommitValues", "GitHubClient", start, nil) return *c.SHA, commitTime, nil } diff --git a/pkg/deployment/gitOps/git/GitServiceGitlab.go b/pkg/deployment/gitOps/git/GitServiceGitlab.go index bcabae1d5b..0f0225f6cf 100644 --- a/pkg/deployment/gitOps/git/GitServiceGitlab.go +++ b/pkg/deployment/gitOps/git/GitServiceGitlab.go @@ -135,9 +135,6 @@ func (impl GitLabClient) CreateRepository(ctx context.Context, config *bean2.Git repoUrl string ) start := time.Now() - defer func() { - util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) - }() detailedErrorGitOpsConfigActions.StageErrorMap = make(map[string]error) impl.logger.Debugw("gitlab app create request ", "name", config.GitRepoName, "description", config.Description) @@ -145,10 +142,12 @@ func (impl GitLabClient) CreateRepository(ctx context.Context, config *bean2.Git if err != nil { impl.logger.Errorw("error in getting repo url ", "gitlab project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[GetRepoUrlStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) return "", false, isEmpty, detailedErrorGitOpsConfigActions } if len(repoUrl) > 0 { detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, GetRepoUrlStage) + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, nil) return repoUrl, false, isEmpty, detailedErrorGitOpsConfigActions } else { url, err = impl.createProject(config.GitRepoName, config.Description) @@ -159,6 +158,7 @@ func (impl GitLabClient) CreateRepository(ctx context.Context, config *bean2.Git impl.logger.Errorw("error in getting repo url ", "gitlab project", config.GitRepoName, "err", err) } if err != nil || len(repoUrl) == 0 { + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } } @@ -169,10 +169,13 @@ func (impl GitLabClient) CreateRepository(ctx context.Context, config *bean2.Git if err != nil { impl.logger.Errorw("error in ensuring project availability ", "gitlab project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneHttpStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneHttpStage) @@ -180,6 +183,7 @@ func (impl GitLabClient) CreateRepository(ctx context.Context, config *bean2.Git if err != nil { impl.logger.Errorw("error in creating readme ", "gitlab project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CreateReadmeStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } isEmpty = false //As we have created readme, repo is no longer empty @@ -188,13 +192,17 @@ func (impl GitLabClient) CreateRepository(ctx context.Context, config *bean2.Git if err != nil { impl.logger.Errorw("error in ensuring project availability ", "gitlab project", config.GitRepoName, "err", err) detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } if !validated { - detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + err = fmt.Errorf("unable to validate project:%s in given time", config.GitRepoName) + detailedErrorGitOpsConfigActions.StageErrorMap[CloneSshStage] = err + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, err) return "", true, isEmpty, detailedErrorGitOpsConfigActions } detailedErrorGitOpsConfigActions.SuccessfulStages = append(detailedErrorGitOpsConfigActions.SuccessfulStages, CloneSshStage) + util.TriggerGitOpsMetrics("CreateRepository", "GitLabClient", start, nil) return url, true, isEmpty, detailedErrorGitOpsConfigActions } @@ -344,12 +352,9 @@ func (impl GitLabClient) checkIfFileExists(projectName, ref, file string) (exist return err == nil, err } -func (impl GitLabClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto) (commitHash string, commitTime time.Time, err error) { +func (impl GitLabClient) CommitValues(ctx context.Context, config *ChartConfig, gitOpsConfig *bean2.GitOpsConfigDto, publishStatusConflictError bool) (commitHash string, commitTime time.Time, err error) { start := time.Now() - defer func() { - util.TriggerGitOpsMetrics("CommitValues", "GitLabClient", start, err) - }() branch := config.TargetRevision if len(branch) == 0 { @@ -374,13 +379,18 @@ func (impl GitLabClient) CommitValues(ctx context.Context, config *ChartConfig, config.ChartRepoName), actions, gitlab.WithContext(ctx)) if err != nil && httpRes != nil && httpRes.StatusCode == http.StatusBadRequest { impl.logger.Warn("conflict found in commit gitlab", "err", err, "config", config) + if publishStatusConflictError { + util.TriggerGitOpsMetrics("CommitValues", "GitLabClient", start, err) + } return "", time.Time{}, retryFunc.NewRetryableError(err) } else if err != nil { + util.TriggerGitOpsMetrics("CommitValues", "GitLabClient", start, err) return "", time.Time{}, err } commitTime = time.Now() //default is current time, if found then will get updated accordingly if c != nil { commitTime = *c.AuthoredDate } + util.TriggerGitOpsMetrics("CommitValues", "GitLabClient", start, nil) return c.ID, commitTime, err } diff --git a/pkg/deployment/gitOps/git/commandManager/GitCliManager.go b/pkg/deployment/gitOps/git/commandManager/GitCliManager.go index b7ca057492..d8ff2ba33f 100644 --- a/pkg/deployment/gitOps/git/commandManager/GitCliManager.go +++ b/pkg/deployment/gitOps/git/commandManager/GitCliManager.go @@ -21,7 +21,6 @@ import ( git_manager "github.com/devtron-labs/common-lib/git-manager" "github.com/devtron-labs/devtron/util" "os/exec" - "strings" "time" ) @@ -67,24 +66,26 @@ func (impl *GitCliManagerImpl) CommitAndPush(ctx GitContext, repoRoot, targetRev } func (impl *GitCliManagerImpl) Pull(ctx GitContext, targetRevision string, repoRoot string) (err error) { + start := time.Now() - defer func() { - util.TriggerGitOpsMetrics("Pull", "GitService", start, err) - }() err = LocateGitRepo(repoRoot) if err != nil { + util.TriggerGitOpsMetrics("Pull", "GitService", start, err) return err } + response, errMsg, err := impl.PullCli(ctx, repoRoot, targetRevision) if err != nil { + if IsAlreadyUpToDateError(response, errMsg) { + err = nil + return nil + } else { + util.TriggerGitOpsMetrics("Pull", "GitService", start, err) + } impl.logger.Errorw("error in git pull from cli", "errMsg", errMsg, "err", err) } - - if strings.Contains(response, "already up-to-date") || strings.Contains(errMsg, "already up-to-date") { - err = nil - return nil - } + util.TriggerGitOpsMetrics("Pull", "GitService", start, nil) return err } diff --git a/pkg/deployment/gitOps/git/commandManager/GitCommandBaseManager.go b/pkg/deployment/gitOps/git/commandManager/GitCommandBaseManager.go index f10894d1d1..c18586466b 100644 --- a/pkg/deployment/gitOps/git/commandManager/GitCommandBaseManager.go +++ b/pkg/deployment/gitOps/git/commandManager/GitCommandBaseManager.go @@ -79,9 +79,6 @@ func (impl *GitManagerBaseImpl) ListBranch(ctx GitContext, rootDir string) (resp func (impl *GitManagerBaseImpl) PullCli(ctx GitContext, rootDir string, branch string) (response, errMsg string, err error) { start := time.Now() - defer func() { - util.TriggerGitOpsMetrics("Pull", "GitCli", start, err) - }() impl.logger.Debugw("git pull ", "location", rootDir) cmd, cancel := impl.createCmdWithContext(ctx, "git", "-C", rootDir, "pull", "origin", branch, "--force") defer cancel() @@ -92,6 +89,12 @@ func (impl *GitManagerBaseImpl) PullCli(ctx GitContext, rootDir string, branch s } defer git_manager.DeleteTlsFiles(tlsPathInfo) output, errMsg, err := impl.runCommandWithCred(cmd, ctx.auth, tlsPathInfo) + if err != nil { + if !IsAlreadyUpToDateError(response, errMsg) { + util.TriggerGitOpsMetrics("Pull", "GitCli", start, err) + } + } + util.TriggerGitOpsMetrics("Pull", "GitCli", start, nil) impl.logger.Debugw("pull output", "root", rootDir, "opt", output, "errMsg", errMsg, "error", err) return output, errMsg, err } diff --git a/pkg/deployment/gitOps/git/commandManager/utils.go b/pkg/deployment/gitOps/git/commandManager/utils.go index a58a5c9741..fd47d61b8a 100644 --- a/pkg/deployment/gitOps/git/commandManager/utils.go +++ b/pkg/deployment/gitOps/git/commandManager/utils.go @@ -20,6 +20,7 @@ import ( "github.com/go-git/go-billy/v5/osfs" "os" "path/filepath" + "strings" ) func LocateGitRepo(path string) error { @@ -34,3 +35,10 @@ func LocateGitRepo(path string) error { } return nil } + +func IsAlreadyUpToDateError(response, errMsg string) bool { + if strings.Contains(response, "already up-to-date") || strings.Contains(errMsg, "already up-to-date") { + return true + } + return false +} diff --git a/util/helper.go b/util/helper.go index d2f632fc31..c8d3e00c27 100644 --- a/util/helper.go +++ b/util/helper.go @@ -19,7 +19,9 @@ package util import ( "archive/tar" "compress/gzip" + "context" "encoding/json" + errors2 "errors" "fmt" "github.com/devtron-labs/devtron/internal/middleware" "github.com/juju/errors" @@ -270,7 +272,10 @@ func TriggerCIMetrics(Metrics CIMetrics, exposeCIMetrics bool, PipelineName stri func TriggerGitOpsMetrics(operation string, method string, startTime time.Time, err error) { status := "Success" - if err != nil { + + if err != nil && errors2.Is(err, context.Canceled) { + status = "Failed: context canceled" + } else if err != nil { status = "Failed" } middleware.GitOpsDuration.WithLabelValues(operation, method, status).Observe(time.Since(startTime).Seconds()) diff --git a/util/retryFunc/RetryFunction.go b/util/retryFunc/RetryFunction.go index f59e803104..55f9ca431a 100644 --- a/util/retryFunc/RetryFunction.go +++ b/util/retryFunc/RetryFunction.go @@ -25,7 +25,7 @@ import ( ) // Retry performs a function with retries, delay, and a max number of attempts. -func Retry(fn func() error, shouldRetry func(err error) bool, maxRetries int, delay time.Duration, logger *zap.SugaredLogger) error { +func Retry(fn func(retriesLeft int) error, shouldRetry func(err error) bool, maxRetries int, delay time.Duration, logger *zap.SugaredLogger) error { var err error logger.Debugw("retrying function", "maxRetries", maxRetries, "delay", delay, @@ -33,7 +33,7 @@ func Retry(fn func() error, shouldRetry func(err error) bool, maxRetries int, de "path", fmt.Sprintf("%s:%d", runTime.GetCallerFileName(), runTime.GetCallerLineNumber())) for i := 0; i < maxRetries; i++ { logger.Debugw("function called with retry", "attempt", i+1, "maxRetries", maxRetries, "delay", delay) - err = fn() + err = fn(maxRetries - (i + 1)) if err == nil { return nil } From 04e517723939af3163a39d7a998fd061bf95f1d8 Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Tue, 18 Mar 2025 03:26:00 +0530 Subject: [PATCH 14/25] oss ent change --- .../DeploymentPipelineRestHandler.go | 54 +++++-------------- pkg/pipeline/PropertiesConfig.go | 42 ++++++++++++++- 2 files changed, 55 insertions(+), 41 deletions(-) diff --git a/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go b/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go index 188a06368f..002db96117 100644 --- a/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go +++ b/api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go @@ -717,48 +717,22 @@ func (handler *PipelineConfigRestHandlerImpl) EnvConfigOverrideCreate(w http.Res return } - createResp, err := handler.propertiesConfigService.CreateEnvironmentProperties(appId, &envConfigProperties) - if err != nil { - if err.Error() == bean4.NOCHARTEXIST { - ctx, cancel := context.WithCancel(r.Context()) - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } - appMetrics := false - if envConfigProperties.AppMetrics != nil { - appMetrics = *envConfigProperties.AppMetrics - } - templateRequest := bean3.TemplateRequest{ - AppId: appId, - ChartRefId: envConfigProperties.ChartRefId, - ValuesOverride: []byte("{}"), - UserId: userId, - IsAppMetricsEnabled: appMetrics, + ctx, cancel := context.WithCancel(r.Context()) + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() } + }(ctx.Done(), cn.CloseNotify()) + } - _, err = handler.chartService.CreateChartFromEnvOverride(templateRequest, ctx) - if err != nil { - handler.Logger.Errorw("service err, EnvConfigOverrideCreate", "err", err, "payload", envConfigProperties) - common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) - return - } - createResp, err = handler.propertiesConfigService.CreateEnvironmentProperties(appId, &envConfigProperties) - if err != nil { - handler.Logger.Errorw("service err, EnvConfigOverrideCreate", "err", err, "payload", envConfigProperties) - common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) - return - } - } else { - handler.Logger.Errorw("service err, EnvConfigOverrideCreate", "err", err, "payload", envConfigProperties) - common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) - return - } + createResp, err := handler.propertiesConfigService.CreateEnvironmentPropertiesAndBaseIfNeeded(ctx, appId, &envConfigProperties) + if err != nil { + handler.Logger.Errorw("service err, CreateEnvironmentPropertiesAndBaseIfNeeded", "payload", envConfigProperties, "err", err) + common.WriteJsonResp(w, err, nil, http.StatusInternalServerError) + return } common.WriteJsonResp(w, err, createResp, http.StatusOK) } diff --git a/pkg/pipeline/PropertiesConfig.go b/pkg/pipeline/PropertiesConfig.go index 4d37024830..ec3dc93945 100644 --- a/pkg/pipeline/PropertiesConfig.go +++ b/pkg/pipeline/PropertiesConfig.go @@ -22,6 +22,9 @@ import ( errors2 "errors" "fmt" "github.com/devtron-labs/devtron/internal/util" + bean5 "github.com/devtron-labs/devtron/pkg/auth/user/bean" + chartService "github.com/devtron-labs/devtron/pkg/chart" + bean3 "github.com/devtron-labs/devtron/pkg/chart/bean" "github.com/devtron-labs/devtron/pkg/cluster/environment/repository" "github.com/devtron-labs/devtron/pkg/deployment/common" "github.com/devtron-labs/devtron/pkg/deployment/manifest/deployedAppMetrics" @@ -47,6 +50,7 @@ import ( ) type PropertiesConfigService interface { + CreateEnvironmentPropertiesAndBaseIfNeeded(ctx context.Context, appId int, environmentProperties *bean.EnvironmentProperties) (*bean.EnvironmentProperties, error) CreateEnvironmentProperties(appId int, propertiesRequest *bean.EnvironmentProperties) (*bean.EnvironmentProperties, error) UpdateEnvironmentProperties(appId int, propertiesRequest *bean.EnvironmentProperties, userId int32) (*bean.EnvironmentProperties, error) //create environment entry for each new environment @@ -71,6 +75,7 @@ type PropertiesConfigServiceImpl struct { deployedAppMetricsService deployedAppMetrics.DeployedAppMetricsService envConfigOverrideReadService read.EnvConfigOverrideService deploymentConfigService common.DeploymentConfigService + chartService chartService.ChartService } func NewPropertiesConfigServiceImpl(logger *zap.SugaredLogger, @@ -81,7 +86,8 @@ func NewPropertiesConfigServiceImpl(logger *zap.SugaredLogger, scopedVariableManager variables.ScopedVariableManager, deployedAppMetricsService deployedAppMetrics.DeployedAppMetricsService, envConfigOverrideReadService read.EnvConfigOverrideService, - deploymentConfigService common.DeploymentConfigService) *PropertiesConfigServiceImpl { + deploymentConfigService common.DeploymentConfigService, + chartService chartService.ChartService) *PropertiesConfigServiceImpl { return &PropertiesConfigServiceImpl{ logger: logger, envConfigRepo: envConfigRepo, @@ -92,6 +98,7 @@ func NewPropertiesConfigServiceImpl(logger *zap.SugaredLogger, deployedAppMetricsService: deployedAppMetricsService, envConfigOverrideReadService: envConfigOverrideReadService, deploymentConfigService: deploymentConfigService, + chartService: chartService, } } @@ -214,6 +221,39 @@ func (impl PropertiesConfigServiceImpl) FetchEnvProperties(appId, envId, chartRe return impl.envConfigOverrideReadService.GetByAppIdEnvIdAndChartRefId(appId, envId, chartRefId) } +func (impl PropertiesConfigServiceImpl) CreateEnvironmentPropertiesAndBaseIfNeeded(ctx context.Context, appId int, environmentProperties *bean.EnvironmentProperties) (*bean.EnvironmentProperties, error) { + createResp, err := impl.CreateEnvironmentProperties(appId, environmentProperties) + if err != nil { + if err.Error() == bean5.NOCHARTEXIST { + appMetrics := false + if environmentProperties.AppMetrics != nil { + appMetrics = *environmentProperties.AppMetrics + } + templateRequest := bean3.TemplateRequest{ + AppId: appId, + ChartRefId: environmentProperties.ChartRefId, + ValuesOverride: []byte("{}"), + UserId: environmentProperties.UserId, + IsAppMetricsEnabled: appMetrics, + } + _, err = impl.chartService.CreateChartFromEnvOverride(templateRequest, ctx) + if err != nil { + impl.logger.Errorw("service err, EnvConfigOverrideCreate", "err", err, "payload", environmentProperties) + return nil, err + } + createResp, err = impl.CreateEnvironmentProperties(appId, environmentProperties) + if err != nil { + impl.logger.Errorw("service err, EnvConfigOverrideCreate", "err", err, "payload", environmentProperties) + return nil, err + } + } else { + impl.logger.Errorw("service err, EnvConfigOverrideCreate", "err", err, "payload", environmentProperties) + return nil, err + } + } + return createResp, nil +} + func (impl PropertiesConfigServiceImpl) CreateEnvironmentProperties(appId int, environmentProperties *bean.EnvironmentProperties) (*bean.EnvironmentProperties, error) { chart, err := impl.chartRepo.FindChartByAppIdAndRefId(appId, environmentProperties.ChartRefId) if err != nil && !errors2.Is(err, pg.ErrNoRows) { From 04c62d0509a903cef20937612efc743958de8b50 Mon Sep 17 00:00:00 2001 From: prakhar katiyar Date: Tue, 18 Mar 2025 14:55:57 +0530 Subject: [PATCH 15/25] code cleaning --- pkg/chartRepo/ManualAppSyncYaml.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/chartRepo/ManualAppSyncYaml.go b/pkg/chartRepo/ManualAppSyncYaml.go index 651b4cd51f..0b4d66751e 100644 --- a/pkg/chartRepo/ManualAppSyncYaml.go +++ b/pkg/chartRepo/ManualAppSyncYaml.go @@ -29,7 +29,7 @@ type AppSyncConfig struct { ChartProviderConfig *ChartProviderConfig AppSyncServiceAccount string ParallelismLimitForTagProcessing int - AppSyncJobShutDownWaitDuration int `env:"APP_SYNC_SHUTDOWN_WAIT_DURATION" envDefault:"120"` + AppSyncJobShutDownWaitDuration int } type ChartProviderConfig struct { From 36cf273ba6d2cde2cc0decf57a51edc6ddc21985 Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Wed, 19 Mar 2025 14:30:48 +0530 Subject: [PATCH 16/25] name suggestion util --- .../configure/PipelineConfigRestHandler.go | 4 ++-- pkg/pipeline/CiCdPipelineOrchestrator.go | 3 ++- .../DeploymentPipelineConfigService.go | 3 ++- util/beHelper/nameSuggestionUtil.go | 23 +++++++++++++++++++ 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 util/beHelper/nameSuggestionUtil.go diff --git a/api/restHandler/app/pipeline/configure/PipelineConfigRestHandler.go b/api/restHandler/app/pipeline/configure/PipelineConfigRestHandler.go index 10f899556c..5e3e81defd 100644 --- a/api/restHandler/app/pipeline/configure/PipelineConfigRestHandler.go +++ b/api/restHandler/app/pipeline/configure/PipelineConfigRestHandler.go @@ -35,6 +35,7 @@ import ( security2 "github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning" "github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning/read" read3 "github.com/devtron-labs/devtron/pkg/team/read" + "github.com/devtron-labs/devtron/util/beHelper" "io" "net/http" "strconv" @@ -60,7 +61,6 @@ import ( "github.com/devtron-labs/devtron/pkg/bean" "github.com/devtron-labs/devtron/pkg/pipeline" "github.com/devtron-labs/devtron/pkg/team" - util2 "github.com/devtron-labs/devtron/util" "github.com/devtron-labs/devtron/util/rbac" "github.com/gorilla/mux" "go.uber.org/zap" @@ -663,7 +663,7 @@ func (handler *PipelineConfigRestHandlerImpl) PipelineNameSuggestion(w http.Resp common.WriteJsonResp(w, err, nil, http.StatusBadRequest) return } - suggestedName := fmt.Sprintf("%s-%d-%s", pType, appId, util2.Generate(4)) + suggestedName := beHelper.GetPipelineNameByPipelineType(pType, appId) resourceName := handler.enforcerUtil.GetAppRBACName(app.AppName) ok := handler.enforcerUtil.CheckAppRbacForAppOrJob(token, resourceName, casbin.ActionGet) if !ok { diff --git a/pkg/pipeline/CiCdPipelineOrchestrator.go b/pkg/pipeline/CiCdPipelineOrchestrator.go index c5a0ec8b31..e0ae0035a6 100644 --- a/pkg/pipeline/CiCdPipelineOrchestrator.go +++ b/pkg/pipeline/CiCdPipelineOrchestrator.go @@ -40,6 +40,7 @@ import ( constants3 "github.com/devtron-labs/devtron/pkg/pipeline/constants" util4 "github.com/devtron-labs/devtron/pkg/pipeline/util" "github.com/devtron-labs/devtron/pkg/plugin" + "github.com/devtron-labs/devtron/util/beHelper" "github.com/devtron-labs/devtron/util/sliceUtil" "golang.org/x/exp/slices" "net/http" @@ -2276,7 +2277,7 @@ func (impl CiCdPipelineOrchestratorImpl) AddPipelineToTemplate(createRequest *be if createRequest.AppWorkflowId == 0 { // create workflow wf := &appWorkflow.AppWorkflow{ - Name: fmt.Sprintf("wf-%d-%s", createRequest.AppId, util2.Generate(4)), + Name: beHelper.GetAppWorkflowName(createRequest.AppId), AppId: createRequest.AppId, Active: true, AuditLog: sql.AuditLog{ diff --git a/pkg/pipeline/DeploymentPipelineConfigService.go b/pkg/pipeline/DeploymentPipelineConfigService.go index 65221ebfae..7db7eec30a 100644 --- a/pkg/pipeline/DeploymentPipelineConfigService.go +++ b/pkg/pipeline/DeploymentPipelineConfigService.go @@ -78,6 +78,7 @@ import ( "github.com/devtron-labs/devtron/pkg/variables" repository3 "github.com/devtron-labs/devtron/pkg/variables/repository" globalUtil "github.com/devtron-labs/devtron/util" + "github.com/devtron-labs/devtron/util/beHelper" "github.com/devtron-labs/devtron/util/rbac" "github.com/go-pg/pg" errors2 "github.com/juju/errors" @@ -2024,7 +2025,7 @@ func (impl *CdPipelineConfigServiceImpl) createCdPipeline(ctx context.Context, a if (pipeline.AppWorkflowId == 0 || pipeline.IsSwitchCiPipelineRequest()) && pipeline.ParentPipelineType == "WEBHOOK" { if pipeline.AppWorkflowId == 0 { wf := &appWorkflow.AppWorkflow{ - Name: fmt.Sprintf("wf-%d-%s", app.Id, globalUtil.Generate(4)), + Name: beHelper.GetAppWorkflowName(app.Id), AppId: app.Id, Active: true, AuditLog: sql.AuditLog{CreatedBy: userId, CreatedOn: time.Now(), UpdatedOn: time.Now(), UpdatedBy: userId}, diff --git a/util/beHelper/nameSuggestionUtil.go b/util/beHelper/nameSuggestionUtil.go new file mode 100644 index 0000000000..b4758f5fb1 --- /dev/null +++ b/util/beHelper/nameSuggestionUtil.go @@ -0,0 +1,23 @@ +package beHelper + +import ( + "fmt" + "github.com/devtron-labs/common-lib/git-manager/util" + util2 "github.com/devtron-labs/devtron/util" +) + +func GetCIPipelineName(appId int) string { + return fmt.Sprintf("ci-%d-%s", appId, util2.Generate(4)) +} + +func GetCDPipelineName(appId int) string { + return fmt.Sprintf("cd-%d-%s", appId, util2.Generate(4)) +} + +func GetAppWorkflowName(appId int) string { + return fmt.Sprintf("wf-%d-%s", appId, util2.Generate(4)) +} + +func GetPipelineNameByPipelineType(pipelineType string, appId int) string { + return fmt.Sprintf("%s-%d-%s", pipelineType, appId, util.Generate(4)) +} From 619006e0b8b492e281aceae4b1e901eda9a02798 Mon Sep 17 00:00:00 2001 From: Ash-exp Date: Thu, 20 Mar 2025 18:32:26 +0530 Subject: [PATCH 17/25] added supoort for preserve mode in update repo api --- client/gitSensor/GitSensorGrpcClient.go | 2 + client/gitSensor/GitSensorRestClient.go | 1 + go.mod | 2 +- go.sum | 4 +- pkg/bean/app.go | 1 + pkg/pipeline/CiCdPipelineOrchestrator.go | 9 +- .../protos/gitSensor/service.pb.go | 986 +++++++++--------- .../protos/gitSensor/service.proto | 1 + .../protos/gitSensor/service_grpc.pb.go | 100 +- vendor/modules.txt | 2 +- wire_gen.go | 2 +- 11 files changed, 553 insertions(+), 557 deletions(-) diff --git a/client/gitSensor/GitSensorGrpcClient.go b/client/gitSensor/GitSensorGrpcClient.go index b1f7190d9e..a02e6eb0be 100644 --- a/client/gitSensor/GitSensorGrpcClient.go +++ b/client/gitSensor/GitSensorGrpcClient.go @@ -160,6 +160,7 @@ func (client *GrpcApiClientImpl) AddRepo(ctx context.Context, materials []*GitMa Deleted: item.Deleted, FilterPattern: item.FilterPattern, CloningMode: item.CloningMode, + PreserveMode: item.PreserveMode, }) } } @@ -191,6 +192,7 @@ func (client *GrpcApiClientImpl) UpdateRepo(ctx context.Context, material *GitMa Deleted: material.Deleted, FilterPattern: material.FilterPattern, CloningMode: material.CloningMode, + PreserveMode: material.PreserveMode, } _, err = serviceClient.UpdateRepo(ctx, mappedMaterial) diff --git a/client/gitSensor/GitSensorRestClient.go b/client/gitSensor/GitSensorRestClient.go index f648e1d78a..66b83e7b54 100644 --- a/client/gitSensor/GitSensorRestClient.go +++ b/client/gitSensor/GitSensorRestClient.go @@ -88,6 +88,7 @@ type GitMaterial struct { FetchSubmodules bool FilterPattern []string CloningMode string + PreserveMode bool } type GitProvider struct { Id int diff --git a/go.mod b/go.mod index c30a3cd547..00292eb28a 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 github.com/devtron-labs/common-lib v0.18.1-0.20241001061923-eda545dc839e github.com/devtron-labs/go-bitbucket v0.9.60-beta - github.com/devtron-labs/protos v0.0.3-0.20240802105333-92ee9bb85d80 + github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67 github.com/evanphx/json-patch v5.9.0+incompatible github.com/gammazero/workerpool v1.1.3 github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 diff --git a/go.sum b/go.sum index b55b5525b2..eb9dc688ed 100644 --- a/go.sum +++ b/go.sum @@ -798,8 +798,8 @@ github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13/go.mod h1:1QJJLpgJSkb5Jm9xPeKAk+kXb0QgBOOOgJj0cgYhAVA= github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU= github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y= -github.com/devtron-labs/protos v0.0.3-0.20240802105333-92ee9bb85d80 h1:xwbTeijNTf4/j1v+tSfwVqwLVnReas/NqEKeQHvSTys= -github.com/devtron-labs/protos v0.0.3-0.20240802105333-92ee9bb85d80/go.mod h1:ypUknVph8Ph4dxSlrFoouf7wLedQxHku2LQwgRrdgS4= +github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67 h1:gH82ad3wOUH7oEac9NA5jIx/ZIzd77siI/pHI2WONmM= +github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67/go.mod h1:1TqULGlTey+VNhAu/ag7NJuUvByJemkqodsc9L5PHJk= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= diff --git a/pkg/bean/app.go b/pkg/bean/app.go index 1cc5b12d5a..66aa574856 100644 --- a/pkg/bean/app.go +++ b/pkg/bean/app.go @@ -92,6 +92,7 @@ type GitMaterial struct { FetchSubmodules bool `json:"fetchSubmodules"` IsUsedInCiConfig bool `json:"isUsedInCiConfig"` FilterPattern []string `json:"filterPattern"` + PreserveMode bool `json:"preserveMode"` } // UpdateSanitisedGitRepoUrl will remove all trailing slashes , leading and trailing spaces from git repository url diff --git a/pkg/pipeline/CiCdPipelineOrchestrator.go b/pkg/pipeline/CiCdPipelineOrchestrator.go index c5a0ec8b31..f1c86e1b6d 100644 --- a/pkg/pipeline/CiCdPipelineOrchestrator.go +++ b/pkg/pipeline/CiCdPipelineOrchestrator.go @@ -1351,7 +1351,7 @@ func (impl CiCdPipelineOrchestratorImpl) DeleteApp(appId int, userId int32) erro impl.logger.Debug("deleting materials in git_sensor") for _, m := range materials { - err = impl.updateRepositoryToGitSensor(m, "") + err = impl.updateRepositoryToGitSensor(m, "", false) if err != nil { impl.logger.Errorw("error in updating to git-sensor", "err", err) return err @@ -1467,7 +1467,8 @@ func (impl CiCdPipelineOrchestratorImpl) UpdateMaterial(updateMaterialDTO *bean. return nil, err } - err = impl.updateRepositoryToGitSensor(updatedMaterial, "") + err = impl.updateRepositoryToGitSensor(updatedMaterial, "", + updateMaterialDTO.Material.PreserveMode) if err != nil { impl.logger.Errorw("error in updating to git-sensor", "err", err) return nil, err @@ -1480,7 +1481,8 @@ func (impl CiCdPipelineOrchestratorImpl) UpdateMaterial(updateMaterialDTO *bean. return updateMaterialDTO, nil } -func (impl CiCdPipelineOrchestratorImpl) updateRepositoryToGitSensor(material *repository6.GitMaterial, cloningMode string) error { +func (impl CiCdPipelineOrchestratorImpl) updateRepositoryToGitSensor(material *repository6.GitMaterial, + cloningMode string, preserveMode bool) error { sensorMaterial := &gitSensor.GitMaterial{ Name: material.Name, Url: material.Url, @@ -1491,6 +1493,7 @@ func (impl CiCdPipelineOrchestratorImpl) updateRepositoryToGitSensor(material *r FetchSubmodules: material.FetchSubmodules, FilterPattern: material.FilterPattern, CloningMode: cloningMode, + PreserveMode: preserveMode, } return impl.GitSensorClient.UpdateRepo(context.Background(), sensorMaterial) } diff --git a/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go b/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go index 08463e5db6..11bf567669 100644 --- a/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go +++ b/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 +// protoc-gen-go v1.28.1 // protoc v3.9.1 // source: gitSensor/service.proto @@ -227,6 +227,7 @@ type GitMaterial struct { Deleted bool `protobuf:"varint,9,opt,name=deleted,proto3" json:"deleted,omitempty"` FilterPattern []string `protobuf:"bytes,10,rep,name=filterPattern,proto3" json:"filterPattern,omitempty"` CloningMode string `protobuf:"bytes,11,opt,name=cloningMode,proto3" json:"cloningMode,omitempty"` + PreserveMode bool `protobuf:"varint,12,opt,name=preserveMode,proto3" json:"preserveMode,omitempty"` } func (x *GitMaterial) Reset() { @@ -338,6 +339,13 @@ func (x *GitMaterial) GetCloningMode() string { return "" } +func (x *GitMaterial) GetPreserveMode() bool { + if x != nil { + return x.PreserveMode + } + return false +} + type SavePipelineMaterialRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2911,7 +2919,7 @@ var file_gitSensor_service_proto_rawDesc = []byte{ 0x34, 0x0a, 0x15, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x4c, 0x53, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf1, 0x02, 0x0a, 0x0b, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x03, 0x0a, 0x0b, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x67, 0x69, @@ -2934,503 +2942,505 @@ var file_gitSensor_service_proto_rawDesc = []byte{ 0x72, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x6f, 0x0a, 0x1b, 0x53, 0x61, 0x76, - 0x65, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x13, 0x63, 0x69, 0x50, 0x69, - 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x43, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x13, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x92, 0x03, 0x0a, 0x12, 0x43, - 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x74, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x61, 0x73, - 0x74, 0x53, 0x65, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, - 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, - 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, - 0x9c, 0x01, 0x0a, 0x16, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6d, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x69, - 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, - 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, - 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x22, 0x9f, - 0x02, 0x0a, 0x16, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x69, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0d, 0x6c, 0x61, - 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, - 0x61, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x69, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x69, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x22, - 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, - 0x73, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x42, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, - 0x22, 0xaa, 0x02, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x2e, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x12, 0x32, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x09, 0x46, 0x69, 0x6c, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x22, 0x56, 0x0a, - 0x08, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x01, 0x0a, 0x0b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x2f, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, - 0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x73, - 0x22, 0x67, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x50, 0x69, - 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, - 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x6e, 0x52, 0x09, - 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x94, 0x03, 0x0a, 0x16, 0x43, 0x69, - 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x42, 0x65, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x47, 0x69, 0x74, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x33, 0x0a, 0x09, - 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x12, 0x7f, 0x0a, 0x19, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x43, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x6f, 0x0a, + 0x1b, 0x53, 0x61, 0x76, 0x65, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x13, + 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x13, 0x63, 0x69, 0x50, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x92, + 0x03, 0x0a, 0x12, 0x43, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x67, 0x69, + 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x48, 0x61, 0x73, + 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, + 0x07, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x4d, 0x73, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x4d, 0x73, 0x67, 0x22, 0x9c, 0x01, 0x0a, 0x16, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6d, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, + 0x0a, 0x12, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x70, 0x69, 0x70, 0x65, + 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, + 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x68, 0x6f, 0x77, + 0x41, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x77, 0x41, + 0x6c, 0x6c, 0x22, 0x9f, 0x02, 0x0a, 0x16, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x40, + 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, + 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x73, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, + 0x73, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x26, 0x0a, 0x0e, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x4d, 0x73, 0x67, 0x22, 0xaa, 0x02, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, + 0x09, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x64, 0x22, 0x56, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x01, 0x0a, 0x0b, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x49, 0x64, 0x73, 0x22, 0x67, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x46, + 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x6d, + 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x69, 0x50, 0x69, + 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x42, 0x65, + 0x61, 0x6e, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x22, 0x94, 0x03, + 0x0a, 0x16, 0x43, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x47, 0x69, 0x74, 0x4d, + 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0d, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x12, 0x33, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x47, 0x69, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x7f, 0x0a, 0x19, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x1a, 0x4c, 0x0a, 0x1e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, - 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x99, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x69, - 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x69, - 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x69, 0x74, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x69, 0x74, 0x54, 0x61, 0x67, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, 0x54, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x41, 0x0a, 0x19, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x69, 0x74, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0d, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, - 0x94, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x47, 0x69, 0x74, 0x4d, 0x61, - 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x4d, 0x73, 0x67, 0x12, 0x40, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x15, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, - 0x5e, 0x0a, 0x16, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0f, 0x72, 0x65, 0x6c, - 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x0f, - 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x22, - 0x52, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, - 0x6f, 0x64, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x82, 0x01, 0x0a, 0x14, 0x52, 0x65, - 0x6c, 0x65, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, - 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, - 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x30, - 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x6f, 0x6e, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x6f, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, - 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x68, 0x6f, 0x72, 0x74, - 0x22, 0x30, 0x0a, 0x04, 0x54, 0x72, 0x65, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x6f, 0x6e, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x6f, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, - 0x53, 0x68, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x68, 0x6f, - 0x72, 0x74, 0x22, 0x62, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x65, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x0a, - 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x49, 0x0a, - 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x86, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x04, 0x54, 0x72, 0x65, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x52, 0x04, 0x54, 0x72, 0x65, 0x65, 0x12, - 0x2a, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x52, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, - 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, - 0x54, 0x61, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x6f, 0x64, - 0x79, 0x22, 0x6e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, - 0x2c, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x32, 0x0a, - 0x09, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x69, - 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x22, 0x58, 0x0a, 0x12, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, - 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x96, 0x02, 0x0a, 0x10, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x41, 0x6e, 0x64, 0x43, 0x69, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x79, 0x0a, 0x19, 0x65, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x41, 0x6e, 0x64, 0x43, 0x69, 0x44, 0x61, 0x74, - 0x61, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x19, 0x65, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x77, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x4c, 0x0a, 0x1e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, + 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x42, 0x65, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x4c, 0x0a, 0x1e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, 0x19, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x69, 0x74, - 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xed, 0x02, 0x0a, 0x15, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x74, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x2a, 0x0a, 0x10, 0x74, - 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x43, 0x69, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x43, - 0x69, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x78, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x78, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x6f, 0x73, - 0x73, 0x69, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, - 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x4f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, + 0x0a, 0x12, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x70, 0x69, 0x70, 0x65, + 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x67, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x67, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x69, 0x74, 0x54, + 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, 0x54, 0x61, 0x67, + 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x41, 0x0a, 0x19, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x47, 0x69, 0x74, 0x4d, 0x61, + 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, + 0x0d, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x67, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x47, + 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x40, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, + 0x74, 0x46, 0x65, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x15, 0x52, 0x65, + 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x16, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, + 0x0f, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x52, 0x0f, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, + 0x61, 0x6c, 0x73, 0x22, 0x52, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x74, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, 0x69, 0x6e, 0x67, + 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x2b, 0x0a, 0x0f, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x82, 0x01, + 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, + 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x12, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x22, 0x30, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x6f, + 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x6f, 0x6e, 0x67, 0x12, 0x14, + 0x0a, 0x05, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, + 0x68, 0x6f, 0x72, 0x74, 0x22, 0x30, 0x0a, 0x04, 0x54, 0x72, 0x65, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x4c, 0x6f, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x6f, 0x6e, 0x67, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x53, 0x68, 0x6f, 0x72, 0x74, 0x22, 0x62, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x44, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x65, 0x0a, 0x09, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x45, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x6d, 0x61, 0x69, + 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, 0x74, + 0x65, 0x22, 0x49, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x04, + 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, - 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0xed, 0x02, 0x0a, 0x12, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x73, 0x43, 0x73, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x43, 0x73, 0x76, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x4f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, - 0x12, 0x38, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x3f, 0x0a, 0x09, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x6c, 0x0a, 0x1a, 0x57, - 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x12, 0x77, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xad, 0x01, 0x0a, 0x19, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, - 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xf8, 0x01, 0x0a, 0x0e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x49, 0x64, - 0x12, 0x38, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, - 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x08, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, - 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x79, 0x0a, 0x1f, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x32, 0x0a, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x86, 0x02, 0x0a, + 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, + 0x04, 0x54, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x69, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x52, 0x04, 0x54, + 0x72, 0x65, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x52, 0x06, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, + 0x33, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, + 0x61, 0x67, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x6e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x73, 0x12, 0x32, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x09, 0x46, 0x69, 0x6c, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x58, 0x0a, 0x12, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x28, 0x57, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x22, 0xbe, 0x01, 0x0a, 0x20, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, - 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x73, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, - 0x73, 0x6f, 0x6e, 0x32, 0xa2, 0x0d, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, - 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x53, 0x61, 0x76, 0x65, - 0x47, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x67, 0x69, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x1a, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x52, 0x65, - 0x70, 0x6f, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, - 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0x38, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, + 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x22, + 0x96, 0x02, 0x0a, 0x10, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x41, 0x6e, 0x64, 0x43, 0x69, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x79, 0x0a, 0x19, 0x65, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x41, 0x6e, 0x64, 0x43, + 0x69, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x19, 0x65, 0x78, 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, + 0x39, 0x0a, 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x4c, 0x0a, 0x1e, 0x45, 0x78, + 0x74, 0x72, 0x61, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x75, 0x0a, 0x19, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, + 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0xed, 0x02, 0x0a, 0x15, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x53, 0x68, 0x6f, + 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x74, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x12, + 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x43, 0x69, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x6f, 0x53, 0x68, 0x6f, + 0x77, 0x49, 0x6e, 0x43, 0x69, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x66, + 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, + 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x73, 0x69, + 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x4f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, + 0xed, 0x02, 0x0a, 0x12, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, 0x73, + 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x74, 0x48, 0x6f, + 0x73, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x43, 0x73, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x43, 0x73, 0x76, 0x12, 0x1e, + 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x3f, + 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, + 0x6c, 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, + 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xad, 0x01, + 0x0a, 0x19, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x63, + 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2e, 0x0a, + 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xf8, 0x01, + 0x0a, 0x0e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, + 0x0a, 0x13, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x1a, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x36, 0x0a, 0x08, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x08, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x79, 0x0a, 0x1f, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x14, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, + 0x61, 0x72, 0x73, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x28, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0xbe, 0x01, 0x0a, 0x20, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x0d, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x4a, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x4a, 0x73, 0x6f, 0x6e, 0x32, 0xa2, 0x0d, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0f, + 0x53, 0x61, 0x76, 0x65, 0x47, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x14, 0x53, - 0x61, 0x76, 0x65, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x61, 0x76, 0x65, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x67, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x07, 0x41, + 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x1a, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x56, 0x0a, 0x0c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, - 0x22, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x53, 0x63, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x48, 0x65, - 0x61, 0x64, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, - 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, - 0x60, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, - 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x69, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x12, 0x4f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x46, 0x6f, 0x72, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x69, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x12, 0x63, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x47, 0x69, 0x74, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x47, 0x69, 0x74, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x6f, 0x61, - 0x64, 0x41, 0x6c, 0x6c, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x11, 0x2e, 0x67, - 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x52, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, - 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x49, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, - 0x20, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, - 0x65, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, - 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x2e, 0x67, 0x69, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x41, 0x6e, 0x64, 0x43, 0x69, 0x44, 0x61, 0x74, 0x61, 0x12, 0x70, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x41, 0x6c, 0x6c, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6f, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x25, 0x2e, 0x67, - 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, - 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x52, 0x0a, 0x14, 0x53, 0x61, 0x76, 0x65, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, + 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x0c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x1b, 0x47, + 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, + 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, + 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, + 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x12, 0x60, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, + 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x21, 0x2e, 0x67, 0x69, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x4f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x46, 0x6f, 0x72, 0x54, 0x61, 0x67, 0x12, 0x21, 0x2e, 0x67, + 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x15, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x63, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x25, 0x2e, 0x67, + 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7b, 0x0a, 0x2a, 0x47, - 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, - 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x30, 0x47, 0x65, 0x74, - 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, - 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2b, 0x2e, + 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x47, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x11, 0x52, + 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x6c, 0x6c, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x12, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x52, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, + 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, + 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x52, 0x65, + 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x21, 0x2e, 0x67, + 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, + 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x49, 0x6e, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x4e, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x41, 0x6e, 0x64, 0x43, 0x69, 0x44, 0x61, 0x74, 0x61, 0x12, 0x70, 0x0a, + 0x1f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6f, 0x72, 0x48, 0x6f, 0x73, 0x74, + 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5e, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x7b, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x50, 0x69, 0x70, 0x65, 0x6c, + 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x69, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x72, 0x6f, 0x6e, 0x2d, 0x6c, - 0x61, 0x62, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x67, 0x69, 0x74, 0x53, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8d, 0x01, 0x0a, + 0x30, 0x47, 0x65, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x50, + 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, + 0x64, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2e, 0x67, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2a, 0x5a, 0x28, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x72, + 0x6f, 0x6e, 0x2d, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x67, + 0x69, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/github.com/devtron-labs/protos/gitSensor/service.proto b/vendor/github.com/devtron-labs/protos/gitSensor/service.proto index 5b0577fc88..e7f6159d6e 100644 --- a/vendor/github.com/devtron-labs/protos/gitSensor/service.proto +++ b/vendor/github.com/devtron-labs/protos/gitSensor/service.proto @@ -38,6 +38,7 @@ message GitMaterial { bool deleted = 9; repeated string filterPattern = 10; string cloningMode = 11; + bool preserveMode = 12; } message SavePipelineMaterialRequest { diff --git a/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go b/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go index b128375613..6956c35ca4 100644 --- a/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go +++ b/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.2.0 // - protoc v3.9.1 // source: gitSensor/service.proto @@ -18,28 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - GitSensorService_SaveGitProvider_FullMethodName = "/gitService.GitSensorService/SaveGitProvider" - GitSensorService_AddRepo_FullMethodName = "/gitService.GitSensorService/AddRepo" - GitSensorService_UpdateRepo_FullMethodName = "/gitService.GitSensorService/UpdateRepo" - GitSensorService_SavePipelineMaterial_FullMethodName = "/gitService.GitSensorService/SavePipelineMaterial" - GitSensorService_FetchChanges_FullMethodName = "/gitService.GitSensorService/FetchChanges" - GitSensorService_GetHeadForPipelineMaterials_FullMethodName = "/gitService.GitSensorService/GetHeadForPipelineMaterials" - GitSensorService_GetCommitMetadata_FullMethodName = "/gitService.GitSensorService/GetCommitMetadata" - GitSensorService_GetCommitMetadataForPipelineMaterial_FullMethodName = "/gitService.GitSensorService/GetCommitMetadataForPipelineMaterial" - GitSensorService_GetCommitInfoForTag_FullMethodName = "/gitService.GitSensorService/GetCommitInfoForTag" - GitSensorService_RefreshGitMaterial_FullMethodName = "/gitService.GitSensorService/RefreshGitMaterial" - GitSensorService_ReloadAllMaterial_FullMethodName = "/gitService.GitSensorService/ReloadAllMaterial" - GitSensorService_ReloadMaterials_FullMethodName = "/gitService.GitSensorService/ReloadMaterials" - GitSensorService_ReloadMaterial_FullMethodName = "/gitService.GitSensorService/ReloadMaterial" - GitSensorService_GetChangesInRelease_FullMethodName = "/gitService.GitSensorService/GetChangesInRelease" - GitSensorService_GetWebhookData_FullMethodName = "/gitService.GitSensorService/GetWebhookData" - GitSensorService_GetAllWebhookEventConfigForHost_FullMethodName = "/gitService.GitSensorService/GetAllWebhookEventConfigForHost" - GitSensorService_GetWebhookEventConfig_FullMethodName = "/gitService.GitSensorService/GetWebhookEventConfig" - GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_FullMethodName = "/gitService.GitSensorService/GetWebhookPayloadDataForPipelineMaterialId" - GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_FullMethodName = "/gitService.GitSensorService/GetWebhookPayloadFilterDataForPipelineMaterialId" -) - // GitSensorServiceClient is the client API for GitSensorService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -94,7 +72,7 @@ func NewGitSensorServiceClient(cc grpc.ClientConnInterface) GitSensorServiceClie func (c *gitSensorServiceClient) SaveGitProvider(ctx context.Context, in *GitProvider, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, GitSensorService_SaveGitProvider_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/SaveGitProvider", in, out, opts...) if err != nil { return nil, err } @@ -103,7 +81,7 @@ func (c *gitSensorServiceClient) SaveGitProvider(ctx context.Context, in *GitPro func (c *gitSensorServiceClient) AddRepo(ctx context.Context, in *AddRepoRequest, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, GitSensorService_AddRepo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/AddRepo", in, out, opts...) if err != nil { return nil, err } @@ -112,7 +90,7 @@ func (c *gitSensorServiceClient) AddRepo(ctx context.Context, in *AddRepoRequest func (c *gitSensorServiceClient) UpdateRepo(ctx context.Context, in *GitMaterial, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, GitSensorService_UpdateRepo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/UpdateRepo", in, out, opts...) if err != nil { return nil, err } @@ -121,7 +99,7 @@ func (c *gitSensorServiceClient) UpdateRepo(ctx context.Context, in *GitMaterial func (c *gitSensorServiceClient) SavePipelineMaterial(ctx context.Context, in *SavePipelineMaterialRequest, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, GitSensorService_SavePipelineMaterial_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/SavePipelineMaterial", in, out, opts...) if err != nil { return nil, err } @@ -130,7 +108,7 @@ func (c *gitSensorServiceClient) SavePipelineMaterial(ctx context.Context, in *S func (c *gitSensorServiceClient) FetchChanges(ctx context.Context, in *FetchScmChangesRequest, opts ...grpc.CallOption) (*MaterialChangeResponse, error) { out := new(MaterialChangeResponse) - err := c.cc.Invoke(ctx, GitSensorService_FetchChanges_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/FetchChanges", in, out, opts...) if err != nil { return nil, err } @@ -139,7 +117,7 @@ func (c *gitSensorServiceClient) FetchChanges(ctx context.Context, in *FetchScmC func (c *gitSensorServiceClient) GetHeadForPipelineMaterials(ctx context.Context, in *HeadRequest, opts ...grpc.CallOption) (*GetHeadForPipelineMaterialsResponse, error) { out := new(GetHeadForPipelineMaterialsResponse) - err := c.cc.Invoke(ctx, GitSensorService_GetHeadForPipelineMaterials_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetHeadForPipelineMaterials", in, out, opts...) if err != nil { return nil, err } @@ -148,7 +126,7 @@ func (c *gitSensorServiceClient) GetHeadForPipelineMaterials(ctx context.Context func (c *gitSensorServiceClient) GetCommitMetadata(ctx context.Context, in *CommitMetadataRequest, opts ...grpc.CallOption) (*GitCommit, error) { out := new(GitCommit) - err := c.cc.Invoke(ctx, GitSensorService_GetCommitMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetCommitMetadata", in, out, opts...) if err != nil { return nil, err } @@ -157,7 +135,7 @@ func (c *gitSensorServiceClient) GetCommitMetadata(ctx context.Context, in *Comm func (c *gitSensorServiceClient) GetCommitMetadataForPipelineMaterial(ctx context.Context, in *CommitMetadataRequest, opts ...grpc.CallOption) (*GitCommit, error) { out := new(GitCommit) - err := c.cc.Invoke(ctx, GitSensorService_GetCommitMetadataForPipelineMaterial_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetCommitMetadataForPipelineMaterial", in, out, opts...) if err != nil { return nil, err } @@ -166,7 +144,7 @@ func (c *gitSensorServiceClient) GetCommitMetadataForPipelineMaterial(ctx contex func (c *gitSensorServiceClient) GetCommitInfoForTag(ctx context.Context, in *CommitMetadataRequest, opts ...grpc.CallOption) (*GitCommit, error) { out := new(GitCommit) - err := c.cc.Invoke(ctx, GitSensorService_GetCommitInfoForTag_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetCommitInfoForTag", in, out, opts...) if err != nil { return nil, err } @@ -175,7 +153,7 @@ func (c *gitSensorServiceClient) GetCommitInfoForTag(ctx context.Context, in *Co func (c *gitSensorServiceClient) RefreshGitMaterial(ctx context.Context, in *RefreshGitMaterialRequest, opts ...grpc.CallOption) (*RefreshGitMaterialResponse, error) { out := new(RefreshGitMaterialResponse) - err := c.cc.Invoke(ctx, GitSensorService_RefreshGitMaterial_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/RefreshGitMaterial", in, out, opts...) if err != nil { return nil, err } @@ -184,7 +162,7 @@ func (c *gitSensorServiceClient) RefreshGitMaterial(ctx context.Context, in *Ref func (c *gitSensorServiceClient) ReloadAllMaterial(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, GitSensorService_ReloadAllMaterial_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/ReloadAllMaterial", in, out, opts...) if err != nil { return nil, err } @@ -193,7 +171,7 @@ func (c *gitSensorServiceClient) ReloadAllMaterial(ctx context.Context, in *Empt func (c *gitSensorServiceClient) ReloadMaterials(ctx context.Context, in *ReloadMaterialsRequest, opts ...grpc.CallOption) (*GenericResponse, error) { out := new(GenericResponse) - err := c.cc.Invoke(ctx, GitSensorService_ReloadMaterials_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/ReloadMaterials", in, out, opts...) if err != nil { return nil, err } @@ -202,7 +180,7 @@ func (c *gitSensorServiceClient) ReloadMaterials(ctx context.Context, in *Reload func (c *gitSensorServiceClient) ReloadMaterial(ctx context.Context, in *ReloadMaterialRequest, opts ...grpc.CallOption) (*GenericResponse, error) { out := new(GenericResponse) - err := c.cc.Invoke(ctx, GitSensorService_ReloadMaterial_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/ReloadMaterial", in, out, opts...) if err != nil { return nil, err } @@ -211,7 +189,7 @@ func (c *gitSensorServiceClient) ReloadMaterial(ctx context.Context, in *ReloadM func (c *gitSensorServiceClient) GetChangesInRelease(ctx context.Context, in *ReleaseChangeRequest, opts ...grpc.CallOption) (*GitChanges, error) { out := new(GitChanges) - err := c.cc.Invoke(ctx, GitSensorService_GetChangesInRelease_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetChangesInRelease", in, out, opts...) if err != nil { return nil, err } @@ -220,7 +198,7 @@ func (c *gitSensorServiceClient) GetChangesInRelease(ctx context.Context, in *Re func (c *gitSensorServiceClient) GetWebhookData(ctx context.Context, in *WebhookDataRequest, opts ...grpc.CallOption) (*WebhookAndCiData, error) { out := new(WebhookAndCiData) - err := c.cc.Invoke(ctx, GitSensorService_GetWebhookData_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookData", in, out, opts...) if err != nil { return nil, err } @@ -229,7 +207,7 @@ func (c *gitSensorServiceClient) GetWebhookData(ctx context.Context, in *Webhook func (c *gitSensorServiceClient) GetAllWebhookEventConfigForHost(ctx context.Context, in *WebhookEventConfigRequest, opts ...grpc.CallOption) (*WebhookEventConfigResponse, error) { out := new(WebhookEventConfigResponse) - err := c.cc.Invoke(ctx, GitSensorService_GetAllWebhookEventConfigForHost_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetAllWebhookEventConfigForHost", in, out, opts...) if err != nil { return nil, err } @@ -238,7 +216,7 @@ func (c *gitSensorServiceClient) GetAllWebhookEventConfigForHost(ctx context.Con func (c *gitSensorServiceClient) GetWebhookEventConfig(ctx context.Context, in *WebhookEventConfigRequest, opts ...grpc.CallOption) (*WebhookEventConfig, error) { out := new(WebhookEventConfig) - err := c.cc.Invoke(ctx, GitSensorService_GetWebhookEventConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookEventConfig", in, out, opts...) if err != nil { return nil, err } @@ -247,7 +225,7 @@ func (c *gitSensorServiceClient) GetWebhookEventConfig(ctx context.Context, in * func (c *gitSensorServiceClient) GetWebhookPayloadDataForPipelineMaterialId(ctx context.Context, in *WebhookPayloadDataRequest, opts ...grpc.CallOption) (*WebhookPayloadDataResponse, error) { out := new(WebhookPayloadDataResponse) - err := c.cc.Invoke(ctx, GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookPayloadDataForPipelineMaterialId", in, out, opts...) if err != nil { return nil, err } @@ -256,7 +234,7 @@ func (c *gitSensorServiceClient) GetWebhookPayloadDataForPipelineMaterialId(ctx func (c *gitSensorServiceClient) GetWebhookPayloadFilterDataForPipelineMaterialId(ctx context.Context, in *WebhookPayloadFilterDataRequest, opts ...grpc.CallOption) (*WebhookPayloadFilterDataResponse, error) { out := new(WebhookPayloadFilterDataResponse) - err := c.cc.Invoke(ctx, GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookPayloadFilterDataForPipelineMaterialId", in, out, opts...) if err != nil { return nil, err } @@ -392,7 +370,7 @@ func _GitSensorService_SaveGitProvider_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_SaveGitProvider_FullMethodName, + FullMethod: "/gitService.GitSensorService/SaveGitProvider", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).SaveGitProvider(ctx, req.(*GitProvider)) @@ -410,7 +388,7 @@ func _GitSensorService_AddRepo_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_AddRepo_FullMethodName, + FullMethod: "/gitService.GitSensorService/AddRepo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).AddRepo(ctx, req.(*AddRepoRequest)) @@ -428,7 +406,7 @@ func _GitSensorService_UpdateRepo_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_UpdateRepo_FullMethodName, + FullMethod: "/gitService.GitSensorService/UpdateRepo", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).UpdateRepo(ctx, req.(*GitMaterial)) @@ -446,7 +424,7 @@ func _GitSensorService_SavePipelineMaterial_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_SavePipelineMaterial_FullMethodName, + FullMethod: "/gitService.GitSensorService/SavePipelineMaterial", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).SavePipelineMaterial(ctx, req.(*SavePipelineMaterialRequest)) @@ -464,7 +442,7 @@ func _GitSensorService_FetchChanges_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_FetchChanges_FullMethodName, + FullMethod: "/gitService.GitSensorService/FetchChanges", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).FetchChanges(ctx, req.(*FetchScmChangesRequest)) @@ -482,7 +460,7 @@ func _GitSensorService_GetHeadForPipelineMaterials_Handler(srv interface{}, ctx } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetHeadForPipelineMaterials_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetHeadForPipelineMaterials", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetHeadForPipelineMaterials(ctx, req.(*HeadRequest)) @@ -500,7 +478,7 @@ func _GitSensorService_GetCommitMetadata_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetCommitMetadata_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetCommitMetadata", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetCommitMetadata(ctx, req.(*CommitMetadataRequest)) @@ -518,7 +496,7 @@ func _GitSensorService_GetCommitMetadataForPipelineMaterial_Handler(srv interfac } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetCommitMetadataForPipelineMaterial_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetCommitMetadataForPipelineMaterial", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetCommitMetadataForPipelineMaterial(ctx, req.(*CommitMetadataRequest)) @@ -536,7 +514,7 @@ func _GitSensorService_GetCommitInfoForTag_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetCommitInfoForTag_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetCommitInfoForTag", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetCommitInfoForTag(ctx, req.(*CommitMetadataRequest)) @@ -554,7 +532,7 @@ func _GitSensorService_RefreshGitMaterial_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_RefreshGitMaterial_FullMethodName, + FullMethod: "/gitService.GitSensorService/RefreshGitMaterial", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).RefreshGitMaterial(ctx, req.(*RefreshGitMaterialRequest)) @@ -572,7 +550,7 @@ func _GitSensorService_ReloadAllMaterial_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_ReloadAllMaterial_FullMethodName, + FullMethod: "/gitService.GitSensorService/ReloadAllMaterial", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).ReloadAllMaterial(ctx, req.(*Empty)) @@ -590,7 +568,7 @@ func _GitSensorService_ReloadMaterials_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_ReloadMaterials_FullMethodName, + FullMethod: "/gitService.GitSensorService/ReloadMaterials", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).ReloadMaterials(ctx, req.(*ReloadMaterialsRequest)) @@ -608,7 +586,7 @@ func _GitSensorService_ReloadMaterial_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_ReloadMaterial_FullMethodName, + FullMethod: "/gitService.GitSensorService/ReloadMaterial", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).ReloadMaterial(ctx, req.(*ReloadMaterialRequest)) @@ -626,7 +604,7 @@ func _GitSensorService_GetChangesInRelease_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetChangesInRelease_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetChangesInRelease", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetChangesInRelease(ctx, req.(*ReleaseChangeRequest)) @@ -644,7 +622,7 @@ func _GitSensorService_GetWebhookData_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetWebhookData_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetWebhookData", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookData(ctx, req.(*WebhookDataRequest)) @@ -662,7 +640,7 @@ func _GitSensorService_GetAllWebhookEventConfigForHost_Handler(srv interface{}, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetAllWebhookEventConfigForHost_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetAllWebhookEventConfigForHost", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetAllWebhookEventConfigForHost(ctx, req.(*WebhookEventConfigRequest)) @@ -680,7 +658,7 @@ func _GitSensorService_GetWebhookEventConfig_Handler(srv interface{}, ctx contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetWebhookEventConfig_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetWebhookEventConfig", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookEventConfig(ctx, req.(*WebhookEventConfigRequest)) @@ -698,7 +676,7 @@ func _GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_Handler(srv in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetWebhookPayloadDataForPipelineMaterialId", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookPayloadDataForPipelineMaterialId(ctx, req.(*WebhookPayloadDataRequest)) @@ -716,7 +694,7 @@ func _GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_Handler( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_FullMethodName, + FullMethod: "/gitService.GitSensorService/GetWebhookPayloadFilterDataForPipelineMaterialId", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookPayloadFilterDataForPipelineMaterialId(ctx, req.(*WebhookPayloadFilterDataRequest)) diff --git a/vendor/modules.txt b/vendor/modules.txt index ac18a95f9f..08468077e0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -383,7 +383,7 @@ github.com/devtron-labs/common-lib/workflow # github.com/devtron-labs/go-bitbucket v0.9.60-beta ## explicit; go 1.14 github.com/devtron-labs/go-bitbucket -# github.com/devtron-labs/protos v0.0.3-0.20240802105333-92ee9bb85d80 +# github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67 ## explicit; go 1.17 github.com/devtron-labs/protos/gitSensor # github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f diff --git a/wire_gen.go b/wire_gen.go index df03415fa8..b1ec4db5c5 100644 --- a/wire_gen.go +++ b/wire_gen.go @@ -1,6 +1,6 @@ // Code generated by Wire. DO NOT EDIT. -//go:generate go run -mod=mod github.com/google/wire/cmd/wire +//go:generate go run github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject From 6e2047ebcb09e1d2d9ced7cac8981da3ab371723 Mon Sep 17 00:00:00 2001 From: prakhar katiyar Date: Fri, 21 Mar 2025 18:54:39 +0530 Subject: [PATCH 18/25] fix in CreateGrafanaDataSource --- pkg/cluster/ClusterServiceExtended.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cluster/ClusterServiceExtended.go b/pkg/cluster/ClusterServiceExtended.go index 6ae1fe00bd..eb556b3fae 100644 --- a/pkg/cluster/ClusterServiceExtended.go +++ b/pkg/cluster/ClusterServiceExtended.go @@ -294,7 +294,7 @@ func (impl *ClusterServiceImplExtended) CreateGrafanaDataSource(clusterBean *bea if grafanaDatasourceId == 0 { //starts grafana creation createDatasourceReq := grafana.CreateDatasourceRequest{ - Name: "Prometheus-" + env.Name, + Name: "Prometheus-" + env.Name + "-EnvId-" + fmt.Sprint(env.Id), Type: "prometheus", Url: clusterBean.PrometheusUrl, Access: "proxy", From 45fc38ced6a7ffd27827ab8bc6d90eebcb4c6136 Mon Sep 17 00:00:00 2001 From: prakhar katiyar Date: Fri, 21 Mar 2025 18:59:32 +0530 Subject: [PATCH 19/25] fix in CreateGrafanaDataSource --- pkg/cluster/ClusterServiceExtended.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/cluster/ClusterServiceExtended.go b/pkg/cluster/ClusterServiceExtended.go index eb556b3fae..cbd673cd60 100644 --- a/pkg/cluster/ClusterServiceExtended.go +++ b/pkg/cluster/ClusterServiceExtended.go @@ -293,8 +293,10 @@ func (impl *ClusterServiceImplExtended) CreateGrafanaDataSource(clusterBean *bea grafanaDatasourceId := env.GrafanaDatasourceId if grafanaDatasourceId == 0 { //starts grafana creation + // appending envId to ensure unique datasource name for each environment (ex- env got deleted and created with same name) + DataSourceName := "Prometheus-" + env.Name + "-EnvId-" + fmt.Sprint(env.Id) createDatasourceReq := grafana.CreateDatasourceRequest{ - Name: "Prometheus-" + env.Name + "-EnvId-" + fmt.Sprint(env.Id), + Name: DataSourceName, Type: "prometheus", Url: clusterBean.PrometheusUrl, Access: "proxy", From 1e411febcd359dac9ed0effeb15fe15f3a7d5b9d Mon Sep 17 00:00:00 2001 From: Abhibhaw Asthana <39991296+abhibhaw@users.noreply.github.com> Date: Fri, 21 Mar 2025 19:06:43 +0530 Subject: [PATCH 20/25] feat: Made ng labels env driven (#6438) * feat: Adds karpenter ng to list of ng constants * feat: made nodelabels env driven * feat: Updates env get as per repo standards * prom client in chart-sync * fix in yaml * chore: resolve merge conflict * APP_SYNC_SHUTDOWN_WAIT_DURATION env * code cleaning --------- Co-authored-by: prakhar katiyar --- env_gen.json | 2230 ++++++++++++++++++++++++++++++++- env_gen.md | 1 + pkg/k8s/capacity/bean/bean.go | 44 +- 3 files changed, 2259 insertions(+), 16 deletions(-) diff --git a/env_gen.json b/env_gen.json index d82bf63650..4499c80c60 100644 --- a/env_gen.json +++ b/env_gen.json @@ -1 +1,2229 @@ -[{"Category":"CD","Fields":[{"Env":"ARGO_APP_MANUAL_SYNC_TIME","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_HELM_PIPELINE_STATUS_CRON_TIME","EnvType":"string","EnvValue":"*/2 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PIPELINE_STATUS_CRON_TIME","EnvType":"string","EnvValue":"*/2 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PIPELINE_STATUS_TIMEOUT_DURATION","EnvType":"string","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEPLOY_STATUS_CRON_GET_PIPELINE_DEPLOYED_WITHIN_HOURS","EnvType":"int","EnvValue":"12","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_CHART_ARGO_CD_INSTALL_REQUEST_TIMEOUT","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_CHART_INSTALL_REQUEST_TIMEOUT","EnvType":"int","EnvValue":"6","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXPOSE_CD_METRICS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_MIGRATE_ARGOCD_APPLICATION_ENABLE","EnvType":"bool","EnvValue":"false","EnvDescription":"enable migration of external argocd application to devtron pipeline","Example":"","Deprecated":"false"},{"Env":"HELM_PIPELINE_STATUS_CHECK_ELIGIBLE_TIME","EnvType":"string","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IS_INTERNAL_USE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MIGRATE_DEPLOYMENT_CONFIG_DATA","EnvType":"bool","EnvValue":"false","EnvDescription":"migrate deployment config data from charts table to deployment_config table","Example":"","Deprecated":"false"},{"Env":"PIPELINE_DEGRADED_TIME","EnvType":"string","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_DEVTRON_APP","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_EXTERNAL_HELM_APP","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REVISION_HISTORY_LIMIT_HELM_APP","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUN_HELM_INSTALL_IN_ASYNC_MODE_HELM_APPS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SHOULD_CHECK_NAMESPACE_ON_CLONE","EnvType":"bool","EnvValue":"false","EnvDescription":"should we check if namespace exists or not while cloning app","Example":"","Deprecated":"false"},{"Env":"USE_DEPLOYMENT_CONFIG_DATA","EnvType":"bool","EnvValue":"false","EnvDescription":"use deployment config data from deployment_config table","Example":"","Deprecated":"true"}]},{"Category":"CI_RUNNER","Fields":[{"Env":"AZURE_ACCOUNT_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_ACCOUNT_NAME","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_BLOB_CONTAINER_CI_CACHE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_BLOB_CONTAINER_CI_LOG","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_GATEWAY_CONNECTION_INSECURE","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"AZURE_GATEWAY_URL","EnvType":"string","EnvValue":"http://devtron-minio.devtroncd:9000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BASE_LOG_LOCATION_PATH","EnvType":"string","EnvValue":"/home/devtron/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_GCP_CREDENTIALS_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_PROVIDER","EnvType":"","EnvValue":"S3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ACCESS_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_BUCKET_VERSIONED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ENDPOINT","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_ENDPOINT_INSECURE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_S3_SECRET_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_CACHE_PATH","EnvType":"string","EnvValue":"/var/lib/devtron/buildx","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_K8S_DRIVER_OPTIONS","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_PROVENANCE_MODE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILD_LOG_TTL_VALUE_IN_SECS","EnvType":"int","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CACHE_LIMIT","EnvType":"int64","EnvValue":"5000000000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_DEFAULT_ADDRESS_POOL_BASE_CIDR","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_DEFAULT_ADDRESS_POOL_SIZE","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_LIMIT_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_LIMIT_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"dedicated","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_REQ_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_REQ_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_WORKFLOW_EXECUTOR_TYPE","EnvType":"","EnvValue":"AWF","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_WORKFLOW_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"cd-runner","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_DEFAULT_ADDRESS_POOL_BASE_CIDR","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_DEFAULT_ADDRESS_POOL_SIZE","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_IGNORE_DOCKER_CACHE","EnvType":"bool","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_LOGS_KEY_PREFIX","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_RUNNER_DOCKER_MTU_VALUE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_SUCCESS_AUTO_TRIGGER_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_VOLUME_MOUNTS_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_WORKFLOW_EXECUTOR_TYPE","EnvType":"","EnvValue":"AWF","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_ARTIFACT_KEY_LOCATION","EnvType":"string","EnvValue":"arsenal-v1/ci-artifacts","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_BUILD_LOGS_BUCKET","EnvType":"string","EnvValue":"devtron-pro-ci-logs","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_BUILD_LOGS_KEY_PREFIX","EnvType":"string","EnvValue":"arsenal-v1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CACHE_BUCKET","EnvType":"string","EnvValue":"ci-caching","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CACHE_BUCKET_REGION","EnvType":"string","EnvValue":"us-east-2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_ARTIFACT_KEY_LOCATION","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_LOGS_BUCKET_REGION","EnvType":"string","EnvValue":"us-east-2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_NAMESPACE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CD_TIMEOUT","EnvType":"int64","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_CI_IMAGE","EnvType":"string","EnvValue":"686244538589.dkr.ecr.us-east-2.amazonaws.com/cirunner:47","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"devtron-ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_TARGET_PLATFORM","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DOCKER_BUILD_CACHE_PATH","EnvType":"string","EnvValue":"/var/lib/docker","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_BUILD_CONTEXT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_WORKFLOW_EXECUTION_STAGE","EnvType":"bool","EnvValue":"true","EnvDescription":"if enabled then we will display build stages separately for CI/Job/Pre-Post CD","Example":"true","Deprecated":"false"},{"Env":"EXTERNAL_BLOB_STORAGE_CM_NAME","EnvType":"string","EnvValue":"blob-storage-cm","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_BLOB_STORAGE_SECRET_NAME","EnvType":"string","EnvValue":"blob-storage-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_LABEL_SELECTOR","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_TAINTS_KEY","EnvType":"string","EnvValue":"dedicated","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CD_NODE_TAINTS_VALUE","EnvType":"string","EnvValue":"ci","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_API_SECRET","EnvType":"string","EnvValue":"devtroncd-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_PAYLOAD","EnvType":"string","EnvValue":"{\"ciProjectDetails\":[{\"gitRepository\":\"https://github.com/vikram1601/getting-started-nodejs.git\",\"checkoutPath\":\"./abc\",\"commitHash\":\"239077135f8cdeeccb7857e2851348f558cb53d3\",\"commitTime\":\"2022-10-30T20:00:00\",\"branch\":\"master\",\"message\":\"Update README.md\",\"author\":\"User Name \"}],\"dockerImage\":\"445808685819.dkr.ecr.us-east-2.amazonaws.com/orch:23907713-2\"}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXTERNAL_CI_WEB_HOOK_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IGNORE_CM_CS_IN_CI_JOB","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_RETRY_COUNT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_RETRY_INTERVAL","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCANNER_ENDPOINT","EnvType":"string","EnvValue":"http://image-scanner-new-demo-devtroncd-service.devtroncd:80","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCAN_MAX_RETRIES","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IMAGE_SCAN_RETRY_DELAY","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IN_APP_LOGGING_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_CD_WORKFLOW_RUNNER_RETRIES","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_CI_WORKFLOW_RETRIES","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODE","EnvType":"string","EnvValue":"DEV","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_SERVER_HOST","EnvType":"string","EnvValue":"localhost:4222","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ORCH_HOST","EnvType":"string","EnvValue":"http://devtroncd-orchestrator-service-prod.devtroncd/webhook/msg/nats","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ORCH_TOKEN","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PRE_CI_CACHE_PATH","EnvType":"string","EnvValue":"/devtroncd-cache","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SHOW_DOCKER_BUILD_ARGS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SKIP_CI_JOB_BUILD_CACHE_PUSH_PULL","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SKIP_CREATING_ECR_REPO","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINATION_GRACE_PERIOD_SECS","EnvType":"int","EnvValue":"180","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_ARTIFACT_LISTING_QUERY_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BLOB_STORAGE_CONFIG_IN_CD_WORKFLOW","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BLOB_STORAGE_CONFIG_IN_CI_WORKFLOW","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_BUILDX","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_DOCKER_API_TO_GET_DIGEST","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_EXTERNAL_NODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_IMAGE_TAG_FROM_GIT_PROVIDER_FOR_TAG_BASED_BUILD","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WF_CONTROLLER_INSTANCE_ID","EnvType":"string","EnvValue":"devtron-runner","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WORKFLOW_CACHE_CONFIG","EnvType":"string","EnvValue":"{}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WORKFLOW_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"ci-runner","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"DEVTRON","Fields":[{"Env":"-","EnvType":"","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_IMAGE","EnvType":"string","EnvValue":"quay.io/devtron/chart-sync:1227622d-132-3775","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_JOB_RESOURCES_OBJ","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_SERVICE_ACCOUNT","EnvType":"string","EnvValue":"chart-sync","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"APP_SYNC_SHUTDOWN_WAIT_DURATION","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_AUTO_SYNC_ENABLED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_GIT_COMMIT_RETRY_COUNT_ON_CONFLICT","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_GIT_COMMIT_RETRY_DELAY_ON_CONFLICT","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_REPO_REGISTER_RETRY_COUNT","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ARGO_REPO_REGISTER_RETRY_DELAY","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ASYNC_BUILDX_CACHE_EXPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BATCH_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BLOB_STORAGE_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"BUILDX_CACHE_MODE_MIN","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CD_PORT","EnvType":"string","EnvValue":"8000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CExpirationTime","EnvType":"int","EnvValue":"600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_TRIGGER_CRON_TIME","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CI_WORKFLOW_STATUS_UPDATE_CRON","EnvType":"string","EnvValue":"*/5 * * * *","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CLI_CMD_TIMEOUT_GLOBAL_SECONDS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CLUSTER_STATUS_CRON_TIME","EnvType":"int","EnvValue":"15","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"CONSUMER_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_LOG_TIME_LIMIT","EnvType":"int64","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEFAULT_TIMEOUT","EnvType":"float64","EnvValue":"3600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_BOM_URL","EnvType":"string","EnvValue":"https://raw.githubusercontent.com/devtron-labs/devtron/%s/charts/devtron/devtron-bom.yaml","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_DEX_SECRET_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_CHART_NAME","EnvType":"string","EnvValue":"devtron-operator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_NAME","EnvType":"string","EnvValue":"devtron","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_RELEASE_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_REPO_NAME","EnvType":"string","EnvValue":"devtron","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_HELM_REPO_URL","EnvType":"string","EnvValue":"https://helm.devtron.ai","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_INSTALLATION_TYPE","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_MODULES_IDENTIFIER_IN_HELM_VALUES","EnvType":"string","EnvValue":"installer.modules","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_SECRET_NAME","EnvType":"string","EnvValue":"devtron-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEVTRON_VERSION_IDENTIFIER_IN_HELM_VALUES","EnvType":"string","EnvValue":"installer.release","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CID","EnvType":"string","EnvValue":"example-app","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CLIENT_ID","EnvType":"string","EnvValue":"argo-cd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_CSTOREKEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_JWTKEY","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_RURL","EnvType":"string","EnvValue":"http://127.0.0.1:8080/callback","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_SECRET","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ECR_REPO_NAME_PREFIX","EnvType":"string","EnvValue":"test/","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_ASYNC_ARGO_CD_INSTALL_DEVTRON_CHART","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENABLE_ASYNC_INSTALL_DEVTRON_CHART","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EPHEMERAL_SERVER_VERSION_REGEX","EnvType":"string","EnvValue":"v[1-9]\\.\\b(2[3-9]\\|[3-9][0-9])\\b.*","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EVENT_URL","EnvType":"string","EnvValue":"http://localhost:3000/notify","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXECUTE_WIRE_NIL_CHECKER","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"EXPOSE_CI_METRICS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_RESTART_WORKLOAD_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FEATURE_RESTART_WORKLOAD_WORKER_POOL_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"FORCE_SECURITY_SCANNING","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GITOPS_REPO_PREFIX","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GO_RUNTIME_ENV","EnvType":"string","EnvValue":"production","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_ORG_ID","EnvType":"int","EnvValue":"2","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_PASSWORD","EnvType":"string","EnvValue":"prom-operator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_PORT","EnvType":"string","EnvValue":"8090","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GRAFANA_USERNAME","EnvType":"string","EnvValue":"admin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"HIDE_IMAGE_TAGGING_HARD_DELETE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"IGNORE_AUTOCOMPLETE_AUTH_CHECK","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_GROUP_NAME","EnvType":"string","EnvValue":"installer.devtron.ai","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_RESOURCE","EnvType":"string","EnvValue":"installers","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"INSTALLER_CRD_OBJECT_VERSION","EnvType":"string","EnvValue":"v1alpha1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"JwtExpirationTime","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_CLIENT_MAX_IDLE_CONNS_PER_HOST","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_IDLE_CONN_TIMEOUT","EnvType":"int","EnvValue":"300","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_KEEPALIVE","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TCP_TIMEOUT","EnvType":"int","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"K8s_TLS_HANDSHAKE_TIMEOUT","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_RECEIVE_MSG_SIZE","EnvType":"int","EnvValue":"20","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"KUBELINK_GRPC_MAX_SEND_MSG_SIZE","EnvType":"int","EnvValue":"4","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LENS_TIMEOUT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LENS_URL","EnvType":"string","EnvValue":"http://lens-milandevtron-service:80","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LIMIT_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LIMIT_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOGGER_DEV_MODE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"LOG_LEVEL","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MAX_SESSION_PER_USER","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODULE_METADATA_API_URL","EnvType":"string","EnvValue":"https://api.devtron.ai/module?name=%s","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"MODULE_STATUS_HANDLING_CRON_DURATION_MIN","EnvType":"int","EnvValue":"3","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_ACK_WAIT_IN_SECS","EnvType":"int","EnvValue":"120","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_BUFFER_SIZE","EnvType":"int","EnvValue":"-1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_MAX_AGE","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_PROCESSING_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NATS_MSG_REPLICAS","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"NOTIFICATION_MEDIUM","EnvType":"NotificationMedium","EnvValue":"rest","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"OTEL_COLLECTOR_URL","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PARALLELISM_LIMIT_FOR_TAG_PROCESSING","EnvType":"int","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_EXPORT_PROM_METRICS","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_FAILURE_QUERIES","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_ALL_QUERY","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_LOG_SLOW_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_QUERY_DUR_THRESHOLD","EnvType":"int64","EnvValue":"5000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PLUGIN_NAME","EnvType":"string","EnvValue":"Pull images from container repository","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PROPAGATE_EXTRA_LABELS","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PROXY_SERVICE_CONFIG","EnvType":"string","EnvValue":"{}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REQ_CI_CPU","EnvType":"string","EnvValue":"0.5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"REQ_CI_MEM","EnvType":"string","EnvValue":"3G","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESTRICT_TERMINAL_ACCESS_FOR_NON_SUPER_USER","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RUNTIME_CONFIG_LOCAL_DEV","EnvType":"LocalDevMode","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_ENABLED","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_FORMAT","EnvType":"string","EnvValue":"@{{%s}}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_HANDLE_PRIMITIVES","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SCOPED_VARIABLE_NAME_REGEX","EnvType":"string","EnvValue":"^[a-zA-Z][a-zA-Z0-9_-]{0,62}[a-zA-Z0-9]$","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SOCKET_DISCONNECT_DELAY_SECONDS","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SOCKET_HEARTBEAT_SECONDS","EnvType":"int","EnvValue":"25","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"STREAM_CONFIG_JSON","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"SYSTEM_VAR_PREFIX","EnvType":"string","EnvValue":"DEVTRON_","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_DEFAULT_NAMESPACE","EnvType":"string","EnvValue":"default","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_INACTIVE_DURATION_IN_MINS","EnvType":"int","EnvValue":"10","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TERMINAL_POD_STATUS_SYNC_In_SECS","EnvType":"int","EnvValue":"600","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_APP","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_LOG_QUERY","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_PASSWORD","EnvType":"string","EnvValue":"postgrespw","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_PORT","EnvType":"string","EnvValue":"55000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TEST_PG_USER","EnvType":"string","EnvValue":"postgres","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TIMEOUT_FOR_FAILED_CI_BUILD","EnvType":"string","EnvValue":"15","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"TIMEOUT_IN_SECONDS","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USER_SESSION_DURATION_SECONDS","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_ARTIFACT_LISTING_API_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CUSTOM_HTTP_TRANSPORT","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_GIT_CLI","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_RBAC_CREATION_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"VARIABLE_CACHE_ENABLED","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"VARIABLE_EXPRESSION_REGEX","EnvType":"string","EnvValue":"@{{([^}]+)}}","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"WEBHOOK_TOKEN","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"GITOPS","Fields":[{"Env":"ACD_CM","EnvType":"string","EnvValue":"argocd-cm","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_PASSWORD","EnvType":"string","EnvValue":"","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ACD_USERNAME","EnvType":"string","EnvValue":"admin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GITOPS_SECRET_NAME","EnvType":"string","EnvValue":"devtron-gitops-secret","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESOURCE_LIST_FOR_REPLICAS","EnvType":"string","EnvValue":"Deployment,Rollout,StatefulSet,ReplicaSet","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"RESOURCE_LIST_FOR_REPLICAS_BATCH_SIZE","EnvType":"int","EnvValue":"5","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"INFRA_SETUP","Fields":[{"Env":"DASHBOARD_HOST","EnvType":"string","EnvValue":"localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DASHBOARD_NAMESPACE","EnvType":"string","EnvValue":"devtroncd","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DASHBOARD_PORT","EnvType":"string","EnvValue":"3000","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_HOST","EnvType":"string","EnvValue":"http://localhost","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"DEX_PORT","EnvType":"string","EnvValue":"5556","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_PROTOCOL","EnvType":"string","EnvValue":"REST","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_TIMEOUT","EnvType":"int","EnvValue":"0","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"GIT_SENSOR_URL","EnvType":"string","EnvValue":"127.0.0.1:7070","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"HELM_CLIENT_URL","EnvType":"string","EnvValue":"127.0.0.1:50051","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"POSTGRES","Fields":[{"Env":"APP","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"Application name","Example":"","Deprecated":"false"},{"Env":"CASBIN_DATABASE","EnvType":"string","EnvValue":"casbin","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_ADDR","EnvType":"string","EnvValue":"127.0.0.1","EnvDescription":"address of postgres service","Example":"postgresql-postgresql.devtroncd","Deprecated":"false"},{"Env":"PG_DATABASE","EnvType":"string","EnvValue":"orchestrator","EnvDescription":"postgres database to be made connection with","Example":"orchestrator, casbin, git_sensor, lens","Deprecated":"false"},{"Env":"PG_PASSWORD","EnvType":"string","EnvValue":"{password}","EnvDescription":"password for postgres, associated with PG_USER","Example":"confidential ;)","Deprecated":"false"},{"Env":"PG_PORT","EnvType":"string","EnvValue":"5432","EnvDescription":"port of postgresql service","Example":"5432","Deprecated":"false"},{"Env":"PG_READ_TIMEOUT","EnvType":"int64","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"PG_USER","EnvType":"string","EnvValue":"postgres","EnvDescription":"user for postgres","Example":"postgres","Deprecated":"false"},{"Env":"PG_WRITE_TIMEOUT","EnvType":"int64","EnvValue":"30","EnvDescription":"","Example":"","Deprecated":"false"}]},{"Category":"RBAC","Fields":[{"Env":"ENFORCER_CACHE","EnvType":"bool","EnvValue":"false","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENFORCER_CACHE_EXPIRATION_IN_SEC","EnvType":"int","EnvValue":"86400","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"ENFORCER_MAX_BATCH_SIZE","EnvType":"int","EnvValue":"1","EnvDescription":"","Example":"","Deprecated":"false"},{"Env":"USE_CASBIN_V2","EnvType":"bool","EnvValue":"true","EnvDescription":"","Example":"","Deprecated":"false"}]}] \ No newline at end of file +[ + { + "Category": "CD", + "Fields": [ + { + "Env": "ARGO_APP_MANUAL_SYNC_TIME", + "EnvType": "int", + "EnvValue": "3", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_HELM_PIPELINE_STATUS_CRON_TIME", + "EnvType": "string", + "EnvValue": "*/2 * * * *", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_PIPELINE_STATUS_CRON_TIME", + "EnvType": "string", + "EnvValue": "*/2 * * * *", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_PIPELINE_STATUS_TIMEOUT_DURATION", + "EnvType": "string", + "EnvValue": "20", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEPLOY_STATUS_CRON_GET_PIPELINE_DEPLOYED_WITHIN_HOURS", + "EnvType": "int", + "EnvValue": "12", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_CHART_ARGO_CD_INSTALL_REQUEST_TIMEOUT", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_CHART_INSTALL_REQUEST_TIMEOUT", + "EnvType": "int", + "EnvValue": "6", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXPOSE_CD_METRICS", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "FEATURE_MIGRATE_ARGOCD_APPLICATION_ENABLE", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "enable migration of external argocd application to devtron pipeline", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "HELM_PIPELINE_STATUS_CHECK_ELIGIBLE_TIME", + "EnvType": "string", + "EnvValue": "120", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IS_INTERNAL_USE", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "MIGRATE_DEPLOYMENT_CONFIG_DATA", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "migrate deployment config data from charts table to deployment_config table", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PIPELINE_DEGRADED_TIME", + "EnvType": "string", + "EnvValue": "10", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "REVISION_HISTORY_LIMIT_DEVTRON_APP", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "REVISION_HISTORY_LIMIT_EXTERNAL_HELM_APP", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "REVISION_HISTORY_LIMIT_HELM_APP", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "RUN_HELM_INSTALL_IN_ASYNC_MODE_HELM_APPS", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SHOULD_CHECK_NAMESPACE_ON_CLONE", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "should we check if namespace exists or not while cloning app", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_DEPLOYMENT_CONFIG_DATA", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "use deployment config data from deployment_config table", + "Example": "", + "Deprecated": "true" + } + ] + }, + { + "Category": "CI_RUNNER", + "Fields": [ + { + "Env": "AZURE_ACCOUNT_KEY", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "AZURE_ACCOUNT_NAME", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "AZURE_BLOB_CONTAINER_CI_CACHE", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "AZURE_BLOB_CONTAINER_CI_LOG", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "AZURE_GATEWAY_CONNECTION_INSECURE", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "AZURE_GATEWAY_URL", + "EnvType": "string", + "EnvValue": "http://devtron-minio.devtroncd:9000", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BASE_LOG_LOCATION_PATH", + "EnvType": "string", + "EnvValue": "/home/devtron/", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_GCP_CREDENTIALS_JSON", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_PROVIDER", + "EnvType": "", + "EnvValue": "S3", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_S3_ACCESS_KEY", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_S3_BUCKET_VERSIONED", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_S3_ENDPOINT", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_S3_ENDPOINT_INSECURE", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_S3_SECRET_KEY", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BUILDX_CACHE_PATH", + "EnvType": "string", + "EnvValue": "/var/lib/devtron/buildx", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BUILDX_K8S_DRIVER_OPTIONS", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BUILDX_PROVENANCE_MODE", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BUILD_LOG_TTL_VALUE_IN_SECS", + "EnvType": "int", + "EnvValue": "3600", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CACHE_LIMIT", + "EnvType": "int64", + "EnvValue": "5000000000", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_DEFAULT_ADDRESS_POOL_BASE_CIDR", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_DEFAULT_ADDRESS_POOL_SIZE", + "EnvType": "int", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_LIMIT_CI_CPU", + "EnvType": "string", + "EnvValue": "0.5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_LIMIT_CI_MEM", + "EnvType": "string", + "EnvValue": "3G", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_NODE_LABEL_SELECTOR", + "EnvType": "", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_NODE_TAINTS_KEY", + "EnvType": "string", + "EnvValue": "dedicated", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_NODE_TAINTS_VALUE", + "EnvType": "string", + "EnvValue": "ci", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_REQ_CI_CPU", + "EnvType": "string", + "EnvValue": "0.5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_REQ_CI_MEM", + "EnvType": "string", + "EnvValue": "3G", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_WORKFLOW_EXECUTOR_TYPE", + "EnvType": "", + "EnvValue": "AWF", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_WORKFLOW_SERVICE_ACCOUNT", + "EnvType": "string", + "EnvValue": "cd-runner", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_DEFAULT_ADDRESS_POOL_BASE_CIDR", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_DEFAULT_ADDRESS_POOL_SIZE", + "EnvType": "int", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_IGNORE_DOCKER_CACHE", + "EnvType": "bool", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_LOGS_KEY_PREFIX", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_NODE_LABEL_SELECTOR", + "EnvType": "", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_NODE_TAINTS_KEY", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_NODE_TAINTS_VALUE", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_RUNNER_DOCKER_MTU_VALUE", + "EnvType": "int", + "EnvValue": "-1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_SUCCESS_AUTO_TRIGGER_BATCH_SIZE", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_VOLUME_MOUNTS_JSON", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_WORKFLOW_EXECUTOR_TYPE", + "EnvType": "", + "EnvValue": "AWF", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_ARTIFACT_KEY_LOCATION", + "EnvType": "string", + "EnvValue": "arsenal-v1/ci-artifacts", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_BUILD_LOGS_BUCKET", + "EnvType": "string", + "EnvValue": "devtron-pro-ci-logs", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_BUILD_LOGS_KEY_PREFIX", + "EnvType": "string", + "EnvValue": "arsenal-v1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_CACHE_BUCKET", + "EnvType": "string", + "EnvValue": "ci-caching", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_CACHE_BUCKET_REGION", + "EnvType": "string", + "EnvValue": "us-east-2", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_CD_ARTIFACT_KEY_LOCATION", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_CD_LOGS_BUCKET_REGION", + "EnvType": "string", + "EnvValue": "us-east-2", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_CD_NAMESPACE", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_CD_TIMEOUT", + "EnvType": "int64", + "EnvValue": "3600", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_CI_IMAGE", + "EnvType": "string", + "EnvValue": "686244538589.dkr.ecr.us-east-2.amazonaws.com/cirunner:47", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtron-ci", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_TARGET_PLATFORM", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DOCKER_BUILD_CACHE_PATH", + "EnvType": "string", + "EnvValue": "/var/lib/docker", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ENABLE_BUILD_CONTEXT", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ENABLE_WORKFLOW_EXECUTION_STAGE", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "if enabled then we will display build stages separately for CI/Job/Pre-Post CD", + "Example": "true", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_BLOB_STORAGE_CM_NAME", + "EnvType": "string", + "EnvValue": "blob-storage-cm", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_BLOB_STORAGE_SECRET_NAME", + "EnvType": "string", + "EnvValue": "blob-storage-secret", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_CD_NODE_LABEL_SELECTOR", + "EnvType": "", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_CD_NODE_TAINTS_KEY", + "EnvType": "string", + "EnvValue": "dedicated", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_CD_NODE_TAINTS_VALUE", + "EnvType": "string", + "EnvValue": "ci", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_CI_API_SECRET", + "EnvType": "string", + "EnvValue": "devtroncd-secret", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_CI_PAYLOAD", + "EnvType": "string", + "EnvValue": "{\"ciProjectDetails\":[{\"gitRepository\":\"https://github.com/vikram1601/getting-started-nodejs.git\",\"checkoutPath\":\"./abc\",\"commitHash\":\"239077135f8cdeeccb7857e2851348f558cb53d3\",\"commitTime\":\"2022-10-30T20:00:00\",\"branch\":\"master\",\"message\":\"Update README.md\",\"author\":\"User Name \"}],\"dockerImage\":\"445808685819.dkr.ecr.us-east-2.amazonaws.com/orch:23907713-2\"}", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXTERNAL_CI_WEB_HOOK_URL", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IGNORE_CM_CS_IN_CI_JOB", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IMAGE_RETRY_COUNT", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IMAGE_RETRY_INTERVAL", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IMAGE_SCANNER_ENDPOINT", + "EnvType": "string", + "EnvValue": "http://image-scanner-new-demo-devtroncd-service.devtroncd:80", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IMAGE_SCAN_MAX_RETRIES", + "EnvType": "int", + "EnvValue": "3", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IMAGE_SCAN_RETRY_DELAY", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IN_APP_LOGGING_ENABLED", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "MAX_CD_WORKFLOW_RUNNER_RETRIES", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "MAX_CI_WORKFLOW_RETRIES", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "MODE", + "EnvType": "string", + "EnvValue": "DEV", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "NATS_SERVER_HOST", + "EnvType": "string", + "EnvValue": "localhost:4222", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ORCH_HOST", + "EnvType": "string", + "EnvValue": "http://devtroncd-orchestrator-service-prod.devtroncd/webhook/msg/nats", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ORCH_TOKEN", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PRE_CI_CACHE_PATH", + "EnvType": "string", + "EnvValue": "/devtroncd-cache", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SHOW_DOCKER_BUILD_ARGS", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SKIP_CI_JOB_BUILD_CACHE_PUSH_PULL", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SKIP_CREATING_ECR_REPO", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TERMINATION_GRACE_PERIOD_SECS", + "EnvType": "int", + "EnvValue": "180", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_ARTIFACT_LISTING_QUERY_V2", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_BLOB_STORAGE_CONFIG_IN_CD_WORKFLOW", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_BLOB_STORAGE_CONFIG_IN_CI_WORKFLOW", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_BUILDX", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_DOCKER_API_TO_GET_DIGEST", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_EXTERNAL_NODE", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_IMAGE_TAG_FROM_GIT_PROVIDER_FOR_TAG_BASED_BUILD", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "WF_CONTROLLER_INSTANCE_ID", + "EnvType": "string", + "EnvValue": "devtron-runner", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "WORKFLOW_CACHE_CONFIG", + "EnvType": "string", + "EnvValue": "{}", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "WORKFLOW_SERVICE_ACCOUNT", + "EnvType": "string", + "EnvValue": "ci-runner", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + } + ] + }, + { + "Category": "DEVTRON", + "Fields": [ + { + "Env": "-", + "EnvType": "", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "APP_SYNC_IMAGE", + "EnvType": "string", + "EnvValue": "quay.io/devtron/chart-sync:1227622d-132-3775", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "APP_SYNC_JOB_RESOURCES_OBJ", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "APP_SYNC_SERVICE_ACCOUNT", + "EnvType": "string", + "EnvValue": "chart-sync", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "APP_SYNC_SHUTDOWN_WAIT_DURATION", + "EnvType": "int", + "EnvValue": "120", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ARGO_AUTO_SYNC_ENABLED", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ARGO_GIT_COMMIT_RETRY_COUNT_ON_CONFLICT", + "EnvType": "int", + "EnvValue": "3", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ARGO_GIT_COMMIT_RETRY_DELAY_ON_CONFLICT", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ARGO_REPO_REGISTER_RETRY_COUNT", + "EnvType": "int", + "EnvValue": "3", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ARGO_REPO_REGISTER_RETRY_DELAY", + "EnvType": "int", + "EnvValue": "10", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ASYNC_BUILDX_CACHE_EXPORT", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BATCH_SIZE", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BLOB_STORAGE_ENABLED", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "BUILDX_CACHE_MODE_MIN", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_HOST", + "EnvType": "string", + "EnvValue": "localhost", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CD_PORT", + "EnvType": "string", + "EnvValue": "8000", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CExpirationTime", + "EnvType": "int", + "EnvValue": "600", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_TRIGGER_CRON_TIME", + "EnvType": "int", + "EnvValue": "2", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CI_WORKFLOW_STATUS_UPDATE_CRON", + "EnvType": "string", + "EnvValue": "*/5 * * * *", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CLI_CMD_TIMEOUT_GLOBAL_SECONDS", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CLUSTER_STATUS_CRON_TIME", + "EnvType": "int", + "EnvValue": "15", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CONSUMER_CONFIG_JSON", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_LOG_TIME_LIMIT", + "EnvType": "int64", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEFAULT_TIMEOUT", + "EnvType": "float64", + "EnvValue": "3600", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_BOM_URL", + "EnvType": "string", + "EnvValue": "https://raw.githubusercontent.com/devtron-labs/devtron/%s/charts/devtron/devtron-bom.yaml", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_DEFAULT_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_DEX_SECRET_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_HELM_RELEASE_CHART_NAME", + "EnvType": "string", + "EnvValue": "devtron-operator", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_HELM_RELEASE_NAME", + "EnvType": "string", + "EnvValue": "devtron", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_HELM_RELEASE_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_HELM_REPO_NAME", + "EnvType": "string", + "EnvValue": "devtron", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_HELM_REPO_URL", + "EnvType": "string", + "EnvValue": "https://helm.devtron.ai", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_INSTALLATION_TYPE", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_MODULES_IDENTIFIER_IN_HELM_VALUES", + "EnvType": "string", + "EnvValue": "installer.modules", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_SECRET_NAME", + "EnvType": "string", + "EnvValue": "devtron-secret", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEVTRON_VERSION_IDENTIFIER_IN_HELM_VALUES", + "EnvType": "string", + "EnvValue": "installer.release", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_CID", + "EnvType": "string", + "EnvValue": "example-app", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_CLIENT_ID", + "EnvType": "string", + "EnvValue": "argo-cd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_CSTOREKEY", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_JWTKEY", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_RURL", + "EnvType": "string", + "EnvValue": "http://127.0.0.1:8080/callback", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_SECRET", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_URL", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ECR_REPO_NAME_PREFIX", + "EnvType": "string", + "EnvValue": "test/", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ENABLE_ASYNC_ARGO_CD_INSTALL_DEVTRON_CHART", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ENABLE_ASYNC_INSTALL_DEVTRON_CHART", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EPHEMERAL_SERVER_VERSION_REGEX", + "EnvType": "string", + "EnvValue": "v[1-9]\\.\\b(2[3-9]\\|[3-9][0-9])\\b.*", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EVENT_URL", + "EnvType": "string", + "EnvValue": "http://localhost:3000/notify", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXECUTE_WIRE_NIL_CHECKER", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "EXPOSE_CI_METRICS", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "FEATURE_RESTART_WORKLOAD_BATCH_SIZE", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "FEATURE_RESTART_WORKLOAD_WORKER_POOL_SIZE", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "FORCE_SECURITY_SCANNING", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GITOPS_REPO_PREFIX", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GO_RUNTIME_ENV", + "EnvType": "string", + "EnvValue": "production", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GRAFANA_HOST", + "EnvType": "string", + "EnvValue": "localhost", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GRAFANA_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GRAFANA_ORG_ID", + "EnvType": "int", + "EnvValue": "2", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GRAFANA_PASSWORD", + "EnvType": "string", + "EnvValue": "prom-operator", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GRAFANA_PORT", + "EnvType": "string", + "EnvValue": "8090", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GRAFANA_URL", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GRAFANA_USERNAME", + "EnvType": "string", + "EnvValue": "admin", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "HIDE_IMAGE_TAGGING_HARD_DELETE", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "IGNORE_AUTOCOMPLETE_AUTH_CHECK", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "INSTALLER_CRD_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "INSTALLER_CRD_OBJECT_GROUP_NAME", + "EnvType": "string", + "EnvValue": "installer.devtron.ai", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "INSTALLER_CRD_OBJECT_RESOURCE", + "EnvType": "string", + "EnvValue": "installers", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "INSTALLER_CRD_OBJECT_VERSION", + "EnvType": "string", + "EnvValue": "v1alpha1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "JwtExpirationTime", + "EnvType": "int", + "EnvValue": "120", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "K8s_CLIENT_MAX_IDLE_CONNS_PER_HOST", + "EnvType": "int", + "EnvValue": "25", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "K8s_TCP_IDLE_CONN_TIMEOUT", + "EnvType": "int", + "EnvValue": "300", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "K8s_TCP_KEEPALIVE", + "EnvType": "int", + "EnvValue": "30", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "K8s_TCP_TIMEOUT", + "EnvType": "int", + "EnvValue": "30", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "K8s_TLS_HANDSHAKE_TIMEOUT", + "EnvType": "int", + "EnvValue": "10", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "KUBELINK_GRPC_MAX_RECEIVE_MSG_SIZE", + "EnvType": "int", + "EnvValue": "20", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "KUBELINK_GRPC_MAX_SEND_MSG_SIZE", + "EnvType": "int", + "EnvValue": "4", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "LENS_TIMEOUT", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "LENS_URL", + "EnvType": "string", + "EnvValue": "http://lens-milandevtron-service:80", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "LIMIT_CI_CPU", + "EnvType": "string", + "EnvValue": "0.5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "LIMIT_CI_MEM", + "EnvType": "string", + "EnvValue": "3G", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "LOGGER_DEV_MODE", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "LOG_LEVEL", + "EnvType": "int", + "EnvValue": "-1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "MAX_SESSION_PER_USER", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "MODULE_METADATA_API_URL", + "EnvType": "string", + "EnvValue": "https://api.devtron.ai/module?name=%s", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "MODULE_STATUS_HANDLING_CRON_DURATION_MIN", + "EnvType": "int", + "EnvValue": "3", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "NATS_MSG_ACK_WAIT_IN_SECS", + "EnvType": "int", + "EnvValue": "120", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "NATS_MSG_BUFFER_SIZE", + "EnvType": "int", + "EnvValue": "-1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "NATS_MSG_MAX_AGE", + "EnvType": "int", + "EnvValue": "86400", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "NATS_MSG_PROCESSING_BATCH_SIZE", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "NATS_MSG_REPLICAS", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "NOTIFICATION_MEDIUM", + "EnvType": "NotificationMedium", + "EnvValue": "rest", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "OTEL_COLLECTOR_URL", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PARALLELISM_LIMIT_FOR_TAG_PROCESSING", + "EnvType": "int", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PG_EXPORT_PROM_METRICS", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PG_LOG_ALL_FAILURE_QUERIES", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PG_LOG_ALL_QUERY", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PG_LOG_SLOW_QUERY", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PG_QUERY_DUR_THRESHOLD", + "EnvType": "int64", + "EnvValue": "5000", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PLUGIN_NAME", + "EnvType": "string", + "EnvValue": "Pull images from container repository", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PROPAGATE_EXTRA_LABELS", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PROXY_SERVICE_CONFIG", + "EnvType": "string", + "EnvValue": "{}", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "REQ_CI_CPU", + "EnvType": "string", + "EnvValue": "0.5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "REQ_CI_MEM", + "EnvType": "string", + "EnvValue": "3G", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "RESTRICT_TERMINAL_ACCESS_FOR_NON_SUPER_USER", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "RUNTIME_CONFIG_LOCAL_DEV", + "EnvType": "LocalDevMode", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SCOPED_VARIABLE_ENABLED", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SCOPED_VARIABLE_FORMAT", + "EnvType": "string", + "EnvValue": "@{{%s}}", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SCOPED_VARIABLE_HANDLE_PRIMITIVES", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SCOPED_VARIABLE_NAME_REGEX", + "EnvType": "string", + "EnvValue": "^[a-zA-Z][a-zA-Z0-9_-]{0,62}[a-zA-Z0-9]$", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SOCKET_DISCONNECT_DELAY_SECONDS", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SOCKET_HEARTBEAT_SECONDS", + "EnvType": "int", + "EnvValue": "25", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "STREAM_CONFIG_JSON", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "SYSTEM_VAR_PREFIX", + "EnvType": "string", + "EnvValue": "DEVTRON_", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TERMINAL_POD_DEFAULT_NAMESPACE", + "EnvType": "string", + "EnvValue": "default", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TERMINAL_POD_INACTIVE_DURATION_IN_MINS", + "EnvType": "int", + "EnvValue": "10", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TERMINAL_POD_STATUS_SYNC_In_SECS", + "EnvType": "int", + "EnvValue": "600", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TEST_APP", + "EnvType": "string", + "EnvValue": "orchestrator", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TEST_PG_ADDR", + "EnvType": "string", + "EnvValue": "127.0.0.1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TEST_PG_DATABASE", + "EnvType": "string", + "EnvValue": "orchestrator", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TEST_PG_LOG_QUERY", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TEST_PG_PASSWORD", + "EnvType": "string", + "EnvValue": "postgrespw", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TEST_PG_PORT", + "EnvType": "string", + "EnvValue": "55000", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TEST_PG_USER", + "EnvType": "string", + "EnvValue": "postgres", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TIMEOUT_FOR_FAILED_CI_BUILD", + "EnvType": "string", + "EnvValue": "15", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "TIMEOUT_IN_SECONDS", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USER_SESSION_DURATION_SECONDS", + "EnvType": "int", + "EnvValue": "86400", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_ARTIFACT_LISTING_API_V2", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_CUSTOM_HTTP_TRANSPORT", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_GIT_CLI", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_RBAC_CREATION_V2", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "VARIABLE_CACHE_ENABLED", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "VARIABLE_EXPRESSION_REGEX", + "EnvType": "string", + "EnvValue": "@{{([^}]+)}}", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "WEBHOOK_TOKEN", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + } + ] + }, + { + "Category": "GITOPS", + "Fields": [ + { + "Env": "ACD_CM", + "EnvType": "string", + "EnvValue": "argocd-cm", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ACD_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ACD_PASSWORD", + "EnvType": "string", + "EnvValue": "", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ACD_USERNAME", + "EnvType": "string", + "EnvValue": "admin", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GITOPS_SECRET_NAME", + "EnvType": "string", + "EnvValue": "devtron-gitops-secret", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "RESOURCE_LIST_FOR_REPLICAS", + "EnvType": "string", + "EnvValue": "Deployment,Rollout,StatefulSet,ReplicaSet", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "RESOURCE_LIST_FOR_REPLICAS_BATCH_SIZE", + "EnvType": "int", + "EnvValue": "5", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + } + ] + }, + { + "Category": "INFRA_SETUP", + "Fields": [ + { + "Env": "DASHBOARD_HOST", + "EnvType": "string", + "EnvValue": "localhost", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DASHBOARD_NAMESPACE", + "EnvType": "string", + "EnvValue": "devtroncd", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DASHBOARD_PORT", + "EnvType": "string", + "EnvValue": "3000", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_HOST", + "EnvType": "string", + "EnvValue": "http://localhost", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "DEX_PORT", + "EnvType": "string", + "EnvValue": "5556", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GIT_SENSOR_PROTOCOL", + "EnvType": "string", + "EnvValue": "REST", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GIT_SENSOR_TIMEOUT", + "EnvType": "int", + "EnvValue": "0", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "GIT_SENSOR_URL", + "EnvType": "string", + "EnvValue": "127.0.0.1:7070", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "HELM_CLIENT_URL", + "EnvType": "string", + "EnvValue": "127.0.0.1:50051", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + } + ] + }, + { + "Category": "POSTGRES", + "Fields": [ + { + "Env": "APP", + "EnvType": "string", + "EnvValue": "orchestrator", + "EnvDescription": "Application name", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "CASBIN_DATABASE", + "EnvType": "string", + "EnvValue": "casbin", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PG_ADDR", + "EnvType": "string", + "EnvValue": "127.0.0.1", + "EnvDescription": "address of postgres service", + "Example": "postgresql-postgresql.devtroncd", + "Deprecated": "false" + }, + { + "Env": "PG_DATABASE", + "EnvType": "string", + "EnvValue": "orchestrator", + "EnvDescription": "postgres database to be made connection with", + "Example": "orchestrator, casbin, git_sensor, lens", + "Deprecated": "false" + }, + { + "Env": "PG_PASSWORD", + "EnvType": "string", + "EnvValue": "{password}", + "EnvDescription": "password for postgres, associated with PG_USER", + "Example": "confidential ;)", + "Deprecated": "false" + }, + { + "Env": "PG_PORT", + "EnvType": "string", + "EnvValue": "5432", + "EnvDescription": "port of postgresql service", + "Example": "5432", + "Deprecated": "false" + }, + { + "Env": "PG_READ_TIMEOUT", + "EnvType": "int64", + "EnvValue": "30", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "PG_USER", + "EnvType": "string", + "EnvValue": "postgres", + "EnvDescription": "user for postgres", + "Example": "postgres", + "Deprecated": "false" + }, + { + "Env": "PG_WRITE_TIMEOUT", + "EnvType": "int64", + "EnvValue": "30", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + } + ] + }, + { + "Category": "RBAC", + "Fields": [ + { + "Env": "ENFORCER_CACHE", + "EnvType": "bool", + "EnvValue": "false", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ENFORCER_CACHE_EXPIRATION_IN_SEC", + "EnvType": "int", + "EnvValue": "86400", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "ENFORCER_MAX_BATCH_SIZE", + "EnvType": "int", + "EnvValue": "1", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + }, + { + "Env": "USE_CASBIN_V2", + "EnvType": "bool", + "EnvValue": "true", + "EnvDescription": "", + "Example": "", + "Deprecated": "false" + } + ] + } +] diff --git a/env_gen.md b/env_gen.md index 58315830a0..3dda7a4102 100644 --- a/env_gen.md +++ b/env_gen.md @@ -125,6 +125,7 @@ | Key | Type | Default Value | Description | Example | Deprecated | |-------|----------|-------------------|-------------------|-----------------------|------------------| | - | | | | | false | + | ADDITIONAL_NODE_GROUP_LABELS | | | Add comma separated list of additional node group labels to default labels | karpenter.sh/nodepool,cloud.google.com/gke-nodepool | false | | APP_SYNC_IMAGE | string |quay.io/devtron/chart-sync:1227622d-132-3775 | | | false | | APP_SYNC_JOB_RESOURCES_OBJ | string | | | | false | | APP_SYNC_SERVICE_ACCOUNT | string |chart-sync | | | false | diff --git a/pkg/k8s/capacity/bean/bean.go b/pkg/k8s/capacity/bean/bean.go index 5d2146142e..a159857f02 100644 --- a/pkg/k8s/capacity/bean/bean.go +++ b/pkg/k8s/capacity/bean/bean.go @@ -19,13 +19,15 @@ package bean import ( "context" "fmt" + "strings" + "time" + + "github.com/caarlos0/env" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/client-go/kubernetes" - "strings" - "time" ) const ( @@ -43,21 +45,33 @@ const NamespaceAll string = "" // below const set is used for pod filters const ( - daemonSetFatal = "DaemonSet-managed Pods (use --ignore-daemonsets to ignore)" - daemonSetWarning = "ignoring DaemonSet-managed Pods" - localStorageFatal = "Pods with local storage (use --delete-emptydir-data to override)" - localStorageWarning = "deleting Pods with local storage" - unmanagedFatal = "Pods declare no controller (use --force to override)" - unmanagedWarning = "deleting Pods that declare no controller" - AWSNodeGroupLabel = "alpha.eksctl.io/nodegroup-name" - AzureNodeGroupLabel = "kubernetes.azure.com/agentpool" - GcpNodeGroupLabel = "cloud.google.com/gke-nodepool" - KopsNodeGroupLabel = "kops.k8s.io/instancegroup" - AWSEKSNodeGroupLabel = "eks.amazonaws.com/nodegroup" + daemonSetFatal = "DaemonSet-managed Pods (use --ignore-daemonsets to ignore)" + daemonSetWarning = "ignoring DaemonSet-managed Pods" + localStorageFatal = "Pods with local storage (use --delete-emptydir-data to override)" + localStorageWarning = "deleting Pods with local storage" + unmanagedFatal = "Pods declare no controller (use --force to override)" + unmanagedWarning = "deleting Pods that declare no controller" + AWSNodeGroupLabel = "alpha.eksctl.io/nodegroup-name" + AzureNodeGroupLabel = "kubernetes.azure.com/agentpool" + GcpNodeGroupLabel = "cloud.google.com/gke-nodepool" + KopsNodeGroupLabel = "kops.k8s.io/instancegroup" + AWSEKSNodeGroupLabel = "eks.amazonaws.com/nodegroup" + KarpenterNodeGroupLabel = "karpenter.sh/nodepool" ) -// TODO: add any new nodeGrouplabel in this array -var NodeGroupLabels = [5]string{AWSNodeGroupLabel, AzureNodeGroupLabel, GcpNodeGroupLabel, KopsNodeGroupLabel, AWSEKSNodeGroupLabel} +type NodeGroupConfig struct { + AdditionalLabels []string `env:"ADDITIONAL_NODE_GROUP_LABELS" envSeparator:"," description:"Add comma separated list of additional node group labels to default labels" example:"karpenter.sh/nodepool,cloud.google.com/gke-nodepool"` +} + +var NodeGroupLabels = []string{AWSNodeGroupLabel, AzureNodeGroupLabel, GcpNodeGroupLabel, KopsNodeGroupLabel, AWSEKSNodeGroupLabel, KarpenterNodeGroupLabel} + +func init() { + cfg := &NodeGroupConfig{} + if err := env.Parse(cfg); err == nil && len(cfg.AdditionalLabels) > 0 { + // Append additional labels from environment to default labels + NodeGroupLabels = append(NodeGroupLabels, cfg.AdditionalLabels...) + } +} // below const set is used for pod delete status const ( From d4d5fdb7c73ec5d4ab05d18aaef4b5cec9b401ed Mon Sep 17 00:00:00 2001 From: Ash-exp Date: Mon, 24 Mar 2025 02:21:00 +0530 Subject: [PATCH 21/25] updated timeout for git material save/update --- go.mod | 2 +- go.sum | 4 ++-- pkg/pipeline/CiCdPipelineOrchestrator.go | 13 +++++++++++-- .../devtron-labs/protos/gitSensor/service.pb.go | 12 ++++++------ .../devtron-labs/protos/gitSensor/service.proto | 2 +- vendor/modules.txt | 2 +- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 00292eb28a..d1939eec75 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 github.com/devtron-labs/common-lib v0.18.1-0.20241001061923-eda545dc839e github.com/devtron-labs/go-bitbucket v0.9.60-beta - github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67 + github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917 github.com/evanphx/json-patch v5.9.0+incompatible github.com/gammazero/workerpool v1.1.3 github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 diff --git a/go.sum b/go.sum index eb9dc688ed..99ac75eea9 100644 --- a/go.sum +++ b/go.sum @@ -798,8 +798,8 @@ github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13/go.mod h1:1QJJLpgJSkb5Jm9xPeKAk+kXb0QgBOOOgJj0cgYhAVA= github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU= github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y= -github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67 h1:gH82ad3wOUH7oEac9NA5jIx/ZIzd77siI/pHI2WONmM= -github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67/go.mod h1:1TqULGlTey+VNhAu/ag7NJuUvByJemkqodsc9L5PHJk= +github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917 h1:g4R93NXNrHRv2FiGTrqKR7qb5bx6sGXD0Qy7UoOP6pw= +github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917/go.mod h1:1TqULGlTey+VNhAu/ag7NJuUvByJemkqodsc9L5PHJk= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= diff --git a/pkg/pipeline/CiCdPipelineOrchestrator.go b/pkg/pipeline/CiCdPipelineOrchestrator.go index f1c86e1b6d..fc8a9760ad 100644 --- a/pkg/pipeline/CiCdPipelineOrchestrator.go +++ b/pkg/pipeline/CiCdPipelineOrchestrator.go @@ -1495,7 +1495,14 @@ func (impl CiCdPipelineOrchestratorImpl) updateRepositoryToGitSensor(material *r CloningMode: cloningMode, PreserveMode: preserveMode, } - return impl.GitSensorClient.UpdateRepo(context.Background(), sensorMaterial) + timeout := 10 * time.Minute + if preserveMode { + // additional time may be required for dir snapshot + timeout = 15 * time.Minute + } + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + return impl.GitSensorClient.UpdateRepo(ctx, sensorMaterial) } func (impl CiCdPipelineOrchestratorImpl) addRepositoryToGitSensor(materials []*bean.GitMaterial, cloningMode string) error { @@ -1513,7 +1520,9 @@ func (impl CiCdPipelineOrchestratorImpl) addRepositoryToGitSensor(materials []*b } sensorMaterials = append(sensorMaterials, sensorMaterial) } - return impl.GitSensorClient.AddRepo(context.Background(), sensorMaterials) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute) + defer cancel() + return impl.GitSensorClient.AddRepo(ctx, sensorMaterials) } // FIXME: not thread safe diff --git a/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go b/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go index 11bf567669..520739eab5 100644 --- a/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go +++ b/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go @@ -227,7 +227,7 @@ type GitMaterial struct { Deleted bool `protobuf:"varint,9,opt,name=deleted,proto3" json:"deleted,omitempty"` FilterPattern []string `protobuf:"bytes,10,rep,name=filterPattern,proto3" json:"filterPattern,omitempty"` CloningMode string `protobuf:"bytes,11,opt,name=cloningMode,proto3" json:"cloningMode,omitempty"` - PreserveMode bool `protobuf:"varint,12,opt,name=preserveMode,proto3" json:"preserveMode,omitempty"` + CreateBackup bool `protobuf:"varint,12,opt,name=createBackup,proto3" json:"createBackup,omitempty"` } func (x *GitMaterial) Reset() { @@ -339,9 +339,9 @@ func (x *GitMaterial) GetCloningMode() string { return "" } -func (x *GitMaterial) GetPreserveMode() bool { +func (x *GitMaterial) GetCreateBackup() bool { if x != nil { - return x.PreserveMode + return x.CreateBackup } return false } @@ -2942,9 +2942,9 @@ var file_gitSensor_service_proto_rawDesc = []byte{ 0x72, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, - 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x6f, 0x0a, + 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x6f, 0x0a, 0x1b, 0x53, 0x61, 0x76, 0x65, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x13, 0x63, 0x69, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, diff --git a/vendor/github.com/devtron-labs/protos/gitSensor/service.proto b/vendor/github.com/devtron-labs/protos/gitSensor/service.proto index e7f6159d6e..df9564f1a7 100644 --- a/vendor/github.com/devtron-labs/protos/gitSensor/service.proto +++ b/vendor/github.com/devtron-labs/protos/gitSensor/service.proto @@ -38,7 +38,7 @@ message GitMaterial { bool deleted = 9; repeated string filterPattern = 10; string cloningMode = 11; - bool preserveMode = 12; + bool createBackup = 12; } message SavePipelineMaterialRequest { diff --git a/vendor/modules.txt b/vendor/modules.txt index 08468077e0..6a49d659b7 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -383,7 +383,7 @@ github.com/devtron-labs/common-lib/workflow # github.com/devtron-labs/go-bitbucket v0.9.60-beta ## explicit; go 1.14 github.com/devtron-labs/go-bitbucket -# github.com/devtron-labs/protos v0.0.3-0.20250320112837-a8190ec7cd67 +# github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917 ## explicit; go 1.17 github.com/devtron-labs/protos/gitSensor # github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f From bfe1ec7b8b4db25d58c2b3aee0f8dbc93d627eb1 Mon Sep 17 00:00:00 2001 From: Ash-exp Date: Mon, 24 Mar 2025 02:26:48 +0530 Subject: [PATCH 22/25] fix: compile issue --- client/gitSensor/GitSensorGrpcClient.go | 4 ++-- client/gitSensor/GitSensorRestClient.go | 2 +- cmd/external-app/wire_gen.go | 2 +- pkg/bean/app.go | 2 +- pkg/pipeline/CiCdPipelineOrchestrator.go | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/gitSensor/GitSensorGrpcClient.go b/client/gitSensor/GitSensorGrpcClient.go index a02e6eb0be..0988b47abf 100644 --- a/client/gitSensor/GitSensorGrpcClient.go +++ b/client/gitSensor/GitSensorGrpcClient.go @@ -160,7 +160,7 @@ func (client *GrpcApiClientImpl) AddRepo(ctx context.Context, materials []*GitMa Deleted: item.Deleted, FilterPattern: item.FilterPattern, CloningMode: item.CloningMode, - PreserveMode: item.PreserveMode, + CreateBackup: item.CreateBackup, }) } } @@ -192,7 +192,7 @@ func (client *GrpcApiClientImpl) UpdateRepo(ctx context.Context, material *GitMa Deleted: material.Deleted, FilterPattern: material.FilterPattern, CloningMode: material.CloningMode, - PreserveMode: material.PreserveMode, + CreateBackup: material.CreateBackup, } _, err = serviceClient.UpdateRepo(ctx, mappedMaterial) diff --git a/client/gitSensor/GitSensorRestClient.go b/client/gitSensor/GitSensorRestClient.go index 66b83e7b54..1c12f43efa 100644 --- a/client/gitSensor/GitSensorRestClient.go +++ b/client/gitSensor/GitSensorRestClient.go @@ -88,7 +88,7 @@ type GitMaterial struct { FetchSubmodules bool FilterPattern []string CloningMode string - PreserveMode bool + CreateBackup bool } type GitProvider struct { Id int diff --git a/cmd/external-app/wire_gen.go b/cmd/external-app/wire_gen.go index e827637c0a..cc31476cbe 100644 --- a/cmd/external-app/wire_gen.go +++ b/cmd/external-app/wire_gen.go @@ -1,6 +1,6 @@ // Code generated by Wire. DO NOT EDIT. -//go:generate go run -mod=mod github.com/google/wire/cmd/wire +//go:generate go run github.com/google/wire/cmd/wire //go:build !wireinject // +build !wireinject diff --git a/pkg/bean/app.go b/pkg/bean/app.go index 66aa574856..96c581b5f6 100644 --- a/pkg/bean/app.go +++ b/pkg/bean/app.go @@ -92,7 +92,7 @@ type GitMaterial struct { FetchSubmodules bool `json:"fetchSubmodules"` IsUsedInCiConfig bool `json:"isUsedInCiConfig"` FilterPattern []string `json:"filterPattern"` - PreserveMode bool `json:"preserveMode"` + CreateBackup bool `json:"createBackup"` } // UpdateSanitisedGitRepoUrl will remove all trailing slashes , leading and trailing spaces from git repository url diff --git a/pkg/pipeline/CiCdPipelineOrchestrator.go b/pkg/pipeline/CiCdPipelineOrchestrator.go index fc8a9760ad..d5ce8ec8fc 100644 --- a/pkg/pipeline/CiCdPipelineOrchestrator.go +++ b/pkg/pipeline/CiCdPipelineOrchestrator.go @@ -1468,7 +1468,7 @@ func (impl CiCdPipelineOrchestratorImpl) UpdateMaterial(updateMaterialDTO *bean. } err = impl.updateRepositoryToGitSensor(updatedMaterial, "", - updateMaterialDTO.Material.PreserveMode) + updateMaterialDTO.Material.CreateBackup) if err != nil { impl.logger.Errorw("error in updating to git-sensor", "err", err) return nil, err @@ -1482,7 +1482,7 @@ func (impl CiCdPipelineOrchestratorImpl) UpdateMaterial(updateMaterialDTO *bean. } func (impl CiCdPipelineOrchestratorImpl) updateRepositoryToGitSensor(material *repository6.GitMaterial, - cloningMode string, preserveMode bool) error { + cloningMode string, createBackup bool) error { sensorMaterial := &gitSensor.GitMaterial{ Name: material.Name, Url: material.Url, @@ -1493,10 +1493,10 @@ func (impl CiCdPipelineOrchestratorImpl) updateRepositoryToGitSensor(material *r FetchSubmodules: material.FetchSubmodules, FilterPattern: material.FilterPattern, CloningMode: cloningMode, - PreserveMode: preserveMode, + CreateBackup: createBackup, } timeout := 10 * time.Minute - if preserveMode { + if createBackup { // additional time may be required for dir snapshot timeout = 15 * time.Minute } From 378f0088ab1333f6745534ce2ffae450dac5e237 Mon Sep 17 00:00:00 2001 From: Ash-exp Date: Mon, 24 Mar 2025 03:39:05 +0530 Subject: [PATCH 23/25] updated protos version --- go.mod | 2 +- go.sum | 4 +- .../protos/gitSensor/service.pb.go | 2 +- .../protos/gitSensor/service_grpc.pb.go | 100 +++++++++++------- vendor/modules.txt | 2 +- 5 files changed, 66 insertions(+), 44 deletions(-) diff --git a/go.mod b/go.mod index d1939eec75..1766dadde5 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/devtron-labs/authenticator v0.4.35-0.20240809073103-6e11da8083f8 github.com/devtron-labs/common-lib v0.18.1-0.20241001061923-eda545dc839e github.com/devtron-labs/go-bitbucket v0.9.60-beta - github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917 + github.com/devtron-labs/protos v0.0.3-0.20250323220609-ecf8a0f7305e github.com/evanphx/json-patch v5.9.0+incompatible github.com/gammazero/workerpool v1.1.3 github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 diff --git a/go.sum b/go.sum index 99ac75eea9..3f73e56054 100644 --- a/go.sum +++ b/go.sum @@ -798,8 +798,8 @@ github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a github.com/devtron-labs/devtron-services/common-lib v0.0.0-20250313102545-75df8a5bec13/go.mod h1:1QJJLpgJSkb5Jm9xPeKAk+kXb0QgBOOOgJj0cgYhAVA= github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU= github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y= -github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917 h1:g4R93NXNrHRv2FiGTrqKR7qb5bx6sGXD0Qy7UoOP6pw= -github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917/go.mod h1:1TqULGlTey+VNhAu/ag7NJuUvByJemkqodsc9L5PHJk= +github.com/devtron-labs/protos v0.0.3-0.20250323220609-ecf8a0f7305e h1:U6UdYbW8a7xn5IzFPd8cywjVVPfutGJCudjePAfL/Hs= +github.com/devtron-labs/protos v0.0.3-0.20250323220609-ecf8a0f7305e/go.mod h1:1TqULGlTey+VNhAu/ag7NJuUvByJemkqodsc9L5PHJk= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= diff --git a/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go b/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go index 520739eab5..db1f547437 100644 --- a/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go +++ b/vendor/github.com/devtron-labs/protos/gitSensor/service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 +// protoc-gen-go v1.31.0 // protoc v3.9.1 // source: gitSensor/service.proto diff --git a/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go b/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go index 6956c35ca4..b128375613 100644 --- a/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go +++ b/vendor/github.com/devtron-labs/protos/gitSensor/service_grpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.2.0 +// - protoc-gen-go-grpc v1.3.0 // - protoc v3.9.1 // source: gitSensor/service.proto @@ -18,6 +18,28 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 +const ( + GitSensorService_SaveGitProvider_FullMethodName = "/gitService.GitSensorService/SaveGitProvider" + GitSensorService_AddRepo_FullMethodName = "/gitService.GitSensorService/AddRepo" + GitSensorService_UpdateRepo_FullMethodName = "/gitService.GitSensorService/UpdateRepo" + GitSensorService_SavePipelineMaterial_FullMethodName = "/gitService.GitSensorService/SavePipelineMaterial" + GitSensorService_FetchChanges_FullMethodName = "/gitService.GitSensorService/FetchChanges" + GitSensorService_GetHeadForPipelineMaterials_FullMethodName = "/gitService.GitSensorService/GetHeadForPipelineMaterials" + GitSensorService_GetCommitMetadata_FullMethodName = "/gitService.GitSensorService/GetCommitMetadata" + GitSensorService_GetCommitMetadataForPipelineMaterial_FullMethodName = "/gitService.GitSensorService/GetCommitMetadataForPipelineMaterial" + GitSensorService_GetCommitInfoForTag_FullMethodName = "/gitService.GitSensorService/GetCommitInfoForTag" + GitSensorService_RefreshGitMaterial_FullMethodName = "/gitService.GitSensorService/RefreshGitMaterial" + GitSensorService_ReloadAllMaterial_FullMethodName = "/gitService.GitSensorService/ReloadAllMaterial" + GitSensorService_ReloadMaterials_FullMethodName = "/gitService.GitSensorService/ReloadMaterials" + GitSensorService_ReloadMaterial_FullMethodName = "/gitService.GitSensorService/ReloadMaterial" + GitSensorService_GetChangesInRelease_FullMethodName = "/gitService.GitSensorService/GetChangesInRelease" + GitSensorService_GetWebhookData_FullMethodName = "/gitService.GitSensorService/GetWebhookData" + GitSensorService_GetAllWebhookEventConfigForHost_FullMethodName = "/gitService.GitSensorService/GetAllWebhookEventConfigForHost" + GitSensorService_GetWebhookEventConfig_FullMethodName = "/gitService.GitSensorService/GetWebhookEventConfig" + GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_FullMethodName = "/gitService.GitSensorService/GetWebhookPayloadDataForPipelineMaterialId" + GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_FullMethodName = "/gitService.GitSensorService/GetWebhookPayloadFilterDataForPipelineMaterialId" +) + // GitSensorServiceClient is the client API for GitSensorService service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -72,7 +94,7 @@ func NewGitSensorServiceClient(cc grpc.ClientConnInterface) GitSensorServiceClie func (c *gitSensorServiceClient) SaveGitProvider(ctx context.Context, in *GitProvider, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/SaveGitProvider", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_SaveGitProvider_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -81,7 +103,7 @@ func (c *gitSensorServiceClient) SaveGitProvider(ctx context.Context, in *GitPro func (c *gitSensorServiceClient) AddRepo(ctx context.Context, in *AddRepoRequest, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/AddRepo", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_AddRepo_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -90,7 +112,7 @@ func (c *gitSensorServiceClient) AddRepo(ctx context.Context, in *AddRepoRequest func (c *gitSensorServiceClient) UpdateRepo(ctx context.Context, in *GitMaterial, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/UpdateRepo", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_UpdateRepo_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -99,7 +121,7 @@ func (c *gitSensorServiceClient) UpdateRepo(ctx context.Context, in *GitMaterial func (c *gitSensorServiceClient) SavePipelineMaterial(ctx context.Context, in *SavePipelineMaterialRequest, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/SavePipelineMaterial", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_SavePipelineMaterial_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -108,7 +130,7 @@ func (c *gitSensorServiceClient) SavePipelineMaterial(ctx context.Context, in *S func (c *gitSensorServiceClient) FetchChanges(ctx context.Context, in *FetchScmChangesRequest, opts ...grpc.CallOption) (*MaterialChangeResponse, error) { out := new(MaterialChangeResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/FetchChanges", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_FetchChanges_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -117,7 +139,7 @@ func (c *gitSensorServiceClient) FetchChanges(ctx context.Context, in *FetchScmC func (c *gitSensorServiceClient) GetHeadForPipelineMaterials(ctx context.Context, in *HeadRequest, opts ...grpc.CallOption) (*GetHeadForPipelineMaterialsResponse, error) { out := new(GetHeadForPipelineMaterialsResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetHeadForPipelineMaterials", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetHeadForPipelineMaterials_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -126,7 +148,7 @@ func (c *gitSensorServiceClient) GetHeadForPipelineMaterials(ctx context.Context func (c *gitSensorServiceClient) GetCommitMetadata(ctx context.Context, in *CommitMetadataRequest, opts ...grpc.CallOption) (*GitCommit, error) { out := new(GitCommit) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetCommitMetadata", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetCommitMetadata_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -135,7 +157,7 @@ func (c *gitSensorServiceClient) GetCommitMetadata(ctx context.Context, in *Comm func (c *gitSensorServiceClient) GetCommitMetadataForPipelineMaterial(ctx context.Context, in *CommitMetadataRequest, opts ...grpc.CallOption) (*GitCommit, error) { out := new(GitCommit) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetCommitMetadataForPipelineMaterial", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetCommitMetadataForPipelineMaterial_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -144,7 +166,7 @@ func (c *gitSensorServiceClient) GetCommitMetadataForPipelineMaterial(ctx contex func (c *gitSensorServiceClient) GetCommitInfoForTag(ctx context.Context, in *CommitMetadataRequest, opts ...grpc.CallOption) (*GitCommit, error) { out := new(GitCommit) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetCommitInfoForTag", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetCommitInfoForTag_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -153,7 +175,7 @@ func (c *gitSensorServiceClient) GetCommitInfoForTag(ctx context.Context, in *Co func (c *gitSensorServiceClient) RefreshGitMaterial(ctx context.Context, in *RefreshGitMaterialRequest, opts ...grpc.CallOption) (*RefreshGitMaterialResponse, error) { out := new(RefreshGitMaterialResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/RefreshGitMaterial", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_RefreshGitMaterial_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -162,7 +184,7 @@ func (c *gitSensorServiceClient) RefreshGitMaterial(ctx context.Context, in *Ref func (c *gitSensorServiceClient) ReloadAllMaterial(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { out := new(Empty) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/ReloadAllMaterial", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_ReloadAllMaterial_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -171,7 +193,7 @@ func (c *gitSensorServiceClient) ReloadAllMaterial(ctx context.Context, in *Empt func (c *gitSensorServiceClient) ReloadMaterials(ctx context.Context, in *ReloadMaterialsRequest, opts ...grpc.CallOption) (*GenericResponse, error) { out := new(GenericResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/ReloadMaterials", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_ReloadMaterials_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -180,7 +202,7 @@ func (c *gitSensorServiceClient) ReloadMaterials(ctx context.Context, in *Reload func (c *gitSensorServiceClient) ReloadMaterial(ctx context.Context, in *ReloadMaterialRequest, opts ...grpc.CallOption) (*GenericResponse, error) { out := new(GenericResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/ReloadMaterial", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_ReloadMaterial_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -189,7 +211,7 @@ func (c *gitSensorServiceClient) ReloadMaterial(ctx context.Context, in *ReloadM func (c *gitSensorServiceClient) GetChangesInRelease(ctx context.Context, in *ReleaseChangeRequest, opts ...grpc.CallOption) (*GitChanges, error) { out := new(GitChanges) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetChangesInRelease", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetChangesInRelease_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -198,7 +220,7 @@ func (c *gitSensorServiceClient) GetChangesInRelease(ctx context.Context, in *Re func (c *gitSensorServiceClient) GetWebhookData(ctx context.Context, in *WebhookDataRequest, opts ...grpc.CallOption) (*WebhookAndCiData, error) { out := new(WebhookAndCiData) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookData", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetWebhookData_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -207,7 +229,7 @@ func (c *gitSensorServiceClient) GetWebhookData(ctx context.Context, in *Webhook func (c *gitSensorServiceClient) GetAllWebhookEventConfigForHost(ctx context.Context, in *WebhookEventConfigRequest, opts ...grpc.CallOption) (*WebhookEventConfigResponse, error) { out := new(WebhookEventConfigResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetAllWebhookEventConfigForHost", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetAllWebhookEventConfigForHost_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -216,7 +238,7 @@ func (c *gitSensorServiceClient) GetAllWebhookEventConfigForHost(ctx context.Con func (c *gitSensorServiceClient) GetWebhookEventConfig(ctx context.Context, in *WebhookEventConfigRequest, opts ...grpc.CallOption) (*WebhookEventConfig, error) { out := new(WebhookEventConfig) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookEventConfig", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetWebhookEventConfig_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -225,7 +247,7 @@ func (c *gitSensorServiceClient) GetWebhookEventConfig(ctx context.Context, in * func (c *gitSensorServiceClient) GetWebhookPayloadDataForPipelineMaterialId(ctx context.Context, in *WebhookPayloadDataRequest, opts ...grpc.CallOption) (*WebhookPayloadDataResponse, error) { out := new(WebhookPayloadDataResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookPayloadDataForPipelineMaterialId", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -234,7 +256,7 @@ func (c *gitSensorServiceClient) GetWebhookPayloadDataForPipelineMaterialId(ctx func (c *gitSensorServiceClient) GetWebhookPayloadFilterDataForPipelineMaterialId(ctx context.Context, in *WebhookPayloadFilterDataRequest, opts ...grpc.CallOption) (*WebhookPayloadFilterDataResponse, error) { out := new(WebhookPayloadFilterDataResponse) - err := c.cc.Invoke(ctx, "/gitService.GitSensorService/GetWebhookPayloadFilterDataForPipelineMaterialId", in, out, opts...) + err := c.cc.Invoke(ctx, GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -370,7 +392,7 @@ func _GitSensorService_SaveGitProvider_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/SaveGitProvider", + FullMethod: GitSensorService_SaveGitProvider_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).SaveGitProvider(ctx, req.(*GitProvider)) @@ -388,7 +410,7 @@ func _GitSensorService_AddRepo_Handler(srv interface{}, ctx context.Context, dec } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/AddRepo", + FullMethod: GitSensorService_AddRepo_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).AddRepo(ctx, req.(*AddRepoRequest)) @@ -406,7 +428,7 @@ func _GitSensorService_UpdateRepo_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/UpdateRepo", + FullMethod: GitSensorService_UpdateRepo_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).UpdateRepo(ctx, req.(*GitMaterial)) @@ -424,7 +446,7 @@ func _GitSensorService_SavePipelineMaterial_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/SavePipelineMaterial", + FullMethod: GitSensorService_SavePipelineMaterial_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).SavePipelineMaterial(ctx, req.(*SavePipelineMaterialRequest)) @@ -442,7 +464,7 @@ func _GitSensorService_FetchChanges_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/FetchChanges", + FullMethod: GitSensorService_FetchChanges_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).FetchChanges(ctx, req.(*FetchScmChangesRequest)) @@ -460,7 +482,7 @@ func _GitSensorService_GetHeadForPipelineMaterials_Handler(srv interface{}, ctx } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetHeadForPipelineMaterials", + FullMethod: GitSensorService_GetHeadForPipelineMaterials_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetHeadForPipelineMaterials(ctx, req.(*HeadRequest)) @@ -478,7 +500,7 @@ func _GitSensorService_GetCommitMetadata_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetCommitMetadata", + FullMethod: GitSensorService_GetCommitMetadata_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetCommitMetadata(ctx, req.(*CommitMetadataRequest)) @@ -496,7 +518,7 @@ func _GitSensorService_GetCommitMetadataForPipelineMaterial_Handler(srv interfac } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetCommitMetadataForPipelineMaterial", + FullMethod: GitSensorService_GetCommitMetadataForPipelineMaterial_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetCommitMetadataForPipelineMaterial(ctx, req.(*CommitMetadataRequest)) @@ -514,7 +536,7 @@ func _GitSensorService_GetCommitInfoForTag_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetCommitInfoForTag", + FullMethod: GitSensorService_GetCommitInfoForTag_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetCommitInfoForTag(ctx, req.(*CommitMetadataRequest)) @@ -532,7 +554,7 @@ func _GitSensorService_RefreshGitMaterial_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/RefreshGitMaterial", + FullMethod: GitSensorService_RefreshGitMaterial_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).RefreshGitMaterial(ctx, req.(*RefreshGitMaterialRequest)) @@ -550,7 +572,7 @@ func _GitSensorService_ReloadAllMaterial_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/ReloadAllMaterial", + FullMethod: GitSensorService_ReloadAllMaterial_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).ReloadAllMaterial(ctx, req.(*Empty)) @@ -568,7 +590,7 @@ func _GitSensorService_ReloadMaterials_Handler(srv interface{}, ctx context.Cont } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/ReloadMaterials", + FullMethod: GitSensorService_ReloadMaterials_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).ReloadMaterials(ctx, req.(*ReloadMaterialsRequest)) @@ -586,7 +608,7 @@ func _GitSensorService_ReloadMaterial_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/ReloadMaterial", + FullMethod: GitSensorService_ReloadMaterial_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).ReloadMaterial(ctx, req.(*ReloadMaterialRequest)) @@ -604,7 +626,7 @@ func _GitSensorService_GetChangesInRelease_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetChangesInRelease", + FullMethod: GitSensorService_GetChangesInRelease_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetChangesInRelease(ctx, req.(*ReleaseChangeRequest)) @@ -622,7 +644,7 @@ func _GitSensorService_GetWebhookData_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetWebhookData", + FullMethod: GitSensorService_GetWebhookData_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookData(ctx, req.(*WebhookDataRequest)) @@ -640,7 +662,7 @@ func _GitSensorService_GetAllWebhookEventConfigForHost_Handler(srv interface{}, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetAllWebhookEventConfigForHost", + FullMethod: GitSensorService_GetAllWebhookEventConfigForHost_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetAllWebhookEventConfigForHost(ctx, req.(*WebhookEventConfigRequest)) @@ -658,7 +680,7 @@ func _GitSensorService_GetWebhookEventConfig_Handler(srv interface{}, ctx contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetWebhookEventConfig", + FullMethod: GitSensorService_GetWebhookEventConfig_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookEventConfig(ctx, req.(*WebhookEventConfigRequest)) @@ -676,7 +698,7 @@ func _GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_Handler(srv in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetWebhookPayloadDataForPipelineMaterialId", + FullMethod: GitSensorService_GetWebhookPayloadDataForPipelineMaterialId_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookPayloadDataForPipelineMaterialId(ctx, req.(*WebhookPayloadDataRequest)) @@ -694,7 +716,7 @@ func _GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_Handler( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitService.GitSensorService/GetWebhookPayloadFilterDataForPipelineMaterialId", + FullMethod: GitSensorService_GetWebhookPayloadFilterDataForPipelineMaterialId_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(GitSensorServiceServer).GetWebhookPayloadFilterDataForPipelineMaterialId(ctx, req.(*WebhookPayloadFilterDataRequest)) diff --git a/vendor/modules.txt b/vendor/modules.txt index 6a49d659b7..66f1cb4194 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -383,7 +383,7 @@ github.com/devtron-labs/common-lib/workflow # github.com/devtron-labs/go-bitbucket v0.9.60-beta ## explicit; go 1.14 github.com/devtron-labs/go-bitbucket -# github.com/devtron-labs/protos v0.0.3-0.20250323161859-1e84b4db2917 +# github.com/devtron-labs/protos v0.0.3-0.20250323220609-ecf8a0f7305e ## explicit; go 1.17 github.com/devtron-labs/protos/gitSensor # github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f From 486e30d17a143bd36e97df9a8e48eddeec041fce Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Mon, 24 Mar 2025 17:12:48 +0530 Subject: [PATCH 24/25] added sql scripts --- scripts/sql/32403100_resource_template.down.sql | 0 scripts/sql/32403100_resource_template.up.sql | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 scripts/sql/32403100_resource_template.down.sql create mode 100644 scripts/sql/32403100_resource_template.up.sql diff --git a/scripts/sql/32403100_resource_template.down.sql b/scripts/sql/32403100_resource_template.down.sql new file mode 100644 index 0000000000..e69de29bb2 diff --git a/scripts/sql/32403100_resource_template.up.sql b/scripts/sql/32403100_resource_template.up.sql new file mode 100644 index 0000000000..e69de29bb2 From 934a3519891e7539310ca7eb124eacbd1ed7aa52 Mon Sep 17 00:00:00 2001 From: kartik-579 Date: Mon, 24 Mar 2025 18:52:41 +0530 Subject: [PATCH 25/25] sql no update --- ...urce_template.down.sql => 32403200_resource_template.down.sql} | 0 ...resource_template.up.sql => 32403200_resource_template.up.sql} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename scripts/sql/{32403100_resource_template.down.sql => 32403200_resource_template.down.sql} (100%) rename scripts/sql/{32403100_resource_template.up.sql => 32403200_resource_template.up.sql} (100%) diff --git a/scripts/sql/32403100_resource_template.down.sql b/scripts/sql/32403200_resource_template.down.sql similarity index 100% rename from scripts/sql/32403100_resource_template.down.sql rename to scripts/sql/32403200_resource_template.down.sql diff --git a/scripts/sql/32403100_resource_template.up.sql b/scripts/sql/32403200_resource_template.up.sql similarity index 100% rename from scripts/sql/32403100_resource_template.up.sql rename to scripts/sql/32403200_resource_template.up.sql