未验证 提交 87bdbfaa 编写于 作者: H huanggze

apis: unify http response format

Signed-off-by: Nhuanggze <loganhuang@yunify.com>
上级 5910ef45
......@@ -30,31 +30,63 @@ import (
func LoggingQueryCluster(request *restful.Request, response *restful.Response) {
res := logQuery(log.QueryLevelCluster, request)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
func LoggingQueryWorkspace(request *restful.Request, response *restful.Response) {
res := logQuery(log.QueryLevelWorkspace, request)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
func LoggingQueryNamespace(request *restful.Request, response *restful.Response) {
res := logQuery(log.QueryLevelNamespace, request)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
func LoggingQueryWorkload(request *restful.Request, response *restful.Response) {
res := logQuery(log.QueryLevelWorkload, request)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
func LoggingQueryPod(request *restful.Request, response *restful.Response) {
res := logQuery(log.QueryLevelPod, request)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
func LoggingQueryContainer(request *restful.Request, response *restful.Response) {
res := logQuery(log.QueryLevelContainer, request)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
......@@ -81,6 +113,10 @@ func LoggingUpdateFluentbitFilters(request *restful.Request, response *restful.R
func LoggingQueryFluentbitOutputs(request *restful.Request, response *restful.Response) {
res := log.FluentbitOutputsQuery()
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
......@@ -97,6 +133,11 @@ func LoggingInsertFluentbitOutput(request *restful.Request, response *restful.Re
res = log.FluentbitOutputInsert(output)
}
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
......@@ -115,6 +156,12 @@ func LoggingUpdateFluentbitOutput(request *restful.Request, response *restful.Re
}
res := log.FluentbitOutputUpdate(output, id)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
......@@ -125,6 +172,11 @@ func LoggingDeleteFluentbitOutput(request *restful.Request, response *restful.Re
id := request.PathParameter("output")
res = log.FluentbitOutputDelete(id)
if res.Status != http.StatusOK {
response.WriteHeaderAndEntity(res.Status, res.Error)
return
}
response.WriteAsJson(res)
}
......
......@@ -233,6 +233,7 @@ func FluentbitOutputsQuery() *FluentbitOutputsResult {
outputs, err := GetFluentbitOutputFromConfigMap()
if err != nil {
result.Status = http.StatusNotFound
result.Error = err.Error()
return &result
}
......@@ -263,6 +264,7 @@ func FluentbitOutputInsert(output fb.OutputPlugin) *FluentbitOutputsResult {
err = updateFluentbitOutputConfigMap(outputs)
if err != nil {
result.Status = http.StatusInternalServerError
result.Error = err.Error()
return &result
}
......@@ -270,6 +272,7 @@ func FluentbitOutputInsert(output fb.OutputPlugin) *FluentbitOutputsResult {
err = syncFluentbitCRDOutputWithConfigMap(outputs)
if err != nil {
result.Status = http.StatusInternalServerError
result.Error = err.Error()
return &result
}
......@@ -304,6 +307,7 @@ func FluentbitOutputUpdate(output fb.OutputPlugin, id string) *FluentbitOutputsR
if index >= len(outputs) {
result.Status = http.StatusNotFound
result.Error = "The output plugin to update doesn't exist. Please check the output id you provide."
return &result
}
......@@ -313,6 +317,7 @@ func FluentbitOutputUpdate(output fb.OutputPlugin, id string) *FluentbitOutputsR
err = updateFluentbitOutputConfigMap(outputs)
if err != nil {
result.Status = http.StatusInternalServerError
result.Error = err.Error()
return &result
}
......@@ -320,6 +325,7 @@ func FluentbitOutputUpdate(output fb.OutputPlugin, id string) *FluentbitOutputsR
err = syncFluentbitCRDOutputWithConfigMap(outputs)
if err != nil {
result.Status = http.StatusInternalServerError
result.Error = err.Error()
return &result
}
......@@ -350,6 +356,7 @@ func FluentbitOutputDelete(id string) *FluentbitOutputsResult {
if index >= len(outputs) {
result.Status = http.StatusNotFound
result.Error = "The output plugin to delete doesn't exist. Please check the output id you provide."
return &result
}
......@@ -358,6 +365,7 @@ func FluentbitOutputDelete(id string) *FluentbitOutputsResult {
err := updateFluentbitOutputConfigMap(outputs)
if err != nil {
result.Status = http.StatusInternalServerError
result.Error = err.Error()
return &result
}
......@@ -365,6 +373,7 @@ func FluentbitOutputDelete(id string) *FluentbitOutputsResult {
err = syncFluentbitCRDOutputWithConfigMap(outputs)
if err != nil {
result.Status = http.StatusInternalServerError
result.Error = err.Error()
return &result
}
......
......@@ -49,5 +49,6 @@ type FluentbitFiltersResult struct {
type FluentbitOutputsResult struct {
Status int `json:"status" description:"response status"`
Error string `json:"error,omitempty" description:"debug information"`
Outputs []fb.OutputPlugin `json:"outputs,omitempty" description:"array of fluent bit output plugins"`
}
......@@ -393,6 +393,7 @@ type HistogramResult struct {
// Wrap elasticsearch response
type QueryResult struct {
Status int `json:"status,omitempty" description:"query status"`
Error string `json:"error,omitempty" description:"debug information"`
Workspace string `json:"workspace,omitempty" description:"workspace the query was performed against"`
Read *ReadResult `json:"query,omitempty" description:"query results"`
Statistics *StatisticsResult `json:"statistics,omitempty" description:"statistics results"`
......@@ -428,21 +429,22 @@ func calcTimestamp(input string) int64 {
func parseQueryResult(operation int, param QueryParameters, body []byte, query []byte) *QueryResult {
var queryResult QueryResult
//queryResult.Request = string(query)
//queryResult.Response = string(body)
var response Response
err := jsonIter.Unmarshal(body, &response)
if err != nil {
glog.Errorln(err)
queryResult.Status = http.StatusInternalServerError
queryResult.Error = err.Error()
return &queryResult
}
if response.Status != 0 {
//Elastic error, eg, es_rejected_execute_exception
err := "The query failed with no response"
queryResult.Status = response.Status
glog.Errorln("The query failed with no response")
queryResult.Error = err
glog.Errorln(err)
return &queryResult
}
......@@ -477,6 +479,7 @@ func parseQueryResult(operation int, param QueryParameters, body []byte, query [
if err != nil {
glog.Errorln(err)
queryResult.Status = http.StatusInternalServerError
queryResult.Error = err.Error()
return &queryResult
}
queryResult.Statistics = &StatisticsResult{Containers: statisticsResponse.ContainerCount.Value, Logs: response.Hits.Total}
......@@ -493,6 +496,7 @@ func parseQueryResult(operation int, param QueryParameters, body []byte, query [
if err != nil {
glog.Errorln(err)
queryResult.Status = http.StatusInternalServerError
queryResult.Error = err.Error()
return &queryResult
}
for _, histogram := range histogramAggregations.HistogramAggregation.Histograms {
......@@ -554,6 +558,7 @@ func Query(param QueryParameters) *QueryResult {
if err != nil {
queryResult = new(QueryResult)
queryResult.Status = http.StatusNotFound
queryResult.Error = err.Error()
return queryResult
}
......@@ -561,6 +566,7 @@ func Query(param QueryParameters) *QueryResult {
if es == nil {
queryResult = new(QueryResult)
queryResult.Status = http.StatusNotFound
queryResult.Error = "Elasticsearch configurations not found. Please check if they are properly configured."
return queryResult
}
......@@ -571,6 +577,7 @@ func Query(param QueryParameters) *QueryResult {
glog.Errorln(err)
queryResult = new(QueryResult)
queryResult.Status = http.StatusNotFound
queryResult.Error = err.Error()
return queryResult
}
request.Header.Set("Content-Type", "application/json; charset=utf-8")
......@@ -580,6 +587,7 @@ func Query(param QueryParameters) *QueryResult {
glog.Errorln(err)
queryResult = new(QueryResult)
queryResult.Status = http.StatusNotFound
queryResult.Error = err.Error()
return queryResult
}
defer response.Body.Close()
......@@ -589,6 +597,7 @@ func Query(param QueryParameters) *QueryResult {
glog.Errorln(err)
queryResult = new(QueryResult)
queryResult.Status = http.StatusNotFound
queryResult.Error = err.Error()
return queryResult
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册