From 5c5adb5b9ae0abe4fb05aa2ce4d18ffedb4f9091 Mon Sep 17 00:00:00 2001 From: Gerhard Jungwirth Date: Fri, 1 Jul 2016 14:13:29 +0200 Subject: [PATCH] MT#19795 rtc change apiclient login realm plus more verbose debug info Change-Id: I2452274b0a05d4efdf6ddc6089d1c953180e22c7 --- lib/NGCP/Panel/Controller/API/Resellers.pm | 7 ++-- lib/NGCP/Panel/Controller/API/RtcSessions.pm | 8 +++-- lib/NGCP/Panel/Role/API/Resellers.pm | 7 ++-- lib/NGCP/Panel/Role/API/RtcNetworks.pm | 10 ++++-- lib/NGCP/Panel/Role/API/RtcSessions.pm | 5 ++- lib/NGCP/Panel/Utils/ComxAPIClient.pm | 9 +++-- lib/NGCP/Panel/Utils/Rtc.pm | 38 ++++++++++---------- 7 files changed, 53 insertions(+), 31 deletions(-) diff --git a/lib/NGCP/Panel/Controller/API/Resellers.pm b/lib/NGCP/Panel/Controller/API/Resellers.pm index ba1cb901f5..000d5aa4e0 100644 --- a/lib/NGCP/Panel/Controller/API/Resellers.pm +++ b/lib/NGCP/Panel/Controller/API/Resellers.pm @@ -199,8 +199,11 @@ sub POST :Allow { config => $c->config, reseller_item => $reseller, err_code => sub { - $c->log->warn(shift); return; - }); + my ($msg, $debug) = @_; + $c->log->debug($debug) if $debug; + $c->log->warn($msg); + return; + }); } catch($e) { $c->log->error("failed to create reseller: $e"); # TODO: user, message, trace, ... $self->error($c, HTTP_INTERNAL_SERVER_ERROR, "Failed to create reseller."); diff --git a/lib/NGCP/Panel/Controller/API/RtcSessions.pm b/lib/NGCP/Panel/Controller/API/RtcSessions.pm index 8d0496cc99..de40cd6b02 100644 --- a/lib/NGCP/Panel/Controller/API/RtcSessions.pm +++ b/lib/NGCP/Panel/Controller/API/RtcSessions.pm @@ -171,9 +171,11 @@ sub POST :Allow { subscriber_item => $subscriber_item, resource => $resource, err_code => sub { - my ($err) = @_; - $self->error($c, HTTP_UNPROCESSABLE_ENTITY, $err); - }); + my ($msg, $debug) = @_; + $c->log->debug($debug) if $debug; + $self->error($c, HTTP_UNPROCESSABLE_ENTITY, $msg); + return; + }); last unless $session_item; $guard->commit; diff --git a/lib/NGCP/Panel/Role/API/Resellers.pm b/lib/NGCP/Panel/Role/API/Resellers.pm index 8e5c6dc2d4..200fa82442 100644 --- a/lib/NGCP/Panel/Role/API/Resellers.pm +++ b/lib/NGCP/Panel/Role/API/Resellers.pm @@ -137,8 +137,11 @@ sub update_reseller { config => $c->config, reseller_item => $reseller, err_code => sub { - $c->log->warn(shift); return; - }); + my ($msg, $debug) = @_; + $c->log->debug($debug) if $debug; + $c->log->warn($msg); + return; + }); # TODO: should we lock reseller admin logins if reseller gets terminated? # or terminate all his customers and delete non-billing data? diff --git a/lib/NGCP/Panel/Role/API/RtcNetworks.pm b/lib/NGCP/Panel/Role/API/RtcNetworks.pm index faa4547e1c..80c4502ee9 100644 --- a/lib/NGCP/Panel/Role/API/RtcNetworks.pm +++ b/lib/NGCP/Panel/Role/API/RtcNetworks.pm @@ -32,7 +32,10 @@ sub hal_from_item { config => $c->config, include_id => $include_id, err_code => sub { - $c->log->warn(shift); return; + my ($msg, $debug) = @_; + $c->log->debug($debug) if $debug; + $c->log->warn($msg); + return; }); } else { } @@ -117,7 +120,10 @@ sub update_item { config => $c->config, reseller_item => $reseller, err_code => sub { - $c->log->warn(shift); return; + my ($msg, $debug) = @_; + $c->log->debug($debug) if $debug; + $c->log->warn($msg); + return; }); try { diff --git a/lib/NGCP/Panel/Role/API/RtcSessions.pm b/lib/NGCP/Panel/Role/API/RtcSessions.pm index 03c91f373b..bae475ab6c 100644 --- a/lib/NGCP/Panel/Role/API/RtcSessions.pm +++ b/lib/NGCP/Panel/Role/API/RtcSessions.pm @@ -33,7 +33,10 @@ sub hal_from_item { config => $c->config, item => $item, err_code => sub { - $c->log->warn(shift); return; + my ($msg, $debug) = @_; + $c->log->debug($debug) if $debug; + $c->log->warn($msg); + return; }); if ($rtc_session) { $resource->{rtc_browser_token} = $rtc_session->{data}{token}; diff --git a/lib/NGCP/Panel/Utils/ComxAPIClient.pm b/lib/NGCP/Panel/Utils/ComxAPIClient.pm index 9977c5ba66..a66bf531b4 100644 --- a/lib/NGCP/Panel/Utils/ComxAPIClient.pm +++ b/lib/NGCP/Panel/Utils/ComxAPIClient.pm @@ -31,7 +31,7 @@ sub login { my ( $self, $username, $password, $netloc ) = @_; my $ua = $self->ua; $netloc //= $self->host =~ s!^https?://(.*:[0-9]*)(/.*$|$)!$1!r; - $ua->credentials($netloc, "ComX", $username, $password); + $ua->credentials($netloc, "rtcengine", $username, $password); my $resp = $ua->get($self->host . '/users'); $self->login_status( $self->_create_response($resp) ); return; @@ -248,7 +248,7 @@ sub _resolve_collection_fast { 'expand=true'; my $res = $ua->get($self->host . $rel_url); my @result; - return {code => $res->code, response => $res} unless $res->code == 200; + return $self->_create_response($res) unless $res->code == 200; my $collection = JSON::decode_json($res->content); return {code => $res->code, response => $res, error_detail => 'could not decode_json'} unless $collection; @@ -278,13 +278,18 @@ sub _strip_host { sub _create_response { my ($self, $res) = @_; my $data; + my $debug; if ($res->is_success && $res->content) { $data = decode_json($res->content); + } else { + $debug = "RTC response: " . $res->decoded_content + . ", RTC request: " . $res->request->as_string; } return { code => $res->code, data => $data, response => $res, + $debug ? (debug => $debug) : (), }; } diff --git a/lib/NGCP/Panel/Utils/Rtc.pm b/lib/NGCP/Panel/Utils/Rtc.pm index 2cd8f0e6a1..6e87653176 100644 --- a/lib/NGCP/Panel/Utils/Rtc.pm +++ b/lib/NGCP/Panel/Utils/Rtc.pm @@ -87,7 +87,7 @@ sub _create_rtc_user { $config->{rtc}{host}.':'.$config->{rtc}{port}); if ($comx->login_status->{code} != 200) { return unless &{$err_code}( - 'Rtc Login failed. Check config settings.'); + 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); } my $user = $comx->create_user( $reseller_name . '@ngcp.com', @@ -95,7 +95,7 @@ sub _create_rtc_user { ); if ($user->{code} != 201) { return unless &{$err_code}( - 'Creating rtc user failed. Error code: ' . $user->{code}); + 'Creating rtc user failed. Error code: ' . $user->{code}, $user->{debug}); } # 3. create relation in our db @@ -111,7 +111,7 @@ sub _create_rtc_user { ); if ($app->{code} != 201) { return unless &{$err_code}( - 'Creating rtc app failed. Error code: ' . $app->{code}); + 'Creating rtc app failed. Error code: ' . $app->{code}, $app->{debug}); } # 5. create related networks @@ -130,7 +130,7 @@ sub _create_rtc_user { ); if ($n_response->{code} != 201) { return unless &{$err_code}( - 'Creating rtc network failed. Error code: ' . $n_response->{code}); + 'Creating rtc network failed. Error code: ' . $n_response->{code}, $n_response->{debug}); } } return; @@ -152,7 +152,7 @@ sub _delete_rtc_user { $config->{rtc}{host}.':'.$config->{rtc}{port}); if ($comx->login_status->{code} != 200) { return unless &{$err_code}( - 'Rtc Login failed. Check config settings.'); + 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); } my $rtc_user = $reseller_item->rtc_user; @@ -168,7 +168,7 @@ sub _delete_rtc_user { $rtc_user->delete; } else { return unless &{$err_code}( - 'Deleting rtc user failed. Error code: ' . $delete_resp->{code}); + 'Deleting rtc user failed. Error code: ' . $delete_resp->{code}, $delete_resp->{debug}); } return; } @@ -240,7 +240,7 @@ sub modify_rtc_apps { $config->{rtc}{host}.':'.$config->{rtc}{port}); if ($comx->login_status->{code} != 200) { return unless &{$err_code}( - 'Rtc Login failed. Check config settings.'); + 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); } my (@deleted, @new); @@ -306,14 +306,14 @@ sub get_rtc_networks { $config->{rtc}{host}.':'.$config->{rtc}{port}); if ($comx->login_status->{code} != 200) { return unless &{$err_code}( - 'Rtc Login failed. Check config settings.'); + 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); } my $networks_resp = $comx->get_networks_by_user_id($rtc_user_id); my $networks = $networks_resp->{data}; unless (defined $networks && 'ARRAY' eq ref $networks && @{ $networks }) { return unless &{$err_code}( - 'Fetching networks failed. Code: ' . $networks_resp->{code}); + 'Fetching networks failed. Code: ' . $networks_resp->{code}, $networks_resp->{debug}); } my $res = [map {{ @@ -382,7 +382,7 @@ sub modify_rtc_networks { my $n_response = $comx->delete_network($nw->{id}); if ($n_response->{code} != 200) { return unless &{$err_code}( - 'Deleting rtc network failed. Error code: ' . $n_response->{code}); + 'Deleting rtc network failed. Error code: ' . $n_response->{code}, $n_response->{debug}); } } for my $nw (@new) { @@ -394,7 +394,7 @@ sub modify_rtc_networks { ); if ($n_response->{code} != 201) { return unless &{$err_code}( - 'Creating rtc network failed. Error code: ' . $n_response->{code}); + 'Creating rtc network failed. Error code: ' . $n_response->{code}, $n_response->{debug}); } } return; @@ -504,7 +504,7 @@ sub _create_subscriber_rtc { $config->{rtc}{host}.':'.$config->{rtc}{port}); if ($comx->login_status->{code} != 200) { return unless &{$err_code}( - 'Rtc Login failed. Check config settings.'); + 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); } my $comx_apps = $comx->get_apps_by_user_id($rtc_user->rtc_user_id); @@ -522,7 +522,7 @@ sub _create_subscriber_rtc { ); if ($session->{code} != 201) { return unless &{$err_code}( - 'Creating rtc session failed. Error code: ' . $session->{code}); + 'Creating rtc session failed. Error code: ' . $session->{code}, $session->{debug}); } # # 3. create relation in our db @@ -573,7 +573,7 @@ sub _delete_subscriber_rtc { # $config->{rtc}{host}.':'.$config->{rtc}{port}); # if ($comx->login_status->{code} != 200) { # return unless &{$err_code}( - # 'Rtc Login failed. Check config settings.'); + # 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); # } # my $rtc_user = $reseller_item->rtc_user; @@ -626,7 +626,7 @@ sub create_rtc_session { $config->{rtc}{host}.':'.$config->{rtc}{port}); if ($comx->login_status->{code} != 200) { return unless &{$err_code}( - 'Rtc Login failed. Check config settings.'); + 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); } my $comx_apps = $comx->get_apps_by_user_id($rtc_user->rtc_user_id); @@ -653,7 +653,7 @@ sub create_rtc_session { ); if ($session->{code} != 201) { return unless &{$err_code}( - 'Creating rtc session failed. Error code: ' . $session->{code}); + 'Creating rtc session failed. Error code: ' . $session->{code}, $session->{debug}); } for my $n (@{ $comx_networks->{data} }) { my $identifier; @@ -674,7 +674,7 @@ sub create_rtc_session { ); if ($account->{code} != 201) { return unless &{$err_code}( - "Creating rtc account ($n->{tag}) failed. Error code: " . $account->{code}); + "Creating rtc account ($n->{tag}) failed. Error code: " . $account->{code}, $account->{debug}); } } @@ -704,13 +704,13 @@ sub get_rtc_session { $config->{rtc}{host}.':'.$config->{rtc}{port}); if ($comx->login_status->{code} != 200) { return unless &{$err_code}( - 'Rtc Login failed. Check config settings.'); + 'Rtc Login failed. Check config settings. Status code: ' . $comx->login_status->{code}, $comx->login_status->{debug}); } my $session = $comx->get_session($item->rtc_session_id); if ($session->{code} != 200) { return unless &{$err_code}( - "Couldn't find session. Error code: " . $session->{code}); + "Couldn't find session. Error code: " . $session->{code}, $session->{debug}); } return $session; }