Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions Wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ import (
"github.com/devtron-labs/devtron/pkg/commonService"
delete2 "github.com/devtron-labs/devtron/pkg/delete"
"github.com/devtron-labs/devtron/pkg/deploymentGroup"
"github.com/devtron-labs/devtron/pkg/devtronResource"
repository9 "github.com/devtron-labs/devtron/pkg/devtronResource/repository"
"github.com/devtron-labs/devtron/pkg/dockerRegistry"
"github.com/devtron-labs/devtron/pkg/git"
"github.com/devtron-labs/devtron/pkg/gitops"
Expand All @@ -111,6 +113,7 @@ import (
"github.com/devtron-labs/devtron/pkg/plugin"
repository6 "github.com/devtron-labs/devtron/pkg/plugin/repository"
"github.com/devtron-labs/devtron/pkg/projectManagementService/jira"
"github.com/devtron-labs/devtron/pkg/resourceQualifiers"
"github.com/devtron-labs/devtron/pkg/security"
"github.com/devtron-labs/devtron/pkg/sql"
util3 "github.com/devtron-labs/devtron/pkg/util"
Expand Down Expand Up @@ -902,6 +905,18 @@ func InitializeApp() (*App, error) {
dockerRegistryRepository.NewOCIRegistryConfigRepositoryImpl,
wire.Bind(new(dockerRegistryRepository.OCIRegistryConfigRepository), new(*dockerRegistryRepository.OCIRegistryConfigRepositoryImpl)),
// end: docker registry wire set injection

resourceQualifiers.NewQualifiersMappingRepositoryImpl,
wire.Bind(new(resourceQualifiers.QualifiersMappingRepository), new(*resourceQualifiers.QualifiersMappingRepositoryImpl)),

resourceQualifiers.NewQualifierMappingServiceImpl,
wire.Bind(new(resourceQualifiers.QualifierMappingService), new(*resourceQualifiers.QualifierMappingServiceImpl)),

repository9.NewDevtronResourceSearchableKeyRepositoryImpl,
wire.Bind(new(repository9.DevtronResourceSearchableKeyRepository), new(*repository9.DevtronResourceSearchableKeyRepositoryImpl)),

devtronResource.NewDevtronResourceSearchableKeyServiceImpl,
wire.Bind(new(devtronResource.DevtronResourceService), new(*devtronResource.DevtronResourceSearchableKeyServiceImpl)),
)
return &App{}, nil
}
12 changes: 6 additions & 6 deletions api/restHandler/app/DeploymentPipelineRestHandler.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import (
"github.com/devtron-labs/devtron/pkg/chart"
"github.com/devtron-labs/devtron/pkg/pipeline"
bean3 "github.com/devtron-labs/devtron/pkg/pipeline/bean"
"github.com/devtron-labs/devtron/pkg/resourceQualifiers"
"github.com/devtron-labs/devtron/pkg/user/casbin"
"github.com/devtron-labs/devtron/pkg/variables/models"
"github.com/go-pg/pg"
"github.com/gorilla/mux"
"go.opentelemetry.io/otel"
Expand Down Expand Up @@ -110,7 +110,7 @@ func (handler PipelineConfigRestHandlerImpl) ConfigureDeploymentTemplateForApp(w
}
chartRefId := templateRequest.ChartRefId
//VARIABLE_RESOLVE
scope := models.Scope{
scope := resourceQualifiers.Scope{
AppId: templateRequest.AppId,
}
validate, err2 := handler.chartService.DeploymentTemplateValidate(r.Context(), templateRequest.ValuesOverride, chartRefId, scope)
Expand Down Expand Up @@ -575,7 +575,7 @@ func (handler PipelineConfigRestHandlerImpl) ChangeChartRef(w http.ResponseWrite
}

//VARIABLE_RESOLVE
scope := models.Scope{
scope := resourceQualifiers.Scope{
AppId: request.AppId,
EnvId: request.EnvId,
ClusterId: envConfigProperties.ClusterId,
Expand Down Expand Up @@ -696,7 +696,7 @@ func (handler PipelineConfigRestHandlerImpl) EnvConfigOverrideCreate(w http.Resp
}
chartRefId := envConfigProperties.ChartRefId
//VARIABLE_RESOLVE
scope := models.Scope{
scope := resourceQualifiers.Scope{
AppId: appId,
EnvId: environmentId,
ClusterId: envConfigProperties.ClusterId,
Expand Down Expand Up @@ -805,7 +805,7 @@ func (handler PipelineConfigRestHandlerImpl) EnvConfigOverrideUpdate(w http.Resp
}
chartRefId := envConfigProperties.ChartRefId
//VARIABLE_RESOLVE
scope := models.Scope{
scope := resourceQualifiers.Scope{
AppId: appId,
EnvId: envId,
ClusterId: envConfigProperties.ClusterId,
Expand Down Expand Up @@ -1291,7 +1291,7 @@ func (handler PipelineConfigRestHandlerImpl) UpdateAppOverride(w http.ResponseWr
}
chartRefId := templateRequest.ChartRefId
//VARIABLE_RESOLVE
scope := models.Scope{
scope := resourceQualifiers.Scope{
AppId: templateRequest.AppId,
}
_, span = otel.Tracer("orchestrator").Start(ctx, "chartService.DeploymentTemplateValidate")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/devtron-labs/devtron/api/restHandler/common"
"github.com/devtron-labs/devtron/pkg/bean"
"github.com/devtron-labs/devtron/pkg/pipeline"
"github.com/devtron-labs/devtron/pkg/resourceQualifiers"
"github.com/devtron-labs/devtron/pkg/user"
"github.com/devtron-labs/devtron/pkg/user/casbin"
"github.com/devtron-labs/devtron/pkg/variables"
Expand Down Expand Up @@ -123,7 +124,7 @@ func (handler *ScopedVariableRestHandlerImpl) GetScopedVariables(w http.Response
return
}

var scope models.Scope
var scope resourceQualifiers.Scope
scopeQueryParam := r.URL.Query().Get("scope")
if scopeQueryParam != "" {
if err := json.Unmarshal([]byte(scopeQueryParam), &scope); err != nil {
Expand Down
6 changes: 3 additions & 3 deletions pkg/app/AppService.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ import (
"github.com/devtron-labs/devtron/pkg/k8s"
repository3 "github.com/devtron-labs/devtron/pkg/pipeline/history/repository"
repository5 "github.com/devtron-labs/devtron/pkg/pipeline/repository"
"github.com/devtron-labs/devtron/pkg/resourceQualifiers"
"github.com/devtron-labs/devtron/pkg/variables"
models2 "github.com/devtron-labs/devtron/pkg/variables/models"
"github.com/devtron-labs/devtron/pkg/variables/parsers"
_ "github.com/devtron-labs/devtron/pkg/variables/repository"
repository6 "github.com/devtron-labs/devtron/pkg/variables/repository"
Expand Down Expand Up @@ -1251,7 +1251,7 @@ func (impl *AppServiceImpl) GetDeploymentStrategyByTriggerType(overrideRequest *
func (impl *AppServiceImpl) GetEnvOverrideByTriggerType(overrideRequest *bean.ValuesOverrideRequest, triggeredAt time.Time, ctx context.Context) (*chartConfig.EnvConfigOverride, error) {

//VARIABLE different cases for variable resolution
scope := models2.Scope{
scope := resourceQualifiers.Scope{
AppId: overrideRequest.AppId,
EnvId: overrideRequest.EnvId,
ClusterId: overrideRequest.ClusterId,
Expand Down Expand Up @@ -1438,7 +1438,7 @@ func (impl *AppServiceImpl) getResolvedTemplateWithSnapshot(deploymentTemplateHi
return resolvedTemplate, variableSnapshotMap, nil
}

func (impl *AppServiceImpl) extractVariablesAndResolveTemplate(scope models2.Scope, template string, entity repository6.Entity) (string, map[string]string, error) {
func (impl *AppServiceImpl) extractVariablesAndResolveTemplate(scope resourceQualifiers.Scope, template string, entity repository6.Entity) (string, map[string]string, error) {

entityToVariables, err := impl.variableEntityMappingService.GetAllMappingsForEntities([]repository6.Entity{entity})
if err != nil {
Expand Down
8 changes: 4 additions & 4 deletions pkg/chart/ChartService.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import (
"context"
"encoding/json"
"fmt"
"github.com/devtron-labs/devtron/pkg/resourceQualifiers"
"github.com/devtron-labs/devtron/pkg/variables"
models2 "github.com/devtron-labs/devtron/pkg/variables/models"
"github.com/devtron-labs/devtron/pkg/variables/parsers"
repository5 "github.com/devtron-labs/devtron/pkg/variables/repository"

Expand Down Expand Up @@ -81,7 +81,7 @@ type ChartService interface {
FindPreviousChartByAppId(appId int) (chartTemplate *TemplateRequest, err error)
UpgradeForApp(appId int, chartRefId int, newAppOverride map[string]interface{}, userId int32, ctx context.Context) (bool, error)
AppMetricsEnableDisable(appMetricRequest AppMetricEnableDisableRequest) (*AppMetricEnableDisableRequest, error)
DeploymentTemplateValidate(ctx context.Context, templatejson interface{}, chartRefId int, scope models2.Scope) (bool, error)
DeploymentTemplateValidate(ctx context.Context, templatejson interface{}, chartRefId int, scope resourceQualifiers.Scope) (bool, error)
JsonSchemaExtractFromFile(chartRefId int) (map[string]interface{}, string, error)
GetSchemaAndReadmeForTemplateByChartRefId(chartRefId int) (schema []byte, readme []byte, err error)
ExtractChartIfMissing(chartData []byte, refChartDir string, location string) (*ChartDataInfo, error)
Expand Down Expand Up @@ -1330,7 +1330,7 @@ const cpuPattern = `"50m" or "0.05"`
const cpu = "cpu"
const memory = "memory"

func (impl ChartServiceImpl) extractVariablesAndResolveTemplate(scope models2.Scope, template string) (string, error) {
func (impl ChartServiceImpl) extractVariablesAndResolveTemplate(scope resourceQualifiers.Scope, template string) (string, error) {

usedVariables, err := impl.variableTemplateParser.ExtractVariables(template)
if err != nil {
Expand All @@ -1356,7 +1356,7 @@ func (impl ChartServiceImpl) extractVariablesAndResolveTemplate(scope models2.Sc
return resolvedTemplate, nil
}

func (impl ChartServiceImpl) DeploymentTemplateValidate(ctx context.Context, template interface{}, chartRefId int, scope models2.Scope) (bool, error) {
func (impl ChartServiceImpl) DeploymentTemplateValidate(ctx context.Context, template interface{}, chartRefId int, scope resourceQualifiers.Scope) (bool, error) {
_, span := otel.Tracer("orchestrator").Start(ctx, "JsonSchemaExtractFromFile")
schemajson, version, err := impl.JsonSchemaExtractFromFile(chartRefId)
span.End()
Expand Down
60 changes: 60 additions & 0 deletions pkg/devtronResource/DevtronResourceService.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package devtronResource

import (
"github.com/devtron-labs/devtron/pkg/devtronResource/bean"
"github.com/devtron-labs/devtron/pkg/devtronResource/repository"
"go.uber.org/zap"
)

type DevtronResourceService interface {
GetAllSearchableKeyNameIdMap() map[bean.DevtronResourceSearchableKeyName]int
GetAllSearchableKeyIdNameMap() map[int]bean.DevtronResourceSearchableKeyName
}

type DevtronResourceSearchableKeyServiceImpl struct {
logger *zap.SugaredLogger
devtronResourceSearchableKeyRepository repository.DevtronResourceSearchableKeyRepository
searchableKeyNameIdMap map[bean.DevtronResourceSearchableKeyName]int
searchableKeyIdNameMap map[int]bean.DevtronResourceSearchableKeyName
}

func NewDevtronResourceSearchableKeyServiceImpl(logger *zap.SugaredLogger,
devtronResourceSearchableKeyRepository repository.DevtronResourceSearchableKeyRepository) (*DevtronResourceSearchableKeyServiceImpl, error) {
impl := &DevtronResourceSearchableKeyServiceImpl{
logger: logger,
devtronResourceSearchableKeyRepository: devtronResourceSearchableKeyRepository,
}
searchableKeyNameIdMap, searchableKeyIdNameMap, err := impl.getAllSearchableKeyNameIdAndIdNameMaps()
if err != nil {
impl.logger.Errorw("error, GetAllSearchableKeyNameIdAndIdNameMaps", "err", err)
return nil, err
}
impl.searchableKeyNameIdMap = searchableKeyNameIdMap
impl.searchableKeyIdNameMap = searchableKeyIdNameMap
return impl, nil
}

func (impl *DevtronResourceSearchableKeyServiceImpl) getAllSearchableKeyNameIdAndIdNameMaps() (map[bean.DevtronResourceSearchableKeyName]int,
map[int]bean.DevtronResourceSearchableKeyName, error) {
//getting searchable keys from db
searchableKeys, err := impl.devtronResourceSearchableKeyRepository.GetAll()
if err != nil {
impl.logger.Errorw("error in getting all attributes from db", "err", err)
return nil, nil, err
}
searchableKeyNameIdMap := make(map[bean.DevtronResourceSearchableKeyName]int)
searchableKeyIdNameMap := make(map[int]bean.DevtronResourceSearchableKeyName)
for _, searchableKey := range searchableKeys {
searchableKeyNameIdMap[searchableKey.Name] = searchableKey.Id
searchableKeyIdNameMap[searchableKey.Id] = searchableKey.Name
}
return searchableKeyNameIdMap, searchableKeyIdNameMap, nil
}

func (impl *DevtronResourceSearchableKeyServiceImpl) GetAllSearchableKeyNameIdMap() map[bean.DevtronResourceSearchableKeyName]int {
return impl.searchableKeyNameIdMap
}

func (impl *DevtronResourceSearchableKeyServiceImpl) GetAllSearchableKeyIdNameMap() map[int]bean.DevtronResourceSearchableKeyName {
return impl.searchableKeyIdNameMap
}
70 changes: 70 additions & 0 deletions pkg/devtronResource/bean/bean.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package bean

type DevtronResourceSearchableKeyName string

const (
DEVTRON_RESOURCE_SEARCHABLE_KEY_PROJECT_APP_NAME DevtronResourceSearchableKeyName = "PROJECT_APP_NAME"
DEVTRON_RESOURCE_SEARCHABLE_KEY_CLUSTER_ENV_NAME DevtronResourceSearchableKeyName = "CLUSTER_ENV_NAME"
DEVTRON_RESOURCE_SEARCHABLE_KEY_IS_ALL_PRODUCTION_ENV DevtronResourceSearchableKeyName = "IS_ALL_PRODUCTION_ENV"
DEVTRON_RESOURCE_SEARCHABLE_KEY_CI_PIPELINE_BRANCH DevtronResourceSearchableKeyName = "CI_PIPELINE_BRANCH"
DEVTRON_RESOURCE_SEARCHABLE_KEY_CI_PIPELINE_TRIGGER_ACTION DevtronResourceSearchableKeyName = "CI_PIPELINE_TRIGGER_ACTION"
DEVTRON_RESOURCE_SEARCHABLE_KEY_APP_ID DevtronResourceSearchableKeyName = "APP_ID"
DEVTRON_RESOURCE_SEARCHABLE_KEY_ENV_ID DevtronResourceSearchableKeyName = "ENV_ID"
DEVTRON_RESOURCE_SEARCHABLE_KEY_CLUSTER_ID DevtronResourceSearchableKeyName = "CLUSTER_ID"
)

func (n DevtronResourceSearchableKeyName) ToString() string {
return string(n)
}

type DevtronResourceName string

const (
DEVTRON_RESOURCE_PROJECT DevtronResourceName = "PROJECT"
DEVTRON_RESOURCE_APP DevtronResourceName = "APP"
DEVTRON_RESOURCE_CLUSTER DevtronResourceName = "CLUSTER"
DEVTRON_RESOURCE_ENVIRONMENT DevtronResourceName = "ENVIRONMENT"
DEVTRON_RESOURCE_CI_PIPELINE DevtronResourceName = "CI_PIPELINE"
DEVTRON_RESOURCE_CD_PIPELINE DevtronResourceName = "CD_PIPELINE"
)

func (n DevtronResourceName) ToString() string {
return string(n)
}

type DevtronResourceAttributeName string

const (
DEVTRON_RESOURCE_ATTRIBUTE_APP_NAME DevtronResourceAttributeName = "APP_NAME"
DEVTRON_RESOURCE_ATTRIBUTE_PROJECT_NAME DevtronResourceAttributeName = "PROJECT_NAME"
DEVTRON_RESOURCE_ATTRIBUTE_CLUSTER_NAME DevtronResourceAttributeName = "CLUSTER_NAME"
DEVTRON_RESOURCE_ATTRIBUTE_ENVIRONMENT_NAME DevtronResourceAttributeName = "ENVIRONMENT_NAME"
DEVTRON_RESOURCE_ATTRIBUTE_ENVIRONMENT_IS_PRODUCTION DevtronResourceAttributeName = "IS_PRODUCTION_ENVIRONMENT"
DEVTRON_RESOURCE_ATTRIBUTE_CI_PIPELINE_BRANCH_VALUE DevtronResourceAttributeName = "CI_PIPELINE_BRANCH_VALUE"
DEVTRON_RESOURCE_ATTRIBUTE_CI_PIPELINE_STAGE DevtronResourceAttributeName = "CI_PIPELINE_STAGE"
)

func (n DevtronResourceAttributeName) ToString() string {
return string(n)
}

type DevtronResourceAttributeType string

const (
DEVTRON_RESOURCE_ATTRIBUTE_TYPE_PLUGIN DevtronResourceAttributeType = "PLUGIN"
)

func (n DevtronResourceAttributeType) ToString() string {
return string(n)
}

type ValueType string

const (
VALUE_TYPE_REGEX ValueType = "REGEX"
VALUE_TYPE_FIXED ValueType = "FIXED"
)

func (v ValueType) ToString() string {
return string(v)
}
61 changes: 61 additions & 0 deletions pkg/devtronResource/mocks/DevtronResourceService.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading