3535 Name : "last_rule_load_success_timestamp_seconds" ,
3636 Help : "The timestamp of the last successful rule load." ,
3737 })
38+
39+ backends = []string {rules .CortexBackend , rules .LokiBackend } // list of supported backend types
3840)
3941
4042// RuleCommand configures and executes rule related cortex operations
@@ -43,6 +45,9 @@ type RuleCommand struct {
4345
4446 cli * client.CortexClient
4547
48+ // Backend type (cortex | loki)
49+ Backend string
50+
4651 // Get Rule Groups Configs
4752 Namespace string
4853 RuleGroup string
@@ -73,6 +78,7 @@ type RuleCommand struct {
7378func (r * RuleCommand ) Register (app * kingpin.Application ) {
7479 rulesCmd := app .Command ("rules" , "View & edit rules stored in cortex." ).PreAction (r .setup )
7580 rulesCmd .Flag ("key" , "Api key to use when contacting cortex, alternatively set $CORTEX_API_KEY." ).Default ("" ).Envar ("CORTEX_API_KEY" ).StringVar (& r .ClientConfig .Key )
81+ rulesCmd .Flag ("backend" , "Backend type to interact with: <cortex|loki>" ).Default ("cortex" ).EnumVar (& r .Backend , backends ... )
7682
7783 // Register rule commands
7884 listCmd := rulesCmd .
@@ -323,7 +329,7 @@ func (r *RuleCommand) deleteRuleGroup(k *kingpin.ParseContext) error {
323329}
324330
325331func (r * RuleCommand ) loadRules (k * kingpin.ParseContext ) error {
326- nss , err := rules .ParseFiles (r .RuleFilesList )
332+ nss , err := rules .ParseFiles (r .Backend , r . RuleFilesList )
327333 if err != nil {
328334 return errors .Wrap (err , "load operation unsuccessful, unable to parse rules files" )
329335 }
@@ -372,7 +378,7 @@ func (r *RuleCommand) diffRules(k *kingpin.ParseContext) error {
372378 return errors .Wrap (err , "diff operation unsuccessful, unable to load rules files" )
373379 }
374380
375- nss , err := rules .ParseFiles (r .RuleFilesList )
381+ nss , err := rules .ParseFiles (r .Backend , r . RuleFilesList )
376382 if err != nil {
377383 return errors .Wrap (err , "diff operation unsuccessful, unable to parse rules files" )
378384 }
@@ -426,7 +432,7 @@ func (r *RuleCommand) syncRules(k *kingpin.ParseContext) error {
426432 return errors .Wrap (err , "sync operation unsuccessful, unable to load rules files" )
427433 }
428434
429- nss , err := rules .ParseFiles (r .RuleFilesList )
435+ nss , err := rules .ParseFiles (r .Backend , r . RuleFilesList )
430436 if err != nil {
431437 return errors .Wrap (err , "sync operation unsuccessful, unable to parse rules files" )
432438 }
@@ -527,7 +533,7 @@ func (r *RuleCommand) prepare(k *kingpin.ParseContext) error {
527533 return errors .Wrap (err , "prepare operation unsuccessful, unable to load rules files" )
528534 }
529535
530- namespaces , err := rules .ParseFiles (r .RuleFilesList )
536+ namespaces , err := rules .ParseFiles (r .Backend , r . RuleFilesList )
531537 if err != nil {
532538 return errors .Wrap (err , "prepare operation unsuccessful, unable to parse rules files" )
533539 }
@@ -559,7 +565,7 @@ func (r *RuleCommand) lint(k *kingpin.ParseContext) error {
559565 return errors .Wrap (err , "prepare operation unsuccessful, unable to load rules files" )
560566 }
561567
562- namespaces , err := rules .ParseFiles (r .RuleFilesList )
568+ namespaces , err := rules .ParseFiles (r .Backend , r . RuleFilesList )
563569 if err != nil {
564570 return errors .Wrap (err , "prepare operation unsuccessful, unable to parse rules files" )
565571 }
@@ -593,7 +599,7 @@ func (r *RuleCommand) checkRecordingRuleNames(k *kingpin.ParseContext) error {
593599 return errors .Wrap (err , "check operation unsuccessful, unable to load rules files" )
594600 }
595601
596- namespaces , err := rules .ParseFiles (r .RuleFilesList )
602+ namespaces , err := rules .ParseFiles (r .Backend , r . RuleFilesList )
597603 if err != nil {
598604 return errors .Wrap (err , "check operation unsuccessful, unable to parse rules files" )
599605 }
0 commit comments