mirror of
https://github.com/kubevela/kubevela.git
synced 2026-03-02 01:30:47 +00:00
* Refactor: use createOrUpdateNamespace as a common util function
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Feat: add ENV webservice handelr
* Fix: fix Env usecase logic
* Feat: Add Delete Env API
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: filter empty addon data
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Feat: split makefiels and make it clear
* Feat: add k8s utils test
* Feat: Add env update interface
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Feat: change env implementation
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Fix: minor fix
* Revert "Fix: minor fix"
This reverts commit 9cafefa65a.
* Fix: use appusecase as parameter
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Refactor: align CLI vela env with new env design
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: minor fix
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Feat: add page index and alias of env
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: fix tests and licence header
* Fix: fix makefile and add default target
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: update build swagger.json
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: change update env api
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Feat: list env with alias
* Feat: add log to env delete
* Fix: can not get app status
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Feat: support update workflow and refactor code
* Fix: lint
* Fix: remove swagger check
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: fix cli vela delete
* Fix: update test
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: update test
Signed-off-by: Jianbo Sun <jianbo.sjb@alibaba-inc.com>
* Fix: app deploy unit test case
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Fix: SortOrderDescending is not effective
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Fix: e2e test case
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Feat: support default project/target/env
* Fix: make test and add swagger
* Fix: use separated datasource for unit test
* Fix: app rollback bug
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Fix: fix e2e test
* Fix: kubeapi driver sort bug
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Fix: e2e test
* Fix: api e2e test
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
* Fix: e2e test fix
* Fix: try fix e2e test
* Fix: api e2e test
Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
Co-authored-by: barnettZQG <barnett.zqg@gmail.com>
101 lines
3.3 KiB
Go
101 lines
3.3 KiB
Go
/*
|
|
Copyright 2021 The KubeVela Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package bcode
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/emicklei/go-restful/v3"
|
|
"github.com/go-playground/validator/v10"
|
|
|
|
"github.com/oam-dev/kubevela/pkg/apiserver/datastore"
|
|
"github.com/oam-dev/kubevela/pkg/apiserver/log"
|
|
"github.com/oam-dev/kubevela/pkg/utils"
|
|
)
|
|
|
|
// Business Code of VelaUX contains 5 digits, the first 3 digits should be reversed and indicates the category of concept
|
|
// the last two digits indicates the error number
|
|
// For example, business code 11001 should split to 110 and 01, it means the code belongs to the 011 category env, and it's the 01 number error.
|
|
|
|
// ErrServer an unexpected mistake.
|
|
var ErrServer = NewBcode(500, 500, "The service has lapsed.")
|
|
|
|
// Bcode business error code
|
|
type Bcode struct {
|
|
HTTPCode int32 `json:"-"`
|
|
BusinessCode int32
|
|
Message string
|
|
}
|
|
|
|
func (b *Bcode) Error() string {
|
|
return fmt.Sprintf("HTTPCode:%d BusinessCode:%d Message:%s", b.HTTPCode, b.BusinessCode, b.Message)
|
|
}
|
|
|
|
var bcodeMap map[int32]*Bcode
|
|
|
|
// NewBcode new business code
|
|
func NewBcode(httpCode, businessCode int32, message string) *Bcode {
|
|
if bcodeMap == nil {
|
|
bcodeMap = make(map[int32]*Bcode)
|
|
}
|
|
if _, exit := bcodeMap[businessCode]; exit {
|
|
panic("bcode business code is exist")
|
|
}
|
|
bcode := &Bcode{HTTPCode: httpCode, BusinessCode: businessCode, Message: message}
|
|
bcodeMap[businessCode] = bcode
|
|
return bcode
|
|
}
|
|
|
|
// ReturnError Unified handling of all types of errors, generating a standard return structure.
|
|
func ReturnError(req *restful.Request, res *restful.Response, err error) {
|
|
var bcode *Bcode
|
|
if errors.As(err, &bcode) {
|
|
if err := res.WriteHeaderAndEntity(int(bcode.HTTPCode), err); err != nil {
|
|
log.Logger.Error("write entity failure %s", err.Error())
|
|
}
|
|
return
|
|
}
|
|
|
|
if errors.Is(err, datastore.ErrRecordNotExist) {
|
|
if err := res.WriteHeaderAndEntity(int(404), err); err != nil {
|
|
log.Logger.Error("write entity failure %s", err.Error())
|
|
}
|
|
return
|
|
}
|
|
var restfulerr restful.ServiceError
|
|
if errors.As(err, &restfulerr) {
|
|
if err := res.WriteHeaderAndEntity(restfulerr.Code, Bcode{HTTPCode: int32(restfulerr.Code), BusinessCode: int32(restfulerr.Code), Message: restfulerr.Message}); err != nil {
|
|
log.Logger.Error("write entity failure %s", err.Error())
|
|
}
|
|
return
|
|
}
|
|
|
|
var validErr validator.ValidationErrors
|
|
if errors.As(err, &validErr) {
|
|
if err := res.WriteHeaderAndEntity(400, Bcode{HTTPCode: 400, BusinessCode: 400, Message: err.Error()}); err != nil {
|
|
log.Logger.Error("write entity failure %s", err.Error())
|
|
}
|
|
return
|
|
}
|
|
|
|
log.Logger.Errorf("Business exceptions, error message: %s, path:%s method:%s", err.Error(), utils.Sanitize(req.Request.URL.String()), req.Request.Method)
|
|
if err := res.WriteHeaderAndEntity(500, Bcode{HTTPCode: 500, BusinessCode: 500, Message: err.Error()}); err != nil {
|
|
log.Logger.Error("write entity failure %s", err.Error())
|
|
}
|
|
}
|