diff --git a/controllers/account/api/v1/debt_webhook.go b/controllers/account/api/v1/debt_webhook.go index 15af2638419..021adc170f0 100644 --- a/controllers/account/api/v1/debt_webhook.go +++ b/controllers/account/api/v1/debt_webhook.go @@ -22,6 +22,10 @@ import ( "os" "strings" + account2 "github.com/labring/sealos/controllers/common/account" + + "github.com/labring/sealos/controllers/pkg/common" + admissionV1 "k8s.io/api/admission/v1" "k8s.io/apimachinery/pkg/types" @@ -164,7 +168,7 @@ func checkOption(ctx context.Context, logger logr.Logger, c client.Client, nsNam for _, account := range accountList.Items { if account.Status.Balance < account.Status.DeductionBalance { - return admission.ValidationResponse(false, fmt.Sprintf("account balance less than 0,now account is %.2f¥", float64(account.Status.Balance-account.Status.DeductionBalance)/1000000)) + return admission.ValidationResponse(false, fmt.Sprintf(common.MessageFormat, common.CodeInsufficientBalance, fmt.Sprintf("account balance less than 0,now account is %.2f¥", GetAccountDebtBalance(account)))) } } return admission.Allowed("pass user " + user) @@ -174,4 +178,8 @@ func getDefaultQuotaName(namespace string) string { return fmt.Sprintf("quota-%s", namespace) } +func GetAccountDebtBalance(account Account) float64 { + return account2.GetCurrencyBalance(account.Status.Balance - account.Status.DeductionBalance) +} + const debtLimit0QuotaName = "debt-limit0" diff --git a/controllers/common/account/count.go b/controllers/common/account/count.go index 4a7282e37d8..f83b812636e 100644 --- a/controllers/common/account/count.go +++ b/controllers/common/account/count.go @@ -16,5 +16,11 @@ limitations under the License. package account +import "math" + // CurrencyUnit is the unit of currency for accounting. const CurrencyUnit = 1000000 + +func GetCurrencyBalance(balance int64) float64 { + return math.Ceil(float64(balance) / CurrencyUnit) +} diff --git a/controllers/pkg/common/common.go b/controllers/pkg/common/common.go new file mode 100644 index 00000000000..230ff2fa054 --- /dev/null +++ b/controllers/pkg/common/common.go @@ -0,0 +1,10 @@ +package common + +const ( + MessageFormat = "%d: %s" +) + +// code +const ( + CodeInsufficientBalance = 40001 +)