feat(api): return data from available services even if one backend fails
This commit is contained in:
@@ -20,6 +20,7 @@ type apiGenericResultPair struct {
|
|||||||
type apiSummaryResultPair struct {
|
type apiSummaryResultPair struct {
|
||||||
Server string `json:"server"`
|
Server string `json:"server"`
|
||||||
Data []SummaryRowData `json:"data"`
|
Data []SummaryRowData `json:"data"`
|
||||||
|
Error string `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type apiResponse struct {
|
type apiResponse struct {
|
||||||
@@ -70,9 +71,12 @@ func apiSummaryHandler(request apiRequest) apiResponse {
|
|||||||
for i, result := range results {
|
for i, result := range results {
|
||||||
parsedSummary, err := summaryParse(result, request.Servers[i])
|
parsedSummary, err := summaryParse(result, request.Servers[i])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return apiResponse{
|
response.Result = append(response.Result, &apiSummaryResultPair{
|
||||||
Error: err.Error(),
|
Server: request.Servers[i],
|
||||||
}
|
Data: []SummaryRowData{},
|
||||||
|
Error: err.Error(),
|
||||||
|
})
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
response.Result = append(response.Result, &apiSummaryResultPair{
|
response.Result = append(response.Result, &apiSummaryResultPair{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
<meta name="renderer" content="webkit">
|
<meta name="renderer" content="webkit">
|
||||||
<title>{{ html .Title }}</title>
|
<title>{{ html .Title }}</title>
|
||||||
<link rel="stylesheet" href="/static/jsdelivr/npm/bootstrap@4.5.1/dist/css/bootstrap.min.css" integrity="sha256-VoFZSlmyTXsegReQCNmbXrS4hBBUl/cexZvPmPWoJsY=" crossorigin="anonymous">
|
<link rel="stylesheet" href="/static/jsdelivr/npm/bootstrap@4.5.1/dist/css/bootstrap.min.css" crossorigin="anonymous">
|
||||||
<style>
|
<style>
|
||||||
.navbar-nav {
|
.navbar-nav {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
@@ -87,8 +87,8 @@
|
|||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="/static/jsdelivr/npm/jquery@3.5.1/dist/jquery.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
|
<script src="/static/jsdelivr/npm/jquery@3.5.1/dist/jquery.min.js" crossorigin="anonymous"></script>
|
||||||
<script src="/static/jsdelivr/npm/bootstrap@4.5.1/dist/js/bootstrap.min.js" integrity="sha256-0IiaoZCI++9oAAvmCb5Y0r93XkuhvJpRalZLffQXLok=" crossorigin="anonymous"></script>
|
<script src="/static/jsdelivr/npm/bootstrap@4.5.1/dist/js/bootstrap.min.js" rossorigin="anonymous"></script>
|
||||||
<script src="/static/sortTable.js"></script>
|
<script src="/static/sortTable.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
Reference in New Issue
Block a user