mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 10:46:58 +08:00
fix: parameter get or create rpc (#15830)
Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
@@ -23,7 +23,6 @@ import (
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/appctx"
|
||||
"yunion.io/x/pkg/util/httputils"
|
||||
"yunion.io/x/pkg/util/printutils"
|
||||
"yunion.io/x/pkg/utils"
|
||||
|
||||
@@ -130,12 +129,12 @@ func RpcHandler(ctx context.Context, w http.ResponseWriter, req *http.Request) {
|
||||
|
||||
httperrors.BadGatewayError(ctx, w, "recv invalid data")
|
||||
} else {
|
||||
v, ok := reterr.Interface().(*httputils.JSONClientError)
|
||||
ge, ok := reterr.Interface().(error)
|
||||
if ok {
|
||||
httperrors.JsonClientError(ctx, w, v)
|
||||
je := httperrors.NewGeneralError(ge)
|
||||
httperrors.GeneralServerError(ctx, w, je)
|
||||
return
|
||||
}
|
||||
|
||||
httperrors.BadGatewayError(ctx, w, fmt.Sprintf("%s", reterr.Interface()))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import (
|
||||
"context"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/pkg/errors"
|
||||
"yunion.io/x/pkg/util/httputils"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/auth"
|
||||
@@ -61,7 +61,16 @@ func (m *ParametersManager) getParametersRpc(s *mcclient.ClientSession, key stri
|
||||
return nil, err
|
||||
}
|
||||
if parameters.Total == 0 {
|
||||
return nil, errors.Wrap(errors.ErrNotFound, key)
|
||||
// if no such setting, create one
|
||||
empty := jsonutils.NewDict()
|
||||
empty.Add(jsonutils.NewString(key), "name")
|
||||
empty.Add(jsonutils.NewDict(), "value")
|
||||
empty.Add(jsonutils.NewString("yunionagent"), "service_id")
|
||||
_, err := m.Create(adminSession, empty)
|
||||
if err != nil && httputils.ErrorCode(err) != 409 {
|
||||
return nil, err
|
||||
}
|
||||
return m.getParametersRpc(s, key, params)
|
||||
}
|
||||
return parameters.Data[0], nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user