Responder ignoring ErrNotFound from AttributeS

This commit is contained in:
DanB
2018-01-10 19:29:14 +01:00
parent e546656902
commit 84187c9896
5 changed files with 94 additions and 74 deletions

View File

@@ -428,14 +428,15 @@ func (fsev FSEvent) AsCallDescriptor() (*engine.CallDescriptor, error) {
return lcrReq.AsCallDescriptor(config.CgrConfig().DefaultTimezone)
}
func (fsev FSEvent) AsMapStringIface() (map[string]interface{}, error) {
return nil, utils.ErrNotImplemented
}
// V1AuthorizeArgs returns the arguments used in SMGv1.Authorize
func (fsev FSEvent) V1AuthorizeArgs() (args *sessionmanager.V1AuthorizeArgs) {
args = &sessionmanager.V1AuthorizeArgs{ // defaults
GetMaxUsage: true,
CGREvent: utils.CGREvent{
Tenant: fsev.GetTenant(utils.META_DEFAULT),
ID: utils.UUIDSha1Prefix(),
Event: fsev.AsMapStringInterface(config.CgrConfig().DefaultTimezone),
},
}
subsystems, has := fsev[VarCGRSubsystems]
if !has {
@@ -460,6 +461,11 @@ func (fsev FSEvent) V1AuthorizeArgs() (args *sessionmanager.V1AuthorizeArgs) {
func (fsev FSEvent) V1InitSessionArgs() (args *sessionmanager.V1InitSessionArgs) {
args = &sessionmanager.V1InitSessionArgs{ // defaults
InitSession: true,
CGREvent: utils.CGREvent{
Tenant: fsev.GetTenant(utils.META_DEFAULT),
ID: utils.UUIDSha1Prefix(),
Event: fsev.AsMapStringInterface(config.CgrConfig().DefaultTimezone),
},
}
subsystems, has := fsev[VarCGRSubsystems]
if !has {
@@ -481,6 +487,11 @@ func (fsev FSEvent) V1InitSessionArgs() (args *sessionmanager.V1InitSessionArgs)
func (fsev FSEvent) V1UpdateSessionArgs() (args *sessionmanager.V1UpdateSessionArgs) {
args = &sessionmanager.V1UpdateSessionArgs{ // defaults
UpdateSession: true,
CGREvent: utils.CGREvent{
Tenant: fsev.GetTenant(utils.META_DEFAULT),
ID: utils.UUIDSha1Prefix(),
Event: fsev.AsMapStringInterface(config.CgrConfig().DefaultTimezone),
},
}
subsystems, has := fsev[VarCGRSubsystems]
if !has {
@@ -499,6 +510,11 @@ func (fsev FSEvent) V1UpdateSessionArgs() (args *sessionmanager.V1UpdateSessionA
func (fsev FSEvent) V1TerminateSessionArgs() (args *sessionmanager.V1TerminateSessionArgs) {
args = &sessionmanager.V1TerminateSessionArgs{ // defaults
TerminateSession: true,
CGREvent: utils.CGREvent{
Tenant: fsev.GetTenant(utils.META_DEFAULT),
ID: utils.UUIDSha1Prefix(),
Event: fsev.AsMapStringInterface(config.CgrConfig().DefaultTimezone),
},
}
subsystems, has := fsev[VarCGRSubsystems]
if !has {

View File

@@ -170,7 +170,8 @@ func TestSSv1ItAuth(t *testing.T) {
ID: "TestSSv1ItAuth",
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
"Account": "1001", "Destination": "1002",
"Account": "1001",
"Destination": "1002",
"OfficeGroup": "Marketing",
"OriginID": "TestSSv1It1",
"RequestType": "*prepaid",
@@ -224,7 +225,8 @@ func TestSSv1ItInitiateSession(t *testing.T) {
ID: "TestSSv1ItInitiateSession",
Context: utils.StringPointer(utils.MetaSessionS),
Event: map[string]interface{}{
"Account": "1001", "Destination": "1002",
"Account": "1001",
"Destination": "1002",
"OfficeGroup": "Marketing",
"OriginID": "TestSSv1It1",
"RequestType": "*prepaid",

View File

@@ -442,7 +442,7 @@ func (self *CGRConfig) checkConfigSanity() error {
if self.fsAgentCfg.Enabled {
for _, connCfg := range self.fsAgentCfg.SessionSConns {
if connCfg.Address != utils.MetaInternal {
return errors.New("Only <*internal> connectivity allowed in in SMFreeSWITCH towards SMG for now")
return errors.New("Only <*internal> connectivity allowed in in FreeSWITCHAgent towards SessionS for now")
}
if connCfg.Address == utils.MetaInternal &&
!self.sessionSCfg.Enabled {

View File

@@ -49,19 +49,19 @@
"sessions": {
"enabled": true,
"rals_conns": [
{"address": "*internal"}
{"address": "127.0.0.1:2012", "transport": "*json"}
],
"cdrs_conns": [
{"address": "*internal"}
{"address": "127.0.0.1:2012", "transport": "*json"}
],
"resources_conns": [
{"address": "*internal"}
{"address": "127.0.0.1:2012", "transport": "*json"}
],
"suppliers_conns": [
{"address": "*internal"}
{"address": "127.0.0.1:2012", "transport": "*json"}
],
"attributes_conns": [
{"address": "*internal"}
{"address": "127.0.0.1:2012", "transport": "*json"}
],
"debit_interval": "10s",
},
@@ -69,9 +69,6 @@
"freeswitch_agent": {
"enabled": true,
"sessions_conns": [
{"address": "*internal"}
],
"event_socket_conns":[
{"address": "10.10.10.204:8021", "password": "ClueCon", "reconnects": 5}
],

View File

@@ -89,12 +89,14 @@ func (rs *Responder) GetCost(arg *CallDescriptor, reply *CallCost) (err error) {
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
arg.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
arg.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
// replace user profile fields
@@ -136,12 +138,14 @@ func (rs *Responder) Debit(arg *CallDescriptor, reply *CallCost) (err error) {
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
arg.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
arg.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
// replace user profile fields
@@ -187,12 +191,14 @@ func (rs *Responder) MaxDebit(arg *CallDescriptor, reply *CallCost) (err error)
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
arg.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
arg.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
// replace user profile fields
@@ -245,12 +251,14 @@ func (rs *Responder) RefundIncrements(arg *CallDescriptor, reply *float64) (err
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
arg.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
arg.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
// replace user profile fields
@@ -298,12 +306,14 @@ func (rs *Responder) RefundRounding(arg *CallDescriptor, reply *float64) (err er
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
arg.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
arg.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
// replace user profile fields
@@ -344,12 +354,14 @@ func (rs *Responder) GetMaxSessionTime(arg *CallDescriptor, reply *float64) (err
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
arg.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
arg.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = arg.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
// replace user profile fields
@@ -392,12 +404,14 @@ func (rs *Responder) GetDerivedMaxSessionTime(ev *CDR, reply *float64) (err erro
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
ev.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = ev.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
ev.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = ev.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
// replace user profile fields
@@ -511,12 +525,14 @@ func (rs *Responder) GetSessionRuns(ev *CDR, sRuns *[]*SessionRun) (err error) {
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
ev.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = ev.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
ev.AsCGREvent(), &rplyEv); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
return utils.NewErrAttributeS(err)
} else if err == nil {
if err = ev.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return utils.NewErrAttributeS(err)
}
}
}
//utils.Logger.Info(fmt.Sprintf("DC before: %+v", ev))
@@ -619,17 +635,6 @@ func (rs *Responder) GetLCR(attrs *AttrGetLcr, reply *LCRCost) (err error) {
if attrs.CallDescriptor.Subject == "" {
attrs.CallDescriptor.Subject = attrs.CallDescriptor.Account
}
if rs.AttributeS != nil {
var rplyEv AttrSProcessEventReply
if err = rs.AttributeS.Call(utils.AttributeSv1ProcessEvent,
attrs.CallDescriptor.AsCGREvent(), &rplyEv); err != nil {
return
}
if err = attrs.CallDescriptor.UpdateFromCGREvent(rplyEv.CGREvent,
rplyEv.AlteredFields); err != nil {
return
}
}
// replace user profile fields
if err := LoadUserProfile(attrs.CallDescriptor, utils.EXTRA_FIELDS); err != nil {
return err