Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
2 changes: 1 addition & 1 deletion pkg/imageDigestPolicy/imageDigestPolicyService.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ func (impl ImageDigestPolicyServiceImpl) DeletePolicyForPipeline(tx *pg.Tx, pipe
UpdatedBy: userId,
}
devtronResourceSearchableKeyMap := impl.devtronResourceSearchableKey.GetAllSearchableKeyNameIdMap()
err := impl.qualifierMappingService.DeleteByIdentifierKeyValue(resourceQualifiers.ImageDigest, devtronResourceSearchableKeyMap[bean.DEVTRON_RESOURCE_SEARCHABLE_KEY_PIPELINE_ID], pipelineId, auditLog, tx)
err := impl.qualifierMappingService.DeleteByIdentifierKeyAndValue(resourceQualifiers.ImageDigest, devtronResourceSearchableKeyMap[bean.DEVTRON_RESOURCE_SEARCHABLE_KEY_PIPELINE_ID], pipelineId, 0, auditLog, tx)
if err != nil {
impl.logger.Errorw("error in deleting image digest policy for pipeline", "err", err, "pipelineId", pipelineId)
return pipelineId, err
Expand Down
83 changes: 45 additions & 38 deletions pkg/resourceQualifiers/QualifierMappingService.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,14 @@ type QualifierMappingService interface {
CreateQualifierMappings(qualifierMappings []*QualifierMapping, tx *pg.Tx) ([]*QualifierMapping, error)
GetQualifierMappings(resourceType ResourceType, scope *Scope, resourceIds []int) ([]*QualifierMapping, error)
DeleteAllQualifierMappings(resourceType ResourceType, auditLog sql.AuditLog, tx *pg.Tx) error
DeleteByIdentifierKeyValue(resourceType ResourceType, identifierKey int, identifierValue int, auditLog sql.AuditLog, tx *pg.Tx) error
DeleteByIdentifierKeyAndValue(resourceType ResourceType, identifierKey int, identifierValue int, qualifierId int, auditLog sql.AuditLog, tx *pg.Tx) error
DeleteAllByIds(qualifierMappingIds []int, userId int32, tx *pg.Tx) error
DeleteResourceMappingsForScopes(tx *pg.Tx, userId int32, resourceType ResourceType, qualifierSelector QualifierSelector, scopes []*SelectionIdentifier) error
CreateMappingsForSelections(tx *pg.Tx, userId int32, resourceMappingSelections []*ResourceMappingSelection) ([]*ResourceMappingSelection, error)
CreateMappings(tx *pg.Tx, userId int32, resourceType ResourceType, resourceIds []int, qualifierSelector QualifierSelector, selectionIdentifiers []*SelectionIdentifier) error
GetResourceMappingsForSelections(resourceType ResourceType, qualifierSelector QualifierSelector, selectionIdentifiers []*SelectionIdentifier) ([]ResourceQualifierMappings, error)
GetResourceMappingsForResources(resourceType ResourceType, resourceIds []int, qualifierSelector QualifierSelector) ([]ResourceQualifierMappings, error)
QualifierMappingServiceEnt
}

type QualifierMappingServiceImpl struct {
Expand All @@ -57,24 +58,24 @@ func NewQualifierMappingServiceImpl(logger *zap.SugaredLogger, qualifierMappingR
}, nil
}

func (impl QualifierMappingServiceImpl) CreateQualifierMappings(qualifierMappings []*QualifierMapping, tx *pg.Tx) ([]*QualifierMapping, error) {
func (impl *QualifierMappingServiceImpl) CreateQualifierMappings(qualifierMappings []*QualifierMapping, tx *pg.Tx) ([]*QualifierMapping, error) {
return impl.qualifierMappingRepository.CreateQualifierMappings(qualifierMappings, tx)
}

func (impl QualifierMappingServiceImpl) GetQualifierMappings(resourceType ResourceType, scope *Scope, resourceIds []int) ([]*QualifierMapping, error) {
func (impl *QualifierMappingServiceImpl) GetQualifierMappings(resourceType ResourceType, scope *Scope, resourceIds []int) ([]*QualifierMapping, error) {
searchableKeyNameIdMap := impl.devtronResourceSearchableKeyService.GetAllSearchableKeyNameIdMap()
return impl.qualifierMappingRepository.GetQualifierMappings(resourceType, scope, searchableKeyNameIdMap, resourceIds)
}

func (impl QualifierMappingServiceImpl) DeleteAllQualifierMappings(resourceType ResourceType, auditLog sql.AuditLog, tx *pg.Tx) error {
func (impl *QualifierMappingServiceImpl) DeleteAllQualifierMappings(resourceType ResourceType, auditLog sql.AuditLog, tx *pg.Tx) error {
return impl.qualifierMappingRepository.DeleteAllQualifierMappings(resourceType, auditLog, tx)
}

func (impl QualifierMappingServiceImpl) DeleteByIdentifierKeyValue(resourceType ResourceType, identifierKey int, identifierValue int, auditLog sql.AuditLog, tx *pg.Tx) error {
func (impl *QualifierMappingServiceImpl) DeleteByIdentifierKeyAndValue(resourceType ResourceType, identifierKey int, identifierValue int, qualifierId int, auditLog sql.AuditLog, tx *pg.Tx) error {
return impl.qualifierMappingRepository.DeleteByResourceTypeIdentifierKeyAndValue(resourceType, identifierKey, identifierValue, auditLog, tx)
}

func (impl QualifierMappingServiceImpl) DeleteAllByIds(qualifierMappingIds []int, userId int32, tx *pg.Tx) error {
func (impl *QualifierMappingServiceImpl) DeleteAllByIds(qualifierMappingIds []int, userId int32, tx *pg.Tx) error {
auditLog := sql.AuditLog{
CreatedOn: time.Now(),
CreatedBy: userId,
Expand All @@ -84,30 +85,10 @@ func (impl QualifierMappingServiceImpl) DeleteAllByIds(qualifierMappingIds []int
return impl.qualifierMappingRepository.DeleteAllByIds(qualifierMappingIds, auditLog, tx)
}

func (impl QualifierMappingServiceImpl) CreateMappingsForSelections(tx *pg.Tx, userId int32, resourceMappingSelections []*ResourceMappingSelection) ([]*ResourceMappingSelection, error) {
func (impl *QualifierMappingServiceImpl) CreateMappingsForSelections(tx *pg.Tx, userId int32, resourceMappingSelections []*ResourceMappingSelection) ([]*ResourceMappingSelection, error) {

resourceKeyMap := impl.devtronResourceSearchableKeyService.GetAllSearchableKeyNameIdMap()

parentMappings := make([]*QualifierMapping, 0)
childrenMappings := make([]*QualifierMapping, 0)
parentMappingsMap := make(map[string]*QualifierMapping)

mappingsToSelection := make(map[*QualifierMapping]*ResourceMappingSelection)
for _, selection := range resourceMappingSelections {

var parent *QualifierMapping
children := make([]*QualifierMapping, 0)
if selection.QualifierSelector.isCompound() {
parent, children = GetQualifierMappingsForCompoundQualifier(selection, resourceKeyMap, userId)
parentMappingsMap[parent.CompositeKey] = parent
} else {
intValue, stringValue := GetValuesFromSelectionIdentifier(selection.QualifierSelector, selection.SelectionIdentifier)
parent = selection.toResourceMapping(selection.QualifierSelector, resourceKeyMap, intValue, stringValue, "", userId)
}
mappingsToSelection[parent] = selection
parentMappings = append(parentMappings, parent)
childrenMappings = append(childrenMappings, children...)
}
parentMappings, childrenMappings, mappingsToSelection, parentMappingsMap := getParentAndChildrenMappingForCreation(resourceMappingSelections,
impl.devtronResourceSearchableKeyService.GetAllSearchableKeyNameIdMap(), userId)

if len(parentMappings) > 0 {
_, err := impl.qualifierMappingRepository.CreateQualifierMappings(parentMappings, tx)
Expand Down Expand Up @@ -140,7 +121,33 @@ func (impl QualifierMappingServiceImpl) CreateMappingsForSelections(tx *pg.Tx, u
return maps.Values(mappingsToSelection), nil
}

func (impl QualifierMappingServiceImpl) CreateMappings(tx *pg.Tx, userId int32, resourceType ResourceType, resourceIds []int, qualifierSelector QualifierSelector, selectionIdentifiers []*SelectionIdentifier) error {
func getParentAndChildrenMappingForCreation(resourceMappingSelections []*ResourceMappingSelection, resourceKeyMap map[bean.DevtronResourceSearchableKeyName]int,
userId int32) ([]*QualifierMapping, []*QualifierMapping, map[*QualifierMapping]*ResourceMappingSelection, map[string]*QualifierMapping) {

parentMappings := make([]*QualifierMapping, 0)
childrenMappings := make([]*QualifierMapping, 0)
parentMappingsMap := make(map[string]*QualifierMapping)

mappingsToSelection := make(map[*QualifierMapping]*ResourceMappingSelection)
for _, selection := range resourceMappingSelections {

var parent *QualifierMapping
children := make([]*QualifierMapping, 0)
if selection.QualifierSelector.isCompound() {
parent, children = GetQualifierMappingsForCompoundQualifier(selection, resourceKeyMap, userId)
parentMappingsMap[parent.CompositeKey] = parent
} else {
intValue, stringValue := GetValuesFromSelectionIdentifier(selection.QualifierSelector, selection.SelectionIdentifier)
parent = selection.toResourceMapping(selection.QualifierSelector, resourceKeyMap, intValue, stringValue, "", userId)
}
mappingsToSelection[parent] = selection
parentMappings = append(parentMappings, parent)
childrenMappings = append(childrenMappings, children...)
}
return parentMappings, childrenMappings, mappingsToSelection, parentMappingsMap
}

func (impl *QualifierMappingServiceImpl) CreateMappings(tx *pg.Tx, userId int32, resourceType ResourceType, resourceIds []int, qualifierSelector QualifierSelector, selectionIdentifiers []*SelectionIdentifier) error {
mappings := make([]*ResourceMappingSelection, 0)
for _, id := range resourceIds {
for _, selectionIdentifier := range selectionIdentifiers {
Expand All @@ -157,7 +164,7 @@ func (impl QualifierMappingServiceImpl) CreateMappings(tx *pg.Tx, userId int32,
return err
}

func (impl *QualifierMappingServiceImpl) filterAndGroupMappings(mappings []*QualifierMapping, selector QualifierSelector, composites mapset.Set) [][]*QualifierMapping {
func filterAndGroupMappings(mappings []*QualifierMapping, selector QualifierSelector, composites mapset.Set) [][]*QualifierMapping {

numQualifiers := GetNumOfChildQualifiers(selector.toQualifier())
parentIdToChildMappings := make(map[int][]*QualifierMapping)
Expand Down Expand Up @@ -197,7 +204,7 @@ func (impl *QualifierMappingServiceImpl) filterAndGroupMappings(mappings []*Qual
return groupedMappings
}

func (impl QualifierMappingServiceImpl) getAppEnvIdentifierFromGroup(group []*QualifierMapping) *SelectionIdentifier {
func (impl *QualifierMappingServiceImpl) getAppEnvIdentifierFromGroup(group []*QualifierMapping) *SelectionIdentifier {
resourceKeyToName := impl.devtronResourceSearchableKeyService.GetAllSearchableKeyIdNameMap()
var appId, envId int
var appName, envName string
Expand All @@ -213,7 +220,7 @@ func (impl QualifierMappingServiceImpl) getAppEnvIdentifierFromGroup(group []*Qu
return getSelectionIdentifierForAppEnv(appId, envId, getIdentifierNamesForAppEnv(envName, appName))
}

func (impl QualifierMappingServiceImpl) getSelectionIdentifierForAppEnvSelector(mappingGroups [][]*QualifierMapping) map[int][]*SelectionIdentifier {
func (impl *QualifierMappingServiceImpl) getSelectionIdentifierForAppEnvSelector(mappingGroups [][]*QualifierMapping) map[int][]*SelectionIdentifier {

resourceIdToIdentifier := make(map[int][]*SelectionIdentifier)
for _, group := range mappingGroups {
Expand All @@ -229,7 +236,7 @@ func (impl QualifierMappingServiceImpl) getSelectionIdentifierForAppEnvSelector(
return resourceIdToIdentifier
}

func (impl QualifierMappingServiceImpl) DeleteResourceMappingsForScopes(tx *pg.Tx, userId int32, resourceType ResourceType, qualifierSelector QualifierSelector, scopes []*SelectionIdentifier) error {
func (impl *QualifierMappingServiceImpl) DeleteResourceMappingsForScopes(tx *pg.Tx, userId int32, resourceType ResourceType, qualifierSelector QualifierSelector, scopes []*SelectionIdentifier) error {
if qualifierSelector != ApplicationEnvironmentSelector {
return fmt.Errorf("selector currently not implemented")
}
Expand All @@ -256,7 +263,7 @@ func (impl QualifierMappingServiceImpl) DeleteResourceMappingsForScopes(tx *pg.T

}

func (impl QualifierMappingServiceImpl) GetResourceMappingsForSelections(resourceType ResourceType, qualifierSelector QualifierSelector, selectionIdentifiers []*SelectionIdentifier) ([]ResourceQualifierMappings, error) {
func (impl *QualifierMappingServiceImpl) GetResourceMappingsForSelections(resourceType ResourceType, qualifierSelector QualifierSelector, selectionIdentifiers []*SelectionIdentifier) ([]ResourceQualifierMappings, error) {
if qualifierSelector != ApplicationEnvironmentSelector {
return nil, fmt.Errorf("selector currently not implemented")
}
Expand All @@ -278,7 +285,7 @@ func (impl QualifierMappingServiceImpl) GetResourceMappingsForSelections(resourc

return impl.processMappings(resourceType, mappings, qualifierSelector, getCompositeStringsAppEnvSelection(selectionIdentifiers))
}
func (impl QualifierMappingServiceImpl) GetResourceMappingsForResources(resourceType ResourceType, resourceIds []int, qualifierSelector QualifierSelector) ([]ResourceQualifierMappings, error) {
func (impl *QualifierMappingServiceImpl) GetResourceMappingsForResources(resourceType ResourceType, resourceIds []int, qualifierSelector QualifierSelector) ([]ResourceQualifierMappings, error) {
mappings, err := impl.qualifierMappingRepository.GetMappingsByResourceTypeAndIdsAndQualifierId(resourceType, resourceIds, int(qualifierSelector.toQualifier()))
if err != nil {
return nil, err
Expand All @@ -287,8 +294,8 @@ func (impl QualifierMappingServiceImpl) GetResourceMappingsForResources(resource
return impl.processMappings(resourceType, mappings, qualifierSelector, mapset.NewSet())
}

func (impl QualifierMappingServiceImpl) processMappings(resourceType ResourceType, mappings []*QualifierMapping, qualifierSelector QualifierSelector, composites mapset.Set) ([]ResourceQualifierMappings, error) {
groups := impl.filterAndGroupMappings(mappings, qualifierSelector, composites)
func (impl *QualifierMappingServiceImpl) processMappings(resourceType ResourceType, mappings []*QualifierMapping, qualifierSelector QualifierSelector, composites mapset.Set) ([]ResourceQualifierMappings, error) {
groups := filterAndGroupMappings(mappings, qualifierSelector, composites)
if qualifierSelector != ApplicationEnvironmentSelector {
return nil, fmt.Errorf("selector currently not implemented")
}
Expand Down
4 changes: 4 additions & 0 deletions pkg/resourceQualifiers/QualifierMappingService_ent.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package resourceQualifiers

type QualifierMappingServiceEnt interface {
}
Loading