Documentation
¶
Index ¶
- type API
- type Action
- type ActionRequest
- type AggregationResult
- type BulkDeleteRequestItem
- type BulkToggleRequestItem
- type BulkUpdateRequestItem
- type CreateRequest
- type EditRequest
- type FilteredQuery
- type Parameters
- type Scenario
- type Store
- type TemplateActionParameters
- type TemplateActionRequest
- type TemplateRequest
- type TemplateRuleRequest
- type TemplateVarsResponse
- type Trigger
- type UpdateRequest
- type Validator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type API ¶
type Action ¶
type Action struct {
Type string `bson:"type" json:"type"`
Comment string `bson:"comment" json:"comment"`
Parameters Parameters `bson:"parameters,omitempty" json:"parameters"`
DropScenarioIfNotMatched bool `bson:"drop_scenario_if_not_matched" json:"drop_scenario_if_not_matched"`
EmitTriggerSuccess bool `bson:"emit_trigger_success" json:"emit_trigger_success"`
EmitTriggerFail bool `bson:"emit_trigger_fail" json:"emit_trigger_fail"`
savedpattern.EntityPatternFields `bson:",inline"`
savedpattern.AlarmPatternFields `bson:",inline"`
}
type ActionRequest ¶
type ActionRequest struct {
Type string `` /* 131-byte string literal not displayed */
Parameters action.Parameters `json:"parameters"`
Comment string `json:"comment"`
DropScenarioIfNotMatched *bool `json:"drop_scenario_if_not_matched" binding:"required"`
EmitTriggerSuccess *bool `json:"emit_trigger_success" binding:"required"`
EmitTriggerFail *bool `json:"emit_trigger_fail"`
patternfields.EntityRequest `bson:",inline"`
patternfields.AlarmRequest `bson:",inline"`
}
type AggregationResult ¶
type AggregationResult struct {
Data []Scenario `bson:"data" json:"data"`
TotalCount int64 `bson:"total_count" json:"total_count"`
}
func (AggregationResult) GetData ¶
func (r AggregationResult) GetData() any
func (AggregationResult) GetTotal ¶
func (r AggregationResult) GetTotal() int64
type BulkDeleteRequestItem ¶
type BulkToggleRequestItem ¶
type BulkUpdateRequestItem ¶
type BulkUpdateRequestItem struct {
EditRequest
ID string `json:"_id" binding:"required"`
}
type CreateRequest ¶
type CreateRequest struct {
EditRequest
ID string `json:"_id" binding:"id"`
}
type EditRequest ¶
type EditRequest struct {
Name string `json:"name" binding:"required,max=255"`
Author string `json:"author" swaggerignore:"true"`
Enabled *bool `json:"enabled" binding:"required"`
Priority int64 `json:"priority" binding:"min=0"`
Triggers []Trigger `json:"triggers" binding:"required,notblank,dive"`
DisableDuringPeriods []string `json:"disable_during_periods" binding:"dive,oneof=maintenance pause inactive"`
Delay *datetime.DurationWithUnit `json:"delay"`
Actions []ActionRequest `json:"actions" binding:"required,notblank,dive"`
}
type FilteredQuery ¶
type FilteredQuery struct {
pagination.FilteredQuery
SortBy string `` /* 126-byte string literal not displayed */
}
type Parameters ¶
type Parameters struct {
Output string `json:"output,omitempty" bson:"output"`
ForwardAuthor *bool `json:"forward_author,omitempty" bson:"forward_author"`
Author string `json:"author,omitempty" bson:"author"`
// ChangeState
State *types.CpsNumber `json:"state,omitempty" bson:"state"`
// AssocTicket
Ticket string `json:"ticket,omitempty" bson:"ticket"`
TicketURL string `json:"ticket_url,omitempty" bson:"ticket_url"`
TicketURLTitle string `json:"ticket_url_title,omitempty" bson:"ticket_url_title"`
TicketData map[string]string `json:"ticket_data,omitempty" bson:"ticket_data"`
// AssocTicket and Webhook
TicketSystemName string `json:"ticket_system_name,omitempty" bson:"ticket_system_name"`
// Snooze and Pbehavior
Duration *datetime.DurationWithUnit `json:"duration,omitempty" bson:"duration"`
// Pbehavior
Name string `json:"name,omitempty" bson:"name"`
Reason *pbehavior.Reason `json:"reason,omitempty" bson:"reason"`
Type *pbehavior.Type `json:"type,omitempty" bson:"type"`
RRule string `json:"rrule,omitempty" bson:"rrule"`
Tstart *int64 `json:"tstart,omitempty" bson:"tstart"`
Tstop *int64 `json:"tstop,omitempty" bson:"tstop"`
StartOnTrigger *bool `json:"start_on_trigger,omitempty" bson:"start_on_trigger"`
// Webhook
webhook.Webhook `bson:",inline"`
SkipForChild *bool `json:"skip_for_child,omitempty" bson:"skip_for_child"`
SkipForInstruction *bool `json:"skip_for_instruction,omitempty" bson:"skip_for_instruction,omitempty"`
}
type Scenario ¶
type Scenario struct {
ID string `bson:"_id" json:"_id"`
Name string `bson:"name" json:"name"`
Author *author.Author `bson:"author" json:"author"`
Enabled bool `bson:"enabled" json:"enabled"`
DisableDuringPeriods []string `bson:"disable_during_periods" json:"disable_during_periods"`
Triggers []Trigger `bson:"triggers" json:"triggers"`
Actions []Action `bson:"actions" json:"actions"`
Priority int64 `bson:"priority" json:"priority"`
Delay *datetime.DurationWithUnit `bson:"delay" json:"delay"`
Created datetime.CpsTime `bson:"created,omitempty" json:"created,omitzero" swaggertype:"integer"`
Updated datetime.CpsTime `bson:"updated,omitempty" json:"updated,omitzero" swaggertype:"integer"`
}
type Store ¶
type Store interface {
Insert(ctx context.Context, r CreateRequest) (*Scenario, error)
Find(ctx context.Context, q FilteredQuery) (*AggregationResult, error)
GetOneBy(ctx context.Context, id string) (*Scenario, error)
Update(ctx context.Context, r UpdateRequest) (*Scenario, error)
Delete(ctx context.Context, id, userID string) (bool, error)
ValidateTemplates(ctx context.Context, request TemplateRequest) (map[string]template.ValidateResponse, error)
GetTemplateVars(ctx context.Context) (TemplateVarsResponse, error)
Toggle(ctx context.Context, r BulkToggleRequestItem, enabled bool) (bool, error)
}
func NewStore ¶
func NewStore( db mongo.DbClient, authorProvider author.Provider, transformer patternfields.Transformer, tplValidator tplvalidator.Validator, tplExecutor libtemplate.Executor, tplConfigProvider config.TemplateConfigProvider, encoder encoding.Encoder, decoder encoding.Decoder, ) Store
type TemplateActionParameters ¶
type TemplateActionParameters struct {
Output string `json:"output"`
Author string `json:"author"`
ForwardAuthor *bool `json:"forward_author"`
Request *template.TemplateParameters `json:"request"`
DeclareTicket *template.TemplateWebhookDeclareTicket `json:"declare_ticket"`
}
type TemplateActionRequest ¶
type TemplateActionRequest struct {
Type string `json:"type" binding:"required"`
Parameters TemplateActionParameters `json:"parameters"`
}
type TemplateRequest ¶
type TemplateRequest struct {
Rule struct {
TemplateRuleRequest
ID string `json:"_id" binding:"id"`
} `json:"rule"`
TestData struct {
Test string `json:"test"`
Event string `json:"event"`
// TestData.Responses keys correspond with Rule.Actions keys
Responses map[int]string `json:"responses"`
TicketStatusResponses map[int]string `json:"ticket_status_responses"`
} `json:"testdata"`
}
type TemplateRuleRequest ¶
type TemplateRuleRequest struct {
Name string `json:"name" binding:"required"`
Triggers []Trigger `json:"triggers" binding:"required,notblank,dive"`
Actions []TemplateActionRequest `json:"actions" binding:"required,notblank,dive"`
}
type TemplateVarsResponse ¶
type TemplateVarsResponse struct {
Output []template.VarResponse `json:"output"`
Author []template.VarResponse `json:"author"`
FirstWebhook []template.VarResponse `json:"first_webhook"`
Webhook []template.VarResponse `json:"webhook"`
Ticket []template.VarResponse `json:"ticket"`
TicketStatus []template.VarResponse `json:"ticket_status"`
}
type Trigger ¶
type Trigger struct {
// Possible trigger type values.
// * `create` - Alarm creation
// * `statedec` - Alarm state decrease
// * `changestate` - Alarm state has been changed by "change state" action
// * `stateinc` - Alarm state increase
// * `changestatus` - Alarm status changes eg. flapping
// * `ack` - Alarm has been acked
// * `ackremove` - Alarm has been unacked
// * `cancel` - Alarm has been cancelled
// * `uncancel` - Alarm has been uncancelled
// * `comment` - Alarm has been commented
// * `declareticketwebhook` - Ticket has been declared by the webhook
// * `declareticketwebhookfail` - Ticket is failed to be declared by the webhook
// * `assocticket` - Ticket has been associated with an alarm
// * `snooze` - Alarm has been snoozed
// * `unsnooze` - Alarm has been unsnoozed
// * `pbhenter` - Alarm enters a periodic behavior
// * `pbhleave` - Alarm leaves a periodic behavior
// * `activate` - Alarm has been activated
// * `resolve` - Alarm has been resolved
// * `instructionfail` - Manual instruction has failed
// * `autoinstructionfail` - Auto instruction has failed
// * `instructionjobfail` - Manual or auto instruction's job is failed
// * `instructionjobcomplete` - Manual or auto instruction's job is completed
// * `instructioncomplete` - Manual instruction is completed
// * `autoinstructioncomplete` - Auto instruction is completed
// * `autoinstructionresultok` - Alarm is in OK state after all auto instructions
// * `autoinstructionresultfail` - Alarm is in not in OK state after all auto instructions
// * `eventscount` - Alarm check events count
// * `changedoutput` - Alarm output is changed
// * `changedlongoutput` - Alarm long output is changed
Type string `` /* 449-byte string literal not displayed */
Threshold int `json:"threshold,omitempty" binding:"required_if=Type eventscount,excluded_unless=Type eventscount,omitempty,gt=1"`
}
type UpdateRequest ¶
type UpdateRequest struct {
EditRequest
ID string `json:"-"`
}
Source Files
¶
- api.go
- models.go
- store.go
- validator.go
Click to show internal directories.
Click to hide internal directories.