AgentRequest selectors returning ErrNotFound in case of not matching

This commit is contained in:
DanB
2018-12-13 20:54:56 +03:00
committed by Rajan
parent dd39b4a451
commit 676ad1c102
4 changed files with 14 additions and 3 deletions

View File

@@ -127,6 +127,13 @@ func (ar *AgentRequest) AsNavigableMap(tplFlds []*config.FCTemplate) (
}
out, err := ar.ParseField(tplFld)
if err != nil {
if err == utils.ErrNotFound {
if !tplFld.Mandatory {
err = nil
continue
}
err = utils.ErrPrefixNotFound(tplFld.Tag)
}
return nil, err
}
var valSet []*config.NMItem

View File

@@ -209,7 +209,7 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.DARequestProcessor,
utils.MetaDryRun, utils.MetaAuth,
utils.MetaInitiate, utils.MetaUpdate,
utils.MetaTerminate, utils.MetaEvent,
utils.MetaCDRs} {
utils.MetaCDRs, utils.META_NONE} {
if reqProcessor.Flags.HasKey(typ) { // request type is identified through flags
reqType = typ
break
@@ -223,6 +223,7 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.DARequestProcessor,
switch reqType {
default:
return false, fmt.Errorf("unknown request type: <%s>", reqType)
case utils.META_NONE: // do nothing on CGRateS side
case utils.MetaDryRun:
utils.Logger.Info(
fmt.Sprintf("<%s> DRY_RUN, processorID: %s, CGREvent: %s",

View File

@@ -358,8 +358,7 @@ func (dP *diameterDP) FieldAsInterface(fldPath []string) (data interface{}, err
if err != nil {
return nil, err
} else if len(fltrAVPs) == 0 || len(fltrAVPs) != len(avps) {
return nil, fmt.Errorf("%s for selector %s",
utils.ErrFilterNotPassingNoCaps.Error(), slctr.AttrName())
return nil, utils.ErrNotFound
}
for k, fAVP := range fltrAVPs {
if dataAVP, err := diamAVPAsIface(fAVP); err != nil {

View File

@@ -165,3 +165,7 @@ func ErrHasPrefix(err error, prfx string) (has bool) {
func ErrEnvNotFound(key string) error {
return errors.New("ENV_VAR_NOT_FOUND:" + key)
}
func ErrPrefixNotFound(reason string) error {
return fmt.Errorf("%s:%s", ErrNotFound.Error(), reason)
}