Merge pull request #8176 from zhaoxiangchun/bugfix/zxc-commonalert

modify suggest rule cli
This commit is contained in:
yunion-ci-robot
2020-10-09 10:33:59 +08:00
committed by GitHub
4 changed files with 82 additions and 63 deletions
+9 -60
View File
@@ -15,70 +15,19 @@
package monitor
import (
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules/monitor"
"yunion.io/x/onecloud/cmd/climc/shell"
"yunion.io/x/onecloud/pkg/mcclient/modules"
options "yunion.io/x/onecloud/pkg/mcclient/options/monitor"
)
func init() {
aN := cmdN("suggestsysrule")
R(&options.SuggestRuleListOptions{}, aN("list"), "List all suggestsysrules",
func(s *mcclient.ClientSession, args *options.SuggestRuleListOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.SuggestSysRuleManager.List(s, params)
if err != nil {
return err
}
printList(ret, monitor.SuggestSysRuleManager.GetColumns(s))
return nil
})
R(&options.SuggestRuleCreateOptions{}, aN("create"), "Create suggestsys rule",
func(s *mcclient.ClientSession, args *options.SuggestRuleCreateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.SuggestSysRuleManager.Create(s, params)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.SuggestRuleShowOptions{}, aN("show"), "Show details of a alert rule",
func(s *mcclient.ClientSession, args *options.SuggestRuleShowOptions) error {
ret, err := monitor.SuggestSysRuleManager.Get(s, args.ID, nil)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.SuggestRuleUpdateOptions{}, aN("update"), "Update a alert rule",
func(s *mcclient.ClientSession, args *options.SuggestRuleUpdateOptions) error {
params, err := args.Params()
if err != nil {
return err
}
ret, err := monitor.SuggestSysRuleManager.Update(s, args.ID, params)
if err != nil {
return err
}
printObject(ret)
return nil
})
R(&options.SuggestRuleDeleteOptions{}, aN("delete"), "Delete alerts",
func(s *mcclient.ClientSession, args *options.SuggestRuleDeleteOptions) error {
ret := monitor.SuggestSysRuleManager.BatchDelete(s, args.ID, nil)
printBatchResults(ret, monitor.SuggestSysRuleManager.GetColumns(s))
return nil
})
cmd := shell.NewResourceCmd(modules.SuggestSysRuleManager)
cmd.List(new(options.SuggestRuleListOptions))
cmd.Show(new(options.SuggestRuleShowOptions))
cmd.Perform("enable", new(options.SuggestRuleShowOptions))
cmd.Perform("disable", new(options.SuggestRuleShowOptions))
cmd.Delete(new(options.CommonAlertDeleteOptions))
cmd.Perform("config", new(options.SuggestRuleConfigOptions))
}
+1 -1
View File
@@ -51,7 +51,7 @@ type SInfluxdbShemaManager struct {
func NewSuggestSysRuleManager() *SSuggestSysRuleManager {
man := NewMonitorV2Manager("suggestsysrule", "suggestsysrules",
[]string{"id", "name", "type", "enabled", "setting"},
[]string{"id", "name", "type", "enabled", "period", "time_from", "setting"},
[]string{})
return &SSuggestSysRuleManager{
ResourceManager: &man,
+36 -2
View File
@@ -27,10 +27,36 @@ type SuggestRuleListOptions struct {
options.BaseListOptions
}
func (o *SuggestRuleListOptions) Params() (jsonutils.JSONObject, error) {
return options.ListStructToParams(o)
}
type SuggestRuleShowOptions struct {
ID string `help:"ID or name of the alert" json:"-"`
}
func (o *SuggestRuleShowOptions) Params() (jsonutils.JSONObject, error) {
return options.StructToParams(o)
}
func (o *SuggestRuleShowOptions) GetId() string {
return o.ID
}
type SuggestRuleConfigOptions struct {
ID string `help:"ID or name of the alert" json:"-"`
Period string `help:"Period of suggest rule e.g. '5s', '1m'"`
TimeFrom string `help:"TimeFrom of suggest rule e.g. '24h'"`
}
func (o *SuggestRuleConfigOptions) Params() (jsonutils.JSONObject, error) {
return options.StructToParams(o)
}
func (o *SuggestRuleConfigOptions) GetId() string {
return o.ID
}
type SuggestSysRuleAlertSettingOptions struct {
Status string `help:"Status of eip_unused rule"`
}
@@ -43,7 +69,7 @@ type SuggestRuleCreateOptions struct {
Period string `help:"Period of suggest rule e.g. '5s', '1m'" default:"30s"`
}
func (opt SuggestRuleCreateOptions) Params() (jsonutils.JSONObject, error) {
func (opt *SuggestRuleCreateOptions) Params() (jsonutils.JSONObject, error) {
input := new(monitor.SuggestSysRuleCreateInput)
input.Name = opt.Name
input.Period = opt.Period
@@ -119,5 +145,13 @@ func newSuggestSysAlertSetting(tp string) *monitor.SSuggestSysAlertSetting {
}
type SuggestRuleDeleteOptions struct {
ID []string `help:"ID of alert to delete"`
ID string `help:"ID of alert to delete"`
}
func (o *SuggestRuleDeleteOptions) GetId() string {
return o.ID
}
func (o *SuggestRuleDeleteOptions) Params() (jsonutils.JSONObject, error) {
return options.StructToParams(o)
}
+36
View File
@@ -311,6 +311,42 @@ func (self *SSuggestSysRule) PerformDisable(ctx context.Context, userCred mcclie
return nil, nil
}
func (self *SSuggestSysRule) AllowPerformConfig(ctx context.Context, userCred mcclient.TokenCredential,
query jsonutils.JSONObject, data jsonutils.JSONObject) bool {
return db.IsAdminAllowPerform(userCred, self, "config")
}
func (self *SSuggestSysRule) PerformConfig(ctx context.Context, userCred mcclient.TokenCredential,
query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
period, _ := data.GetString("period")
timeFrom, _ := data.GetString("time_from")
if len(period) != 0 {
period = parseDuration(period)
if _, err := time.ParseDuration(period); err != nil {
return data, httperrors.NewInputParameterError("Invalid period format: %s", period)
}
}
if len(timeFrom) != 0 {
timeFrom = parseDuration(timeFrom)
if _, err := time.ParseDuration(timeFrom); err != nil {
return data, httperrors.NewInputParameterError("Invalid time_from format: %s", timeFrom)
}
}
db.Update(self, func() error {
if len(period) != 0 {
self.Period = period
}
if len(timeFrom) != 0 {
self.TimeFrom = timeFrom
}
return nil
})
db.OpsLog.LogEvent(self, "modifyconfig", "", userCred)
self.updateCronjob()
return nil, nil
}
func (self *SSuggestSysRuleManager) AllowGetPropertyRuleType(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool {
return true
}