diff --git a/agents/fsagent.go b/agents/fsagent.go index 61255962a..986d2e35b 100644 --- a/agents/fsagent.go +++ b/agents/fsagent.go @@ -173,7 +173,7 @@ func (sm *FSSessionManager) onChannelPark(fsev FSEvent, connId string) { } } if authArgs.GetSuppliers { - fsArray := SliceAsFsArray(authReply.Suppliers.SupplierIDs()) + fsArray := SliceAsFsArray(authReply.Suppliers) if _, err := sm.conns[connId].SendApiCmd(fmt.Sprintf("uuid_setvar %s %s %s\n\n", fsev.GetUUID(), utils.CGR_SUPPLIERS, fsArray)); err != nil { utils.Logger.Info(fmt.Sprintf("<%s> error setting suppliers: %s", utils.FreeSWITCHAgent, err.Error())) diff --git a/apier/v1/sessionsv1_it_test.go b/apier/v1/sessionsv1_it_test.go index ba03b7023..7cc49565b 100644 --- a/apier/v1/sessionsv1_it_test.go +++ b/apier/v1/sessionsv1_it_test.go @@ -141,24 +141,7 @@ func TestSSv1ItAuth(t *testing.T) { if *rply.ResourceAllocation == "" { t.Errorf("Unexpected ResourceAllocation: %s", *rply.ResourceAllocation) } - eSplrs := &engine.SortedSuppliers{ - ProfileID: "SPL_ACNT_1001", - Sorting: utils.MetaWeight, - SortedSuppliers: []*engine.SortedSupplier{ - &engine.SortedSupplier{ - SupplierID: "supplier1", - SortingData: map[string]interface{}{ - "Weight": 20.0, - }, - }, - &engine.SortedSupplier{ - SupplierID: "supplier2", - SortingData: map[string]interface{}{ - "Weight": 10.0, - }, - }, - }, - } + eSplrs := []string{"supplier1", "supplier2"} if !reflect.DeepEqual(eSplrs, rply.Suppliers) { t.Errorf("expecting: %+v, received: %+v", utils.ToJSON(eSplrs), utils.ToJSON(rply.Suppliers)) } diff --git a/data/tutorials/fs_evsock/cgrates/etc/cgrates/cgrates.json b/data/tutorials/fs_evsock/cgrates/etc/cgrates/cgrates.json index 0270e9418..9a8a49cd5 100644 --- a/data/tutorials/fs_evsock/cgrates/etc/cgrates/cgrates.json +++ b/data/tutorials/fs_evsock/cgrates/etc/cgrates/cgrates.json @@ -69,9 +69,6 @@ "freeswitch_agent": { "enabled": true, - "event_socket_conns":[ - {"address": "127.0.0.1:8021", "password": "ClueCon", "reconnects": 5} - ], }, diff --git a/engine/libsuppliers.go b/engine/libsuppliers.go index 335c0b30e..996d1a2b6 100644 --- a/engine/libsuppliers.go +++ b/engine/libsuppliers.go @@ -67,6 +67,19 @@ func (sSpls *SortedSuppliers) SortCost() { }) } +// Digest returns list of supplierIDs + parameters for easier outside access +func (sSpls *SortedSuppliers) SuppliersDigest() (sDigest []string) { + sDigest = make([]string, len(sSpls.SortedSuppliers)) + for i, sSpl := range sSpls.SortedSuppliers { + sDigest[i] = sSpl.SupplierID + if sSpl.SupplierParameters != "" { + sDigest[i] += utils.InInFieldSep + sSpl.SupplierParameters + } + + } + return +} + // SuppliersSorter is the interface which needs to be implemented by supplier sorters type SuppliersSorter interface { SortSuppliers(string, []*Supplier, *utils.CGREvent) (*SortedSuppliers, error) diff --git a/sessionmanager/smgeneric.go b/sessionmanager/smgeneric.go index d330bf225..7d371920c 100644 --- a/sessionmanager/smgeneric.go +++ b/sessionmanager/smgeneric.go @@ -1299,7 +1299,7 @@ type V1AuthorizeReply struct { Attributes *engine.AttrSProcessEventReply ResourceAllocation *string MaxUsage *time.Duration - Suppliers *engine.SortedSuppliers + Suppliers []string } // BiRPCV1Authorize performs authorization for CGREvent based on specific components @@ -1364,9 +1364,7 @@ func (smg *SMGeneric) BiRPCv1AuthorizeEvent(clnt rpcclient.RpcClientConnection, sArgs, &splsReply); err != nil { return utils.NewErrSupplierS(err) } - if splsReply.SortedSuppliers != nil { - authReply.Suppliers = &splsReply - } + authReply.Suppliers = splsReply.SuppliersDigest() } return nil }