From 9f78bad9ed9e541a3dd1f3ebeb12ddf10df66053 Mon Sep 17 00:00:00 2001 From: DanB Date: Mon, 16 May 2016 16:11:08 +0200 Subject: [PATCH] HA - failover in case of service not active --- apier/v1/smgenericv1.go | 10 ++++++++++ data/conf/samples/multiral2/cgrates.json | 16 ++++++++++++---- general_tests/rpcclient_it_test.go | 14 ++++++++++++++ glide.lock | 2 +- 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/apier/v1/smgenericv1.go b/apier/v1/smgenericv1.go index 1460bfaa2..b02362411 100644 --- a/apier/v1/smgenericv1.go +++ b/apier/v1/smgenericv1.go @@ -204,6 +204,16 @@ func (self *SMGenericV1) Call(serviceMethod string, args interface{}, reply inte return rpcclient.ErrWrongReplyType } return self.ProcessCdr(argsConverted, replyConverted) + case "SMGenericV1.ActiveSessions": + argsConverted, canConvert := args.(utils.AttrSMGGetActiveSessions) + if !canConvert { + return rpcclient.ErrWrongArgsType + } + replyConverted, canConvert := reply.(*[]*sessionmanager.ActiveSession) + if !canConvert { + return rpcclient.ErrWrongReplyType + } + return self.ActiveSessions(argsConverted, replyConverted) } return rpcclient.ErrUnsupporteServiceMethod } diff --git a/data/conf/samples/multiral2/cgrates.json b/data/conf/samples/multiral2/cgrates.json index 7bc2d4e8f..0c64ac821 100644 --- a/data/conf/samples/multiral2/cgrates.json +++ b/data/conf/samples/multiral2/cgrates.json @@ -5,13 +5,21 @@ // Starts RAL "listen": { - "rpc_json": ":12012", // RPC JSON listening address - "rpc_gob": ":12013", // RPC GOB listening address - "http": ":12080", // HTTP listening address + "rpc_json": ":12012", + "rpc_gob": ":12013", + "http": ":12080", }, "rals": { - "enabled": true, // enable Rater service: + "enabled": true, +}, + +"cdrs": { + "enabled": true, +}, + +"sm_generic": { + "enabled": true, }, } \ No newline at end of file diff --git a/general_tests/rpcclient_it_test.go b/general_tests/rpcclient_it_test.go index bc9abdec7..454c7aaf3 100644 --- a/general_tests/rpcclient_it_test.go +++ b/general_tests/rpcclient_it_test.go @@ -26,6 +26,7 @@ import ( "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" + "github.com/cgrates/cgrates/sessionmanager" "github.com/cgrates/cgrates/utils" "github.com/cgrates/rpcclient" ) @@ -181,3 +182,16 @@ func TestRPCITStatusFirstFailback(t *testing.T) { t.Errorf("Expecting: %s, received: %s", ral1ID, status[utils.InstanceID].(string)) } } + +// Make sure it executes on the first node supporting the command +func TestRPCITDirectedRPC(t *testing.T) { + if !*testIntegration { + return + } + var sessions []*sessionmanager.ActiveSession + if err := rpcPoolFirst.Call("SMGenericV1.ActiveSessions", utils.AttrSMGGetActiveSessions{}, &sessions); err != nil { + t.Error(err) // {"id":2,"result":null,"error":"rpc: can't find service SMGenericV1.ActiveSessions"} + } else if len(sessions) != 0 { + t.Errorf("Received sessions: %+v", sessions) + } +} diff --git a/glide.lock b/glide.lock index 461491fcd..678f3ae06 100644 --- a/glide.lock +++ b/glide.lock @@ -20,7 +20,7 @@ imports: - name: github.com/cgrates/osipsdagram version: 3d6beed663452471dec3ca194137a30d379d9e8f - name: github.com/cgrates/rpcclient - version: 9a6185f8a2093ce10f1a08242b0d757f24795800 + version: e307424118247fe71aee908429555bec60c48573 - name: github.com/ChrisTrenkamp/goxpath version: 4aad8d0161aae7d17df4755d2c1e86cd1fcaaab6 subpackages: