This is an automated email from the ASF dual-hosted git repository.
tianxiaoliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-kie.git
The following commit(s) were added to refs/heads/master by this push:
new d6a4a9f Add config error (#183)
d6a4a9f is described below
commit d6a4a9ff027968b6af2a4ddfbf1f8ac554ae453d
Author: little-cui <[email protected]>
AuthorDate: Mon Jun 7 14:43:45 2021 +0800
Add config error (#183)
* Add config error
* Use foundation/validator instead
---
server/resource/v1/admin_resource.go | 5 ++--
server/resource/v1/common.go | 12 ++++----
server/resource/v1/history_resource.go | 15 +++++-----
server/resource/v1/kv_resource.go | 54 +++++++++++++++++-----------------
4 files changed, 45 insertions(+), 41 deletions(-)
diff --git a/server/resource/v1/admin_resource.go
b/server/resource/v1/admin_resource.go
index 5b4c191..d359044 100644
--- a/server/resource/v1/admin_resource.go
+++ b/server/resource/v1/admin_resource.go
@@ -21,6 +21,7 @@ import (
"github.com/apache/servicecomb-kie/pkg/model"
"github.com/apache/servicecomb-kie/server/service"
goRestful "github.com/emicklei/go-restful"
+ "github.com/go-chassis/cari/config"
"github.com/go-chassis/go-chassis/v2/pkg/runtime"
"github.com/go-chassis/go-chassis/v2/server/restful"
"github.com/go-chassis/openlog"
@@ -59,7 +60,7 @@ func (r *AdminResource) HealthCheck(context *restful.Context)
{
resp := &model.DocHealthCheck{}
latest, err := service.RevisionService.GetRevision(context.Ctx, domain)
if err != nil {
- WriteErrResponse(context, http.StatusInternalServerError,
err.Error())
+ WriteErrResponse(context, config.ErrInternal, err.Error())
return
}
resp.Revision = strconv.FormatInt(latest, 10)
@@ -67,7 +68,7 @@ func (r *AdminResource) HealthCheck(context *restful.Context)
{
resp.Timestamp = time.Now().Unix()
total, err := service.KVService.Total(context.Ctx, domain)
if err != nil {
- WriteErrResponse(context, http.StatusInternalServerError,
err.Error())
+ WriteErrResponse(context, config.ErrInternal, err.Error())
return
}
resp.Total = total
diff --git a/server/resource/v1/common.go b/server/resource/v1/common.go
index 96b6eb9..70f6010 100644
--- a/server/resource/v1/common.go
+++ b/server/resource/v1/common.go
@@ -23,6 +23,7 @@ import (
"errors"
"github.com/apache/servicecomb-kie/pkg/model"
"github.com/apache/servicecomb-kie/server/service/mongo/session"
+ "github.com/go-chassis/cari/config"
"github.com/go-chassis/cari/rbac"
"net/http"
"strconv"
@@ -100,10 +101,11 @@ func ReadLabelCombinations(req *goRestful.Request)
([]map[string]string, error)
}
//WriteErrResponse write error message to client
-func WriteErrResponse(context *restful.Context, status int, msg string) {
+func WriteErrResponse(context *restful.Context, code int32, msg string) {
+ configErr := config.NewError(code, msg)
context.Resp.Header().Set(goRestful.HEADER_ContentType,
goRestful.MIME_JSON)
- context.WriteHeader(status)
- b, err := json.MarshalIndent(&ErrorMsg{Msg: msg}, "", " ")
+ context.WriteHeader(configErr.StatusCode())
+ b, err := json.MarshalIndent(configErr, "", " ")
if err != nil {
openlog.Error("can not marshal:" + err.Error())
return
@@ -261,13 +263,13 @@ func queryAndResponse(rctx *restful.Context, request
*model.ListKVRequest) {
}
rev, err := service.RevisionService.GetRevision(rctx.Ctx,
request.Domain)
if err != nil {
- WriteErrResponse(rctx, http.StatusInternalServerError,
err.Error())
+ WriteErrResponse(rctx, config.ErrInternal, err.Error())
return
}
kv, err := service.KVService.List(rctx.Ctx, request.Domain,
request.Project, opts...)
if err != nil {
openlog.Error("common: " + err.Error())
- WriteErrResponse(rctx, http.StatusInternalServerError,
common.MsgDBError)
+ WriteErrResponse(rctx, config.ErrInternal, common.MsgDBError)
return
}
rctx.ReadResponseWriter().Header().Set(common.HeaderRevision,
strconv.FormatInt(rev, 10))
diff --git a/server/resource/v1/history_resource.go
b/server/resource/v1/history_resource.go
index acf7fb1..dbfbf80 100644
--- a/server/resource/v1/history_resource.go
+++ b/server/resource/v1/history_resource.go
@@ -21,6 +21,7 @@ import (
"github.com/apache/servicecomb-kie/pkg/common"
"github.com/apache/servicecomb-kie/pkg/model"
"github.com/apache/servicecomb-kie/server/service"
+ "github.com/go-chassis/cari/config"
"net/http"
goRestful "github.com/emicklei/go-restful"
@@ -40,12 +41,12 @@ func (r *HistoryResource) GetRevisions(context
*restful.Context) {
limitStr := context.ReadQueryParameter(common.QueryParamLimit)
offset, limit, err := checkPagination(offsetStr, limitStr)
if err != nil {
- WriteErrResponse(context, http.StatusBadRequest, err.Error())
+ WriteErrResponse(context, config.ErrInvalidParams, err.Error())
return
}
if kvID == "" {
openlog.Error("kv id is nil")
- WriteErrResponse(context, http.StatusForbidden, "kv_id must not
be empty")
+ WriteErrResponse(context, config.ErrRequiredRecordId, "kv_id
must not be empty")
return
}
revisions, err := service.HistoryService.GetHistory(context.Ctx, kvID,
@@ -53,10 +54,10 @@ func (r *HistoryResource) GetRevisions(context
*restful.Context) {
service.WithLimit(limit))
if err != nil {
if err == service.ErrRevisionNotExist {
- WriteErrResponse(context, http.StatusNotFound,
err.Error())
+ WriteErrResponse(context, config.ErrRecordNotExists,
err.Error())
return
}
- WriteErrResponse(context, http.StatusInternalServerError,
err.Error())
+ WriteErrResponse(context, config.ErrInternal, err.Error())
return
}
err = writeResponse(context, revisions)
@@ -94,17 +95,17 @@ func (r *HistoryResource) GetPollingData(context
*restful.Context) {
}
domain := ReadDomain(context.Ctx)
if domain == "" {
- WriteErrResponse(context, http.StatusInternalServerError,
common.MsgDomainMustNotBeEmpty)
+ WriteErrResponse(context, config.ErrInternal,
common.MsgDomainMustNotBeEmpty)
return
}
query.Domain = domain
records, err := service.TrackService.GetPollingDetail(context.Ctx,
query)
if err != nil {
if err == service.ErrRecordNotExists {
- WriteErrResponse(context, http.StatusNotFound,
err.Error())
+ WriteErrResponse(context, config.ErrRecordNotExists,
err.Error())
return
}
- WriteErrResponse(context, http.StatusInternalServerError,
err.Error())
+ WriteErrResponse(context, config.ErrInternal, err.Error())
return
}
resp := &model.PollingDataResponse{}
diff --git a/server/resource/v1/kv_resource.go
b/server/resource/v1/kv_resource.go
index 51f74be..52d9a97 100644
--- a/server/resource/v1/kv_resource.go
+++ b/server/resource/v1/kv_resource.go
@@ -21,7 +21,6 @@ package v1
import (
"encoding/json"
"fmt"
- "github.com/go-chassis/foundation/validator"
"net/http"
"github.com/apache/servicecomb-kie/pkg/common"
@@ -29,8 +28,9 @@ import (
"github.com/apache/servicecomb-kie/server/pubsub"
"github.com/apache/servicecomb-kie/server/service"
"github.com/apache/servicecomb-kie/server/service/mongo/session"
-
goRestful "github.com/emicklei/go-restful"
+ "github.com/go-chassis/cari/config"
+ "github.com/go-chassis/foundation/validator"
"github.com/go-chassis/go-chassis/v2/pkg/backends/quota"
"github.com/go-chassis/go-chassis/v2/server/restful"
"github.com/go-chassis/openlog"
@@ -46,7 +46,7 @@ func (r *KVResource) Post(rctx *restful.Context) {
project := rctx.ReadPathParameter(common.PathParameterProject)
kv := new(model.KVDoc)
if err = readRequest(rctx, kv); err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest,
fmt.Sprintf(FmtReadRequestError, err))
+ WriteErrResponse(rctx, config.ErrInvalidParams,
fmt.Sprintf(FmtReadRequestError, err))
return
}
domain := ReadDomain(rctx.Ctx)
@@ -57,28 +57,28 @@ func (r *KVResource) Post(rctx *restful.Context) {
}
err = validator.Validate(kv)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
err = quota.PreCreate("", kv.Domain, "", 1)
if err != nil {
if err == quota.ErrReached {
openlog.Info(fmt.Sprintf("can not create kv %s@%s, due
to quota violation", kv.Key, kv.Project))
- WriteErrResponse(rctx, http.StatusUnprocessableEntity,
err.Error())
+ WriteErrResponse(rctx, config.ErrNotEnoughQuota,
err.Error())
return
}
openlog.Error(err.Error())
- WriteErrResponse(rctx, http.StatusInternalServerError, "quota
check failed")
+ WriteErrResponse(rctx, config.ErrInternal, "quota check failed")
return
}
kv, err = service.KVService.Create(rctx.Ctx, kv)
if err != nil {
openlog.Error(fmt.Sprintf("post err:%s", err.Error()))
if err == session.ErrKVAlreadyExists {
- WriteErrResponse(rctx, http.StatusConflict, err.Error())
+ WriteErrResponse(rctx, config.ErrRecordAlreadyExists,
err.Error())
return
}
- WriteErrResponse(rctx, http.StatusInternalServerError, "create
kv failed")
+ WriteErrResponse(rctx, config.ErrInternal, "create kv failed")
return
}
err = pubsub.Publish(&pubsub.KVChangeEvent{
@@ -107,7 +107,7 @@ func (r *KVResource) Put(rctx *restful.Context) {
project := rctx.ReadPathParameter(common.PathParameterProject)
kvReq := new(model.UpdateKVRequest)
if err = readRequest(rctx, kvReq); err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest,
fmt.Sprintf(FmtReadRequestError, err))
+ WriteErrResponse(rctx, config.ErrInvalidParams,
fmt.Sprintf(FmtReadRequestError, err))
return
}
domain := ReadDomain(rctx.Ctx)
@@ -116,13 +116,13 @@ func (r *KVResource) Put(rctx *restful.Context) {
kvReq.Project = project
err = validator.Validate(kvReq)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
kv, err := service.KVService.Update(rctx.Ctx, kvReq)
if err != nil {
openlog.Error(fmt.Sprintf("put [%s] err:%s", kvID, err.Error()))
- WriteErrResponse(rctx, http.StatusInternalServerError, "update
kv failed")
+ WriteErrResponse(rctx, config.ErrInternal, "update kv failed")
return
}
err = pubsub.Publish(&pubsub.KVChangeEvent{
@@ -153,17 +153,17 @@ func (r *KVResource) Get(rctx *restful.Context) {
}
err := validator.Validate(request)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
kv, err := service.KVService.Get(rctx.Ctx, request)
if err != nil {
openlog.Error("kv_resource: " + err.Error())
if err == service.ErrKeyNotExists {
- WriteErrResponse(rctx, http.StatusNotFound, err.Error())
+ WriteErrResponse(rctx, config.ErrRecordNotExists,
err.Error())
return
}
- WriteErrResponse(rctx, http.StatusInternalServerError, "get kv
failed")
+ WriteErrResponse(rctx, config.ErrInternal, "get kv failed")
return
}
kv.Domain = ""
@@ -185,7 +185,7 @@ func (r *KVResource) List(rctx *restful.Context) {
}
labels, err := getLabels(rctx)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest,
common.MsgIllegalLabels)
+ WriteErrResponse(rctx, config.ErrInvalidParams,
common.MsgIllegalLabels)
return
}
request.Labels = labels
@@ -193,14 +193,14 @@ func (r *KVResource) List(rctx *restful.Context) {
limitStr := rctx.ReadQueryParameter(common.QueryParamLimit)
offset, limit, err := checkPagination(offsetStr, limitStr)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
request.Offset = offset
request.Limit = limit
err = validator.Validate(request)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
returnData(rctx, request)
@@ -221,7 +221,7 @@ func returnData(rctx *restful.Context, request
*model.ListKVRequest) {
DomainID: request.Domain,
})
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest,
err.Error())
+ WriteErrResponse(rctx, config.ErrObserveEvent,
err.Error())
return
}
if changed {
@@ -233,10 +233,10 @@ func returnData(rctx *restful.Context, request
*model.ListKVRequest) {
revised, err := isRevised(rctx.Ctx, revStr, request.Domain)
if err != nil {
if err == ErrInvalidRev {
- WriteErrResponse(rctx, http.StatusBadRequest,
err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams,
err.Error())
return
}
- WriteErrResponse(rctx, http.StatusInternalServerError,
err.Error())
+ WriteErrResponse(rctx, config.ErrInternal, err.Error())
return
}
if revised {
@@ -250,7 +250,7 @@ func returnData(rctx *restful.Context, request
*model.ListKVRequest) {
DomainID: request.Domain,
})
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest,
err.Error())
+ WriteErrResponse(rctx, config.ErrObserveEvent,
err.Error())
return
}
if changed {
@@ -272,7 +272,7 @@ func (r *KVResource) Delete(rctx *restful.Context) {
kvID := rctx.ReadPathParameter(common.PathParamKVID)
err := validateDelete(domain, project, kvID)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
kv, err := service.KVService.FindOneAndDelete(rctx.Ctx, kvID, domain,
project)
@@ -282,10 +282,10 @@ func (r *KVResource) Delete(rctx *restful.Context) {
"error": err.Error(),
}))
if err == service.ErrKeyNotExists {
- WriteErrResponse(rctx, http.StatusNotFound, err.Error())
+ WriteErrResponse(rctx, config.ErrRecordNotExists,
err.Error())
return
}
- WriteErrResponse(rctx, http.StatusInternalServerError,
common.MsgDeleteKVFailed)
+ WriteErrResponse(rctx, config.ErrInternal,
common.MsgDeleteKVFailed)
return
}
err = pubsub.Publish(&pubsub.KVChangeEvent{
@@ -307,12 +307,12 @@ func (r *KVResource) DeleteList(rctx *restful.Context) {
domain := ReadDomain(rctx.Ctx)
b := new(DeleteBody)
if err := json.NewDecoder(rctx.ReadRequest().Body).Decode(b); err !=
nil {
- WriteErrResponse(rctx, http.StatusBadRequest,
fmt.Sprintf(FmtReadRequestError, err))
+ WriteErrResponse(rctx, config.ErrInvalidParams,
fmt.Sprintf(FmtReadRequestError, err))
return
}
err := validateDeleteList(domain, project)
if err != nil {
- WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+ WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
kvs, err := service.KVService.FindManyAndDelete(rctx.Ctx, b.IDs,
domain, project)
@@ -325,7 +325,7 @@ func (r *KVResource) DeleteList(rctx *restful.Context) {
"kvIDs": b.IDs,
"error": err.Error(),
}))
- WriteErrResponse(rctx, http.StatusInternalServerError,
common.MsgDeleteKVFailed)
+ WriteErrResponse(rctx, config.ErrInternal,
common.MsgDeleteKVFailed)
return
}
for _, kv := range kvs {