Error handling for KPI Dashboard of API Manager if CanGetConsumers, CanGetAnyUser is not present #65

This commit is contained in:
PengfeiLi0218 2019-01-29 19:52:21 +08:00
parent c515a822f5
commit e349d641ec
6 changed files with 62 additions and 0 deletions

View File

@ -25,6 +25,9 @@ class IndexView(LoginRequiredMixin, TemplateView):
except APIError as err:
messages.error(self.request, err)
config = {}
except:
messages.error(self.request, "Unknown Error")
config = {}
context.update({
'config_json': json.dumps(config, indent=4),

View File

@ -82,6 +82,8 @@ class IndexView(LoginRequiredMixin, TemplateView):
consumers = self.scrub(consumers)
except APIError as err:
messages.error(self.request, err)
except:
messages.error(self.request, "Unknown")
sorted_consumers = sorted(
consumers, key=lambda consumer: consumer['created'], reverse=True)
@ -128,6 +130,9 @@ class DetailView(LoginRequiredMixin, FormView):
except APIError as err:
messages.error(self.request, err)
return super(DetailView, self).form_invalid(form)
except:
messages.error(self.request, "Unknown")
return super(DetailView, self).form_invalid(form)
msg = 'calls limit of consumer {} has been updated successfully.'.format(
data['consumer_id'])
@ -154,6 +159,8 @@ class DetailView(LoginRequiredMixin, FormView):
except APIError as err:
messages.error(self.request, err)
except:
messages.error(self.request, "Unknown")
context.update({
'consumer': consumer
@ -175,6 +182,8 @@ class EnableDisableView(LoginRequiredMixin, RedirectView):
messages.success(self.request, self.success)
except APIError as err:
messages.error(self.request, err)
except:
messages.error(self.request, "Unknown")
urlpath = self.request.POST.get('next', reverse('consumers-index'))
query = self.request.GET.urlencode()

View File

@ -35,6 +35,8 @@ class CreateView(LoginRequiredMixin, FormView):
fields['bank_id'].choices = self.api.get_bank_id_choices()
except APIError as err:
messages.error(self.request, err)
except:
messages.error(self.request, "Unknown Error")
fields['last_ok_date'].initial =\
datetime.datetime.now().strftime(settings.API_DATETIMEFORMAT)
return form
@ -76,6 +78,9 @@ class CreateView(LoginRequiredMixin, FormView):
except APIError as err:
messages.error(self.request, err)
return super(CreateView, self).form_invalid(form)
except:
messages.error(self.request, "Unknown Error")
return super(CreateView, self).form_invalid(form)
msg = 'Customer number {} for user {} has been created successfully!'.format( # noqa
result['customer_number'], data['username'])
messages.success(self.request, msg)

View File

@ -39,6 +39,8 @@ class IndexView(LoginRequiredMixin, TemplateView):
entitlement_requests = self.scrub(entitlement_requests)
except APIError as err:
messages.error(self.request, err)
except:
messages.error(self.request, "Unknown Error")
context.update({
'entitlementrequests': entitlement_requests,
@ -60,6 +62,8 @@ class RejectEntitlementRequest(LoginRequiredMixin, View):
messages.success(request, msg)
except APIError as err:
messages.error(request, err)
except:
messages.error(self.request, "Unknown Error")
redirect_url = request.POST.get('next', reverse('entitlementrequests-index'))
return HttpResponseRedirect(redirect_url)
@ -83,6 +87,8 @@ class AcceptEntitlementRequest(LoginRequiredMixin, View):
messages.success(request, msg)
except APIError as err:
messages.error(request, err)
except:
messages.error(self.request, "Unknown Error")
try:
urlpath = '/entitlement-requests/{}'.format(request.POST.get('entitlement_request_id', '<undefined>'))
@ -92,6 +98,8 @@ class AcceptEntitlementRequest(LoginRequiredMixin, View):
messages.success(request, msg)
except APIError as err:
messages.error(request, err)
except:
messages.error(self.request, "Unknown Error")
redirect_url = request.POST.get('next', reverse('entitlementrequests-index'))
return HttpResponseRedirect(redirect_url)

View File

@ -264,6 +264,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
average_response_time = metrics[0]["average_response_time"]
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
else:
urlpath = '/management/aggregate-metrics?from_date={}&to_date={}&exclude_app_names={}&exclude_implemented_by_partial_functions={}&exclude_url_pattern={}'.format(
@ -277,6 +279,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
average_response_time = metrics[0]["average_response_time"]
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
to_date = datetime.datetime.strptime(to_date, API_DATEFORMAT)
@ -324,6 +328,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
active_apps_list = list(apps)
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
else:
urlpath = '/management/metrics/top-consumers?from_date={}&to_date={}&exclude_app_names={}&exclude_implemented_by_partial_functions={}&exclude_url_pattern={}'.format(
from_date, to_date, ",".join(EXCLUDE_APPS), ",".join(EXCLUDE_FUNCTIONS), ",".join(EXCLUDE_URL_PATTERN))
@ -333,6 +339,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
active_apps_list = list(apps)
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
return active_apps_list
@ -349,6 +357,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
apps_list = apps["list"]
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
for app in apps_list:
app_created_date = datetime.datetime.strptime(app["created"], '%Y-%m-%dT%H:%M:%SZ')
@ -418,6 +428,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
sum += result
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
date_from = date_to
date_list.append(date_from)
@ -435,6 +447,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
sum += result
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
date_from = date_to
date_list.append(date_from)
@ -575,6 +589,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
users = api.get(urlpath)
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
else:
try:
@ -586,6 +602,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
# fail gracefully in case API provides new structure
except KeyError as err:
messages.error(self.request, 'KeyError: {}'.format(err))
except:
error_once_only(self.request, 'Unknown Error')
user_email_cansearchwarehouse = dict(zip(users_with_cansearchwarehouse, email_with_cansearchwarehouse))
number_of_users_with_cansearchwarehouse = len(user_email_cansearchwarehouse)
@ -601,6 +619,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
top_apis = api.get(urlpath)['top_apis']
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
else:
urlpath = '/management/metrics/top-apis?from_date={}&to_date={}&exclude_app_names={}&exclude_implemented_by_partial_functions={}&exclude_url_pattern={}'.format(
from_date, to_date, ",".join(EXCLUDE_APPS), ",".join(EXCLUDE_FUNCTIONS), ",".join(EXCLUDE_URL_PATTERN))
@ -609,6 +629,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
top_apis = api.get(urlpath)['top_apis']
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
for api in top_apis:
if api['Implemented_by_partial_function'] == "":
@ -630,6 +652,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
top_warehouse_calls.append(api)
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
return top_warehouse_calls
def get_top_apps_using_warehouse(self, from_date, to_date):
@ -644,6 +668,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
top_apps_using_warehouse = top_apps_using_warehouse["top_consumers"][:2]
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
return top_apps_using_warehouse
@ -660,6 +686,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
apps_list = apps["list"]
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
for app in apps_list:
created_date = datetime.datetime.strptime(app['created'], '%Y-%m-%dT%H:%M:%SZ')
@ -684,6 +712,8 @@ class MetricsSummaryView(LoginRequiredMixin, TemplateView):
except APIError as err:
error_once_only(self.request, err)
except:
error_once_only(self.request, 'Unknown Error')
if times_to_first_call:
median = statistics.median(times_to_first_call)

View File

@ -30,6 +30,8 @@ class LoginToDjangoMixin(object):
data = api.get('/users/current')
except APIError as err:
messages.error(self.request, err)
except:
messages.error(self.request, 'Unknown Error')
return False
else:
userid = data['user_id'] or data['email']
@ -66,6 +68,9 @@ class OAuthInitiateView(RedirectView):
except AuthenticatorError as err:
messages.error(self.request, err)
return reverse('home')
except:
messages.error(self.request, 'Unknown Error')
return reverse('home')
else:
self.request.session['obp'] = {
'authenticator': 'obp.oauth.OAuthAuthenticator',
@ -89,6 +94,8 @@ class OAuthAuthorizeView(RedirectView, LoginToDjangoMixin):
authenticator.set_access_token(authorization_url)
except AuthenticatorError as err:
messages.error(self.request, err)
except:
messages.error(self.request, 'Unknown Error')
else:
session_data['authenticator_kwargs'] = {
'token': authenticator.token,