mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
在优化建议资源列表中增加费用信息
另外,在资源进行处理时记录对应的status信息
This commit is contained in:
@@ -25,7 +25,6 @@ import (
|
||||
"yunion.io/x/sqlchemy"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis/monitor"
|
||||
api "yunion.io/x/onecloud/pkg/apis/monitor"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
"yunion.io/x/onecloud/pkg/httperrors"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
@@ -73,6 +72,11 @@ type SSuggestSysAlert struct {
|
||||
Provider string `list:"user" update:"user"`
|
||||
Project string `list:"user" update:"user"`
|
||||
Cloudaccount string `list:"user" update:"user"`
|
||||
|
||||
//费用
|
||||
Amount float64 `list:"user" update:"user"`
|
||||
//币种
|
||||
Currency string `list:"user" update:"user"`
|
||||
}
|
||||
|
||||
func NewSuggestSysAlertManager(dt interface{}, keyword, keywordPlural string) *SSuggestSysAlertManager {
|
||||
@@ -274,7 +278,7 @@ func (self *SSuggestSysAlert) RealDelete(ctx context.Context, userCred mcclient.
|
||||
func (self *SSuggestSysAlert) StartDeleteTask(
|
||||
ctx context.Context, userCred mcclient.TokenCredential) error {
|
||||
params := jsonutils.NewDict()
|
||||
self.SetStatus(userCred, api.SUGGEST_ALERT_START_DELETE, "")
|
||||
|
||||
return GetSuggestSysRuleDrivers()[self.Type].StartResolveTask(ctx, userCred, self, params)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/log"
|
||||
"yunion.io/x/pkg/errors"
|
||||
"yunion.io/x/pkg/util/timeutils"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/apis/monitor"
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
||||
@@ -108,6 +109,7 @@ func getSuggestSysAlertFromJson(obj jsonutils.JSONObject, rule models.ISuggestSy
|
||||
suggestSysAlert.ResMeta = obj
|
||||
suggestSysAlert.Action = monitor.DRIVER_ACTION
|
||||
suggestSysAlert.Status = monitor.SUGGEST_ALERT_READY
|
||||
getResourceAmount(suggestSysAlert, time.Now().Add(-30*24*time.Hour))
|
||||
return suggestSysAlert, nil
|
||||
}
|
||||
|
||||
@@ -156,3 +158,37 @@ func getLatestActionTimeFromLogs(logActions []jsonutils.JSONObject) (*time.Time,
|
||||
}
|
||||
return latestTime, nil
|
||||
}
|
||||
|
||||
func getResourceAmount(alert *models.SSuggestSysAlert, lastUsedTime time.Time) {
|
||||
param := jsonutils.NewDict()
|
||||
param.Add(jsonutils.NewString("system"), "scope")
|
||||
param.Add(jsonutils.NewString("0"), "limit")
|
||||
filter := fmt.Sprintf("resource_id.contains(%s)", alert.ResId)
|
||||
param.Add(jsonutils.NewString(filter), "filter")
|
||||
|
||||
start_day := timeutils.ShortDate(lastUsedTime)
|
||||
end_day := timeutils.ShortDate(time.Now())
|
||||
|
||||
param.Add(jsonutils.NewString(start_day), "start_day")
|
||||
param.Add(jsonutils.NewString(end_day), "end_day")
|
||||
session := auth.GetAdminSession(context.Background(), "", "")
|
||||
billRtn, err := mod.BillResources.List(session, param)
|
||||
if err != nil {
|
||||
log.Errorln(err)
|
||||
return
|
||||
}
|
||||
for _, bill := range billRtn.Data {
|
||||
amount, err := bill.Float("amount")
|
||||
if err != nil {
|
||||
log.Errorln(err)
|
||||
break
|
||||
}
|
||||
alert.Amount += amount
|
||||
currency, err := bill.GetString("currency")
|
||||
if err != nil {
|
||||
log.Errorln(err)
|
||||
}
|
||||
alert.Currency = currency
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ func (rule *DiskUnused) ValidateSetting(input *monitor.SSuggestSysAlertSetting)
|
||||
|
||||
func (rule *DiskUnused) StartResolveTask(ctx context.Context, userCred mcclient.TokenCredential,
|
||||
suggestSysAlert *models.SSuggestSysAlert, params *jsonutils.JSONDict) error {
|
||||
suggestSysAlert.SetStatus(userCred, monitor.SUGGEST_ALERT_DELETING, "")
|
||||
suggestSysAlert.SetStatus(userCred, monitor.SUGGEST_ALERT_START_DELETE, "")
|
||||
task, err := taskman.TaskManager.NewTask(ctx, "ResolveUnusedTask", suggestSysAlert, userCred, params, "", "", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -128,6 +128,7 @@ func (rule *EIPUnused) getEIPUnused(instance *monitor.SSuggestSysAlertSetting) (
|
||||
problem.Add(jsonutils.NewString(rtnTime), "eipUnused time")
|
||||
suggestSysAlert.Problem = problem
|
||||
|
||||
getResourceAmount(suggestSysAlert, latestTime)
|
||||
EIPUnsedArr.Add(jsonutils.Marshal(suggestSysAlert))
|
||||
}
|
||||
return EIPUnsedArr, nil
|
||||
@@ -159,6 +160,7 @@ func (rule *EIPUnused) Resolve(data *models.SSuggestSysAlert) error {
|
||||
|
||||
func (rule *EIPUnused) StartResolveTask(ctx context.Context, userCred mcclient.TokenCredential,
|
||||
suggestSysAlert *models.SSuggestSysAlert, params *jsonutils.JSONDict) error {
|
||||
suggestSysAlert.SetStatus(userCred, monitor.SUGGEST_ALERT_START_DELETE, "")
|
||||
task, err := taskman.TaskManager.NewTask(ctx, "ResolveUnusedTask", suggestSysAlert, userCred, params, "", "", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -181,6 +181,7 @@ func containsLbBackEnd(groupId string) (*bool, error) {
|
||||
func (rule *LBUnused) StartResolveTask(ctx context.Context, userCred mcclient.TokenCredential,
|
||||
suggestSysAlert *models.SSuggestSysAlert,
|
||||
params *jsonutils.JSONDict) error {
|
||||
suggestSysAlert.SetStatus(userCred, monitor.SUGGEST_ALERT_START_DELETE, "")
|
||||
task, err := taskman.TaskManager.NewTask(ctx, "ResolveUnusedTask", suggestSysAlert, userCred, params, "", "", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -43,6 +43,7 @@ func (self *ResolveUnusedTask) OnInit(ctx context.Context, obj db.IStandaloneMod
|
||||
self.taskFail(ctx, suggestSysAlert, msg)
|
||||
return
|
||||
}
|
||||
suggestSysAlert.SetStatus(self.UserCred, api.SUGGEST_ALERT_DELETING, "")
|
||||
err = suggestSysAlert.RealDelete(ctx, self.UserCred)
|
||||
if err != nil {
|
||||
msg := fmt.Sprintf("fail to delete SSuggestSysAlert %s", err)
|
||||
|
||||
Reference in New Issue
Block a user