From 2a421731ec2b8bf3cb87581b3971d95830b7724b Mon Sep 17 00:00:00 2001 From: Or Novogroder <108669655+OrNovo@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:30:04 +0300 Subject: [PATCH] fixing alert-controller bugs and add tests (#129) * fixing alert-controller bugs and add tests --- apis/coralogix/v1alpha1/alert_types.go | 67 +++--- config/rbac/service_account.yaml | 2 +- config/samples/alerts/flow_alert_example.yaml | 2 +- config/samples/alerts/lucene_alert.yaml | 2 +- config/samples/alerts/new_value_alert.yaml | 2 +- config/samples/alerts/promql_alert.yaml | 2 +- config/samples/alerts/ratio_alert.yaml | 2 +- config/samples/alerts/standard_alert.yaml | 2 +- .../samples/alerts/time_relative_alert.yaml | 2 +- config/samples/alerts/tracing_alert.yaml | 2 +- config/samples/alerts/unique_count_alert.yaml | 2 +- config/samples/rulegroups/block.yaml | 2 +- config/samples/rulegroups/extract.yaml | 2 +- .../samples/rulegroups/extract_timestamp.yaml | 2 +- config/samples/rulegroups/json_extract.yaml | 2 +- .../samples/rulegroups/mixed_rulegroup.yaml | 2 +- config/samples/rulegroups/parse.yaml | 2 +- .../samples/rulegroups/parse_json_field.yaml | 2 +- config/samples/rulegroups/remove_fields.yaml | 2 +- config/samples/rulegroups/replace.yaml | 2 +- .../rulegroups/stringify_json_field.yaml | 2 +- .../alphacontrollers/alert_controller.go | 215 ++++++++---------- .../alphacontrollers/alert_controller_test.go | 62 +++-- controllers/alphacontrollers/utils.go | 2 +- tests/e2e/alerts/flow/flow_alert_example.yaml | 2 +- tests/e2e/alerts/lucene/00-assert.yaml | 2 +- .../e2e/alerts/lucene/00-lucene-install.yaml | 2 +- tests/e2e/alerts/lucene/01-assert.yaml | 58 +++++ .../lucene/{00-delete.yaml => 01-delete.yaml} | 0 .../e2e/alerts/lucene/01-lucene-install.yaml | 50 ++++ tests/e2e/alerts/new-value/00-assert.yaml | 3 +- .../new-value/00-new-value-install.yaml | 2 +- tests/e2e/alerts/new-value/01-assert.yaml | 48 ++++ .../{00-delete.yaml => 01-delete.yaml} | 0 .../new-value/01-new-value-install.yaml | 42 ++++ tests/e2e/alerts/promql/00-assert.yaml | 2 +- .../e2e/alerts/promql/00-promql-install.yaml | 2 +- tests/e2e/alerts/promql/01-assert.yaml | 2 +- .../e2e/alerts/promql/01-promql-install.yaml | 2 +- tests/e2e/alerts/ratio/00-assert.yaml | 2 +- tests/e2e/alerts/ratio/00-ratio-install.yaml | 8 +- tests/e2e/alerts/ratio/01-assert.yaml | 61 +++++ .../ratio/{00-delete.yaml => 01-delete.yaml} | 0 tests/e2e/alerts/ratio/01-ratio-install.yaml | 58 +++++ tests/e2e/alerts/standard/00-assert.yaml | 3 +- .../alerts/standard/00-standard-install.yaml | 2 +- tests/e2e/alerts/standard/01-assert.yaml | 3 +- .../alerts/standard/01-standard-install.yaml | 2 +- tests/e2e/alerts/standard/02-assert.yaml | 3 +- .../alerts/standard/02-standard-install.yaml | 2 +- tests/e2e/alerts/standard/03-assert.yaml | 3 +- .../alerts/standard/03-standard-install.yaml | 2 +- tests/e2e/alerts/time-relative/00-assert.yaml | 2 +- .../00-time-relative-install.yaml | 2 +- tests/e2e/alerts/time-relative/01-assert.yaml | 59 +++++ .../{00-delete.yaml => 01-delete.yaml} | 0 .../01-time-relative-install.yaml | 50 ++++ tests/e2e/alerts/trace/00-assert.yaml | 2 +- .../e2e/alerts/trace/00-tracing-install.yaml | 2 +- tests/e2e/alerts/trace/01-assert.yaml | 58 +++++ .../trace/{00-delete.yaml => 01-delete.yaml} | 0 .../e2e/alerts/trace/01-tracing-install.yaml | 50 ++++ tests/e2e/alerts/unique-count/00-assert.yaml | 3 +- .../unique-count/00-unique-count-install.yaml | 2 +- tests/e2e/alerts/unique-count/01-assert.yaml | 51 +++++ .../{00-delete.yaml => 01-delete.yaml} | 0 .../unique-count/01-unique-count-install.yaml | 38 ++++ tests/e2e/rulegroups/block/00-assert.yaml | 2 +- .../rulegroups/block/00-block-install.yaml | 2 +- tests/e2e/rulegroups/extract/00-assert.yaml | 2 +- .../extract/00-extract-install.yaml | 2 +- .../rulegroups/json-extract/00-assert.yaml | 2 +- .../json-extract/00-json-extract-install.yaml | 2 +- .../mixed-rulegroups/00-assert.yaml | 2 +- .../00-mixed-rulegroup-install.yaml | 2 +- .../e2e/rulegroups/parse-json/00-assert.yaml | 2 +- .../00-parse-json-field-install.yaml | 2 +- tests/e2e/rulegroups/parse/00-assert.yaml | 2 +- .../rulegroups/parse/00-parse-install.yaml | 2 +- .../rulegroups/remove-fields/00-assert.yaml | 2 +- .../00-remove-fields-install.yaml | 2 +- tests/e2e/rulegroups/replace/00-assert.yaml | 2 +- .../replace/00-replace-install.yaml | 2 +- .../rulegroups/stringify-json/00-assert.yaml | 2 +- .../00-stringify-json-install.yaml | 2 +- tests/e2e/rulegroups/timestamp/00-assert.yaml | 2 +- .../00-extract-time-stamp-install.yaml | 2 +- 87 files changed, 861 insertions(+), 250 deletions(-) create mode 100644 tests/e2e/alerts/lucene/01-assert.yaml rename tests/e2e/alerts/lucene/{00-delete.yaml => 01-delete.yaml} (100%) create mode 100644 tests/e2e/alerts/lucene/01-lucene-install.yaml create mode 100644 tests/e2e/alerts/new-value/01-assert.yaml rename tests/e2e/alerts/new-value/{00-delete.yaml => 01-delete.yaml} (100%) create mode 100644 tests/e2e/alerts/new-value/01-new-value-install.yaml create mode 100644 tests/e2e/alerts/ratio/01-assert.yaml rename tests/e2e/alerts/ratio/{00-delete.yaml => 01-delete.yaml} (100%) create mode 100644 tests/e2e/alerts/ratio/01-ratio-install.yaml create mode 100644 tests/e2e/alerts/time-relative/01-assert.yaml rename tests/e2e/alerts/time-relative/{00-delete.yaml => 01-delete.yaml} (100%) create mode 100644 tests/e2e/alerts/time-relative/01-time-relative-install.yaml create mode 100644 tests/e2e/alerts/trace/01-assert.yaml rename tests/e2e/alerts/trace/{00-delete.yaml => 01-delete.yaml} (100%) create mode 100644 tests/e2e/alerts/trace/01-tracing-install.yaml create mode 100644 tests/e2e/alerts/unique-count/01-assert.yaml rename tests/e2e/alerts/unique-count/{00-delete.yaml => 01-delete.yaml} (100%) create mode 100644 tests/e2e/alerts/unique-count/01-unique-count-install.yaml diff --git a/apis/coralogix/v1alpha1/alert_types.go b/apis/coralogix/v1alpha1/alert_types.go index fd46bcc..5f282e1 100644 --- a/apis/coralogix/v1alpha1/alert_types.go +++ b/apis/coralogix/v1alpha1/alert_types.go @@ -28,11 +28,11 @@ import ( "github.com/coralogix/coralogix-operator/controllers/clientset" alerts "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/alerts/v2" webhooks "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" + "github.com/go-logr/logr" "google.golang.org/protobuf/types/known/wrapperspb" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/utils/ptr" - "sigs.k8s.io/controller-runtime/pkg/log" ) // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! @@ -155,8 +155,8 @@ type AlertSpec struct { AlertType AlertType `json:"alertType"` } -func (a *Alert) ExtractCreateAlertRequest(ctx context.Context) (*alerts.CreateAlertRequest, error) { - notificationGroups, err := expandNotificationGroups(ctx, a.Spec.NotificationGroups) +func (a *Alert) ExtractCreateAlertRequest(ctx context.Context, log logr.Logger) (*alerts.CreateAlertRequest, error) { + notificationGroups, err := expandNotificationGroups(ctx, log, a.Spec.NotificationGroups) if err != nil { return nil, err } @@ -992,10 +992,14 @@ func expandShowInInsight(showInInsight *ShowInInsight) *alerts.ShowInInsight { } } -func expandNotificationGroups(ctx context.Context, notificationGroups []NotificationGroup) ([]*alerts.AlertNotificationGroups, error) { +func expandNotificationGroups(ctx context.Context, log logr.Logger, notificationGroups []NotificationGroup) ([]*alerts.AlertNotificationGroups, error) { + webhooksNamesToIds, err := getWebhooksNamesToIds(ctx, log) + if err != nil { + return nil, err + } result := make([]*alerts.AlertNotificationGroups, 0, len(notificationGroups)) for i, ng := range notificationGroups { - notificationGroup, err := expandNotificationGroup(ctx, ng) + notificationGroup, err := expandNotificationGroup(ng, webhooksNamesToIds) if err != nil { return nil, fmt.Errorf("error on notificationGroups[%d] - %s", i, err.Error()) } @@ -1004,9 +1008,22 @@ func expandNotificationGroups(ctx context.Context, notificationGroups []Notifica return result, nil } -func expandNotificationGroup(ctx context.Context, notificationGroup NotificationGroup) (*alerts.AlertNotificationGroups, error) { +func getWebhooksNamesToIds(ctx context.Context, log logr.Logger) (map[string]uint32, error) { + webhooksNamesToIds := make(map[string]uint32) + log.V(1).Info("Listing all outgoing webhooks") + listWebhooksResp, err := WebhooksClient.ListAllOutgoingWebhooks(ctx, &webhooks.ListAllOutgoingWebhooksRequest{}) + if err != nil { + return nil, fmt.Errorf("failed to list all outgoing webhooks %w", err) + } + for _, webhook := range listWebhooksResp.GetDeployed() { + webhooksNamesToIds[webhook.GetName().GetValue()] = webhook.GetExternalId().GetValue() + } + return webhooksNamesToIds, nil +} + +func expandNotificationGroup(notificationGroup NotificationGroup, webhooksNameToIds map[string]uint32) (*alerts.AlertNotificationGroups, error) { groupFields := utils.StringSliceToWrappedStringSlice(notificationGroup.GroupByFields) - notifications, err := expandNotifications(ctx, notificationGroup.Notifications) + notifications, err := expandNotifications(notificationGroup.Notifications, webhooksNameToIds) if err != nil { return nil, err } @@ -1017,19 +1034,19 @@ func expandNotificationGroup(ctx context.Context, notificationGroup Notification }, nil } -func expandNotifications(ctx context.Context, notifications []Notification) ([]*alerts.AlertNotification, error) { +func expandNotifications(notifications []Notification, webhooksNameToIds map[string]uint32) ([]*alerts.AlertNotification, error) { result := make([]*alerts.AlertNotification, 0, len(notifications)) - for i, n := range notifications { - notification, err := expandNotification(ctx, n) + for i, notification := range notifications { + expandedNotification, err := expandNotification(notification, webhooksNameToIds) if err != nil { return nil, fmt.Errorf("error on notifications[%d] - %s", i, err.Error()) } - result = append(result, notification) + result = append(result, expandedNotification) } return result, nil } -func expandNotification(ctx context.Context, notification Notification) (*alerts.AlertNotification, error) { +func expandNotification(notification Notification, webhooksNameToIds map[string]uint32) (*alerts.AlertNotification, error) { retriggeringPeriodSeconds := wrapperspb.UInt32(uint32(60 * notification.RetriggeringPeriodMinutes)) notifyOn := AlertSchemaNotifyOnToProtoNotifyOn[notification.NotifyOn] @@ -1039,10 +1056,7 @@ func expandNotification(ctx context.Context, notification Notification) (*alerts } if integrationName := notification.IntegrationName; integrationName != nil { - integrationID, err := searchIntegrationID(ctx, *integrationName) - if err != nil { - return nil, err - } + integrationID, _ := webhooksNameToIds[*integrationName] result.IntegrationType = &alerts.AlertNotification_IntegrationId{ IntegrationId: wrapperspb.UInt32(integrationID), } @@ -1066,23 +1080,6 @@ func expandNotification(ctx context.Context, notification Notification) (*alerts return result, nil } -func searchIntegrationID(ctx context.Context, name string) (uint32, error) { - log := log.FromContext(ctx) - log.V(1).Info("Listing all outgoing webhooks") - listWebhooksResp, err := WebhooksClient.ListAllOutgoingWebhooks(ctx, &webhooks.ListAllOutgoingWebhooksRequest{}) - if err != nil { - log.Error(err, "Failed to list all outgoing webhooks") - return 0, err - } - - for _, webhook := range listWebhooksResp.GetDeployed() { - if webhook.GetName().GetValue() == name { - return webhook.GetExternalId().GetValue(), nil - } - } - return 0, fmt.Errorf("integration with name %s not found", name) -} - func (in *AlertSpec) DeepEqual(actualAlert *AlertStatus) (bool, utils.Diff) { if actualName := actualAlert.Name; actualName != in.Name { return false, utils.Diff{ @@ -1257,7 +1254,7 @@ func getNotificationsByIntegrationNameMap(notifications []Notification) map[stri return notificationsByIntegrationName } -func (in *AlertSpec) ExtractUpdateAlertRequest(ctx context.Context, id string) (*alerts.UpdateAlertByUniqueIdRequest, error) { +func (in *AlertSpec) ExtractUpdateAlertRequest(ctx context.Context, log logr.Logger, id string) (*alerts.UpdateAlertByUniqueIdRequest, error) { uniqueIdentifier := wrapperspb.String(id) enabled := wrapperspb.Bool(in.Active) name := wrapperspb.String(in.Name) @@ -1266,7 +1263,7 @@ func (in *AlertSpec) ExtractUpdateAlertRequest(ctx context.Context, id string) ( metaLabels := expandMetaLabels(in.Labels) expirationDate := expandExpirationDate(in.ExpirationDate) showInInsight := expandShowInInsight(in.ShowInInsight) - notificationGroups, err := expandNotificationGroups(ctx, in.NotificationGroups) + notificationGroups, err := expandNotificationGroups(ctx, log, in.NotificationGroups) if err != nil { return nil, err } diff --git a/config/rbac/service_account.yaml b/config/rbac/service_account.yaml index 19374af..1e01600 100644 --- a/config/rbac/service_account.yaml +++ b/config/rbac/service_account.yaml @@ -3,7 +3,7 @@ kind: ServiceAccount metadata: labels: app.kubernetes.io/name: serviceaccount - app.kuberentes.io/instance: controller-manager + app.kubernetes.io/instance: controller-manager app.kubernetes.io/component: rbac app.kubernetes.io/created-by: coralogix-operator app.kubernetes.io/part-of: coralogix-operator diff --git a/config/samples/alerts/flow_alert_example.yaml b/config/samples/alerts/flow_alert_example.yaml index c9c9a4a..ec3966c 100644 --- a/config/samples/alerts/flow_alert_example.yaml +++ b/config/samples/alerts/flow_alert_example.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: flow-alert-example spec: diff --git a/config/samples/alerts/lucene_alert.yaml b/config/samples/alerts/lucene_alert.yaml index f99380e..340e95a 100644 --- a/config/samples/alerts/lucene_alert.yaml +++ b/config/samples/alerts/lucene_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: lucene-alert-example spec: diff --git a/config/samples/alerts/new_value_alert.yaml b/config/samples/alerts/new_value_alert.yaml index f664793..c6d3d11 100644 --- a/config/samples/alerts/new_value_alert.yaml +++ b/config/samples/alerts/new_value_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: new-value-alert-example spec: diff --git a/config/samples/alerts/promql_alert.yaml b/config/samples/alerts/promql_alert.yaml index 24897ac..1c3fd25 100644 --- a/config/samples/alerts/promql_alert.yaml +++ b/config/samples/alerts/promql_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: promql-alert-example spec: diff --git a/config/samples/alerts/ratio_alert.yaml b/config/samples/alerts/ratio_alert.yaml index 000e507..1e8049c 100644 --- a/config/samples/alerts/ratio_alert.yaml +++ b/config/samples/alerts/ratio_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: ratio-alert-example spec: diff --git a/config/samples/alerts/standard_alert.yaml b/config/samples/alerts/standard_alert.yaml index eac7c09..3b8da0c 100644 --- a/config/samples/alerts/standard_alert.yaml +++ b/config/samples/alerts/standard_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example spec: diff --git a/config/samples/alerts/time_relative_alert.yaml b/config/samples/alerts/time_relative_alert.yaml index f36199d..93d60ec 100644 --- a/config/samples/alerts/time_relative_alert.yaml +++ b/config/samples/alerts/time_relative_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: time-relative-example spec: diff --git a/config/samples/alerts/tracing_alert.yaml b/config/samples/alerts/tracing_alert.yaml index 81de920..757946b 100644 --- a/config/samples/alerts/tracing_alert.yaml +++ b/config/samples/alerts/tracing_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: tracing-alert-example spec: diff --git a/config/samples/alerts/unique_count_alert.yaml b/config/samples/alerts/unique_count_alert.yaml index d4f94fb..78a9262 100644 --- a/config/samples/alerts/unique_count_alert.yaml +++ b/config/samples/alerts/unique_count_alert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: unique-count-alert-example spec: diff --git a/config/samples/rulegroups/block.yaml b/config/samples/rulegroups/block.yaml index 71b94f4..76f151b 100644 --- a/config/samples/rulegroups/block.yaml +++ b/config/samples/rulegroups/block.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: block-rule spec: diff --git a/config/samples/rulegroups/extract.yaml b/config/samples/rulegroups/extract.yaml index e243263..bd599fe 100644 --- a/config/samples/rulegroups/extract.yaml +++ b/config/samples/rulegroups/extract.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: extract-rule spec: diff --git a/config/samples/rulegroups/extract_timestamp.yaml b/config/samples/rulegroups/extract_timestamp.yaml index 8068cab..6b42c55 100644 --- a/config/samples/rulegroups/extract_timestamp.yaml +++ b/config/samples/rulegroups/extract_timestamp.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: extract-timestamp-rule spec: diff --git a/config/samples/rulegroups/json_extract.yaml b/config/samples/rulegroups/json_extract.yaml index d36e897..fcf913f 100644 --- a/config/samples/rulegroups/json_extract.yaml +++ b/config/samples/rulegroups/json_extract.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: json-extract-rule spec: diff --git a/config/samples/rulegroups/mixed_rulegroup.yaml b/config/samples/rulegroups/mixed_rulegroup.yaml index c466ae9..ce7fbfc 100644 --- a/config/samples/rulegroups/mixed_rulegroup.yaml +++ b/config/samples/rulegroups/mixed_rulegroup.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: mixed-rulegroupmixed-rulegroup spec: diff --git a/config/samples/rulegroups/parse.yaml b/config/samples/rulegroups/parse.yaml index 682e6f5..4c908d4 100644 --- a/config/samples/rulegroups/parse.yaml +++ b/config/samples/rulegroups/parse.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: parsing-rule spec: diff --git a/config/samples/rulegroups/parse_json_field.yaml b/config/samples/rulegroups/parse_json_field.yaml index 5768451..54bf17e 100644 --- a/config/samples/rulegroups/parse_json_field.yaml +++ b/config/samples/rulegroups/parse_json_field.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: parsing-json-field-rule spec: diff --git a/config/samples/rulegroups/remove_fields.yaml b/config/samples/rulegroups/remove_fields.yaml index 438a419..802a385 100644 --- a/config/samples/rulegroups/remove_fields.yaml +++ b/config/samples/rulegroups/remove_fields.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: remove-fields spec: diff --git a/config/samples/rulegroups/replace.yaml b/config/samples/rulegroups/replace.yaml index ab342d0..323b7af 100644 --- a/config/samples/rulegroups/replace.yaml +++ b/config/samples/rulegroups/replace.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: replace-rule spec: diff --git a/config/samples/rulegroups/stringify_json_field.yaml b/config/samples/rulegroups/stringify_json_field.yaml index a4c2000..ea2ffa1 100644 --- a/config/samples/rulegroups/stringify_json_field.yaml +++ b/config/samples/rulegroups/stringify_json_field.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: json-stringify-rule spec: diff --git a/controllers/alphacontrollers/alert_controller.go b/controllers/alphacontrollers/alert_controller.go index 510c907..c93a47d 100644 --- a/controllers/alphacontrollers/alert_controller.go +++ b/controllers/alphacontrollers/alert_controller.go @@ -20,16 +20,17 @@ import ( "context" stdErr "errors" "fmt" - "strconv" "time" webhooks "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" "github.com/go-logr/logr" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/types/known/wrapperspb" "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" + "k8s.io/utils/pointer" "k8s.io/utils/ptr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -70,12 +71,12 @@ func (r *AlertReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl var ( err error ) - log := log.FromContext(ctx).WithValues( "alert", req.NamespacedName.Name, "namespace", req.NamespacedName.Namespace, ) + log.V(1).Info("Reconciling Alert") coralogixv1alpha1.WebhooksClient = r.CoralogixClientSet.OutboundWebhooks() alert := coralogixv1alpha1.NewAlert() @@ -119,63 +120,38 @@ func (r *AlertReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl func (r *AlertReconciler) update(ctx context.Context, log logr.Logger, alert *coralogixv1alpha1.Alert) error { - remoteAlert, err := r.CoralogixClientSet.Alerts().GetAlert(ctx, &alerts.GetAlertByUniqueIdRequest{ - Id: wrapperspb.String(*alert.Status.ID), - }) + alertRequest, err := alert.Spec.ExtractUpdateAlertRequest(ctx, log, *alert.Status.ID) + if err != nil { + return fmt.Errorf("error to parse alert request: %w", err) + } + log.V(1).Info("Updating remote alert", "alert", protojson.Format(alertRequest)) + remoteUpdatedAlert, err := r.CoralogixClientSet.Alerts().UpdateAlert(ctx, alertRequest) if err != nil { if status.Code(err) == codes.NotFound { log.Info("alert not found on remote, recreating it") alert.Status = *coralogixv1alpha1.NewDefaultAlertStatus() - if err := r.Status().Update(ctx, alert); err != nil { - log.Error(err, "Error on updating alert status") - return err + if err = r.Status().Update(ctx, alert); err != nil { + return fmt.Errorf("error on updating alert status: %w", err) } - return err + return fmt.Errorf("alert not found on remote, recreating it: %w", err) } - log.Error(err, "Error on getting alert") - return err - } - - status, err := getStatus(ctx, remoteAlert.GetAlert(), alert.Spec) - if err != nil { - log.Error(err, "Error on flattening alert") - return err - } - - if equal, _ := alert.Spec.DeepEqual(&status); equal { - return nil + return fmt.Errorf("error on updating alert: %w", err) } + log.V(1).Info("Remote alert updated", "alert", protojson.Format(remoteUpdatedAlert)) - alertRequest, err := alert.Spec.ExtractUpdateAlertRequest(ctx, *alert.Status.ID) + status, err := getStatus(ctx, log, remoteUpdatedAlert.GetAlert(), alert.Spec) if err != nil { - log.Error(err, "Error to parse alert request") - return err + return fmt.Errorf("error on getting status: %w", err) } - _, err = r.CoralogixClientSet.Alerts().UpdateAlert(ctx, alertRequest) - if err != nil { - log.Error(err, "Error on remote updating alert") - return err + if err = r.Get(ctx, client.ObjectKeyFromObject(alert), alert); err != nil { + return fmt.Errorf("error on getting alert: %w", err) } - - remoteUpdatedAlert, err := r.CoralogixClientSet.Alerts().GetAlert(ctx, &alerts.GetAlertByUniqueIdRequest{ - Id: wrapperspb.String(*alert.Status.ID), - }) - if err != nil { - log.Error(err, "Error on getting updated alert") - return err - } - status, err = getStatus(ctx, remoteUpdatedAlert.GetAlert(), alert.Spec) - if err != nil { - log.Error(err, "Error on getting status") - return err - } - alert.Status = status - if err = r.Update(ctx, alert); err != nil { - log.Error(err, "Error on updating alert status") - return err + + if err = r.Status().Update(ctx, alert); err != nil { + return fmt.Errorf("error on updating alert status: %w", err) } return nil @@ -185,20 +161,18 @@ func (r *AlertReconciler) delete(ctx context.Context, log logr.Logger, alert *coralogixv1alpha1.Alert) error { + log.V(1).Info("Deleting remote alert", "alert", *alert.Status.ID) _, err := r.CoralogixClientSet.Alerts().DeleteAlert(ctx, &alerts.DeleteAlertByUniqueIdRequest{ Id: wrapperspb.String(*alert.Status.ID), }) - if err != nil && status.Code(err) != codes.NotFound { - log.Error(err, "Error on deleting alert") - return err + return fmt.Errorf("error on deleting alert: %w", err) } + log.V(1).Info("Remote alert deleted", "alert", *alert.Status.ID) controllerutil.RemoveFinalizer(alert, alertFinalizerName) - err = r.Update(ctx, alert) - if err != nil { - log.Error(err, "Error on updating alert after deletion") - return err + if err = r.Update(ctx, alert); err != nil { + return fmt.Errorf("error on updating alert: %w", err) } return nil @@ -217,43 +191,49 @@ func (r *AlertReconciler) create( alert.Spec.Labels["managed-by"] = "coralogix-operator" } - alertRequest, err := alert.ExtractCreateAlertRequest(ctx) + if err := r.Update(ctx, alert); err != nil { + return fmt.Errorf("error on updating alert: %w", err) + } + + alertRequest, err := alert.ExtractCreateAlertRequest(ctx, log) if err != nil { - log.Error(err, "Error to create alert request") - return err + return fmt.Errorf("error to parse alert request: %w", err) } + log.V(1).Info("Creating remote alert", "alert", protojson.Format(alertRequest)) response, err := r.CoralogixClientSet.Alerts().CreateAlert(ctx, alertRequest) if err != nil { - log.Error(err, "Received an error while creating Alert") - return err + return fmt.Errorf("error on creating alert: %w", err) } + log.V(1).Info("Remote alert created", "response", protojson.Format(response)) - status, err := getStatus(ctx, response.GetAlert(), alert.Spec) - if err != nil { - log.Error(err, "Received an error while getting status") - return err + if err = r.Get(ctx, client.ObjectKeyFromObject(alert), alert); err != nil { + return fmt.Errorf("error on getting alert: %w", err) } - alert.Status = status - if err := r.Status().Update(ctx, alert); err != nil { - log.Error(err, "Error on updating alert status") - return err + alert.Status.ID = pointer.String(response.GetAlert().GetUniqueIdentifier().GetValue()) + if err = r.Update(ctx, alert); err != nil { + return fmt.Errorf("error on updating alert: %w", err) + } + + if alert.Status, err = getStatus(ctx, log, response.GetAlert(), alert.Spec); err != nil { + return fmt.Errorf("error on getting status: %w", err) + } + if err = r.Status().Update(ctx, alert); err != nil { + return fmt.Errorf("error on updating alert status: %w", err) } if !controllerutil.ContainsFinalizer(alert, alertFinalizerName) { controllerutil.AddFinalizer(alert, alertFinalizerName) } - - if err := r.Client.Update(ctx, alert); err != nil { - log.Error(err, "Error on updating alert") - return err + if err = r.Client.Update(ctx, alert); err != nil { + return fmt.Errorf("error on updating alert: %w", err) } return nil } -func getStatus(ctx context.Context, actualAlert *alerts.Alert, spec coralogixv1alpha1.AlertSpec) (coralogixv1alpha1.AlertStatus, error) { +func getStatus(ctx context.Context, log logr.Logger, actualAlert *alerts.Alert, spec coralogixv1alpha1.AlertSpec) (coralogixv1alpha1.AlertStatus, error) { if actualAlert == nil { return coralogixv1alpha1.AlertStatus{}, stdErr.New("alert is nil") } @@ -261,8 +241,7 @@ func getStatus(ctx context.Context, actualAlert *alerts.Alert, spec coralogixv1a var status coralogixv1alpha1.AlertStatus var err error - status.ID = new(string) - *status.ID = actualAlert.GetUniqueIdentifier().GetValue() + status.ID = utils.WrapperspbStringToStringPointer(actualAlert.GetUniqueIdentifier()) status.Name = actualAlert.GetName().GetValue() @@ -285,7 +264,7 @@ func getStatus(ctx context.Context, actualAlert *alerts.Alert, spec coralogixv1a status.AlertType = flattenAlertType(actualAlert) - if notificationGroups, flattenErr := flattenNotificationGroups(ctx, actualAlert.GetNotificationGroups()); flattenErr != nil { + if notificationGroups, flattenErr := flattenNotificationGroups(ctx, log, actualAlert.GetNotificationGroups()); flattenErr != nil { err = stdErr.Join(err, fmt.Errorf("error on flatten alert - %w", flattenErr)) } else { status.NotificationGroups = notificationGroups @@ -346,15 +325,9 @@ func flattenFilters(filters *alerts.AlertFilters) *coralogixv1alpha1.Filters { var flattenedFilters = &coralogixv1alpha1.Filters{} - if actualSearchQuery := filters.GetText(); actualSearchQuery != nil { - flattenedFilters.SearchQuery = new(string) - *flattenedFilters.SearchQuery = actualSearchQuery.GetValue() - } + flattenedFilters.SearchQuery = utils.WrapperspbStringToStringPointer(filters.GetText()) - if actualAlias := filters.GetAlias(); actualAlias == nil { - flattenedFilters.Alias = new(string) - *flattenedFilters.Alias = actualAlias.GetValue() - } + flattenedFilters.Alias = utils.WrapperspbStringToStringPointer(filters.GetAlias()) flattenedFilters.Severities = flattenSeverities(filters.GetSeverities()) @@ -430,7 +403,7 @@ func flattenStandardCondition(condition *alerts.AlertCondition) coralogixv1alpha } else { autoRetireRatio := coralogixv1alpha1.AutoRetireRatioNever standardCondition.ManageUndetectedValues = &coralogixv1alpha1.ManageUndetectedValues{ - EnableTriggeringOnUndetectedValues: true, + EnableTriggeringOnUndetectedValues: false, AutoRetireRatio: &autoRetireRatio, } } @@ -477,14 +450,9 @@ func flattenRatioFilters(filters *alerts.AlertFilters_RatioAlert) coralogixv1alp return flattenedFilters } - if actualSearchQuery := filters.GetText(); actualSearchQuery != nil { - flattenedFilters.SearchQuery = new(string) - *flattenedFilters.SearchQuery = actualSearchQuery.GetValue() - } + flattenedFilters.SearchQuery = utils.WrapperspbStringToStringPointer(filters.GetText()) - if actualAlias := filters.GetAlias(); actualAlias == nil { - *flattenedFilters.Alias = actualAlias.GetValue() - } + flattenedFilters.Alias = utils.WrapperspbStringToStringPointer(filters.GetAlias()) flattenedFilters.Severities = flattenSeverities(filters.GetSeverities()) flattenedFilters.Subsystems = utils.WrappedStringSliceToStringSlice(filters.GetSubsystems()) @@ -512,7 +480,7 @@ func flattenRatioCondition(condition *alerts.AlertCondition, groupByQ2 []*wrappe } else { autoRetireRatio := coralogixv1alpha1.AutoRetireRatioNever ratioCondition.ManageUndetectedValues = &coralogixv1alpha1.ManageUndetectedValues{ - EnableTriggeringOnUndetectedValues: true, + EnableTriggeringOnUndetectedValues: false, AutoRetireRatio: &autoRetireRatio, } } @@ -602,7 +570,7 @@ func flattenTimeRelativeCondition(condition *alerts.AlertCondition) coralogixv1a } else { autoRetireRatio := coralogixv1alpha1.AutoRetireRatioNever timeRelativeCondition.ManageUndetectedValues = &coralogixv1alpha1.ManageUndetectedValues{ - EnableTriggeringOnUndetectedValues: true, + EnableTriggeringOnUndetectedValues: false, AutoRetireRatio: &autoRetireRatio, } } @@ -677,7 +645,7 @@ func flattenPromqlAlert(conditionParams *alerts.ConditionParameters, promqlParam } else { autoRetireRatio := coralogixv1alpha1.AutoRetireRatioNever promql.Conditions.ManageUndetectedValues = &coralogixv1alpha1.ManageUndetectedValues{ - EnableTriggeringOnUndetectedValues: true, + EnableTriggeringOnUndetectedValues: false, AutoRetireRatio: &autoRetireRatio, } } @@ -723,7 +691,7 @@ func flattenLuceneAlert(conditionParams *alerts.ConditionParameters, searchQuery } else { autoRetireRatio := coralogixv1alpha1.AutoRetireRatioNever lucene.Conditions.ManageUndetectedValues = &coralogixv1alpha1.ManageUndetectedValues{ - EnableTriggeringOnUndetectedValues: true, + EnableTriggeringOnUndetectedValues: false, AutoRetireRatio: &autoRetireRatio, } } @@ -1010,49 +978,51 @@ func flattenDaysOfWeek(daysOfWeek []alerts.DayOfWeek, daysOffset int32) []coralo return result } -func flattenNotificationGroups(ctx context.Context, notificationGroups []*alerts.AlertNotificationGroups) ([]coralogixv1alpha1.NotificationGroup, error) { +func flattenNotificationGroups(ctx context.Context, log logr.Logger, notificationGroups []*alerts.AlertNotificationGroups) ([]coralogixv1alpha1.NotificationGroup, error) { result := make([]coralogixv1alpha1.NotificationGroup, 0, len(notificationGroups)) - var err error + webhooksIdsToNames, err := getWebhooksIdsToNames(ctx, log) + if err != nil { + return nil, fmt.Errorf("error on get webhooks ids to names - %w", err) + } + for _, ng := range notificationGroups { - notificationGroup, flattenErr := flattenNotificationGroup(ctx, ng) - if flattenErr != nil { - err = stdErr.Join(err, fmt.Errorf("error on flatten notification-groups - %w", flattenErr)) - continue - } + notificationGroup := flattenNotificationGroup(ng, webhooksIdsToNames) result = append(result, *notificationGroup) } return result, err } -func flattenNotificationGroup(ctx context.Context, notificationGroup *alerts.AlertNotificationGroups) (*coralogixv1alpha1.NotificationGroup, error) { - groupByFields := utils.WrappedStringSliceToStringSlice(notificationGroup.GroupByFields) - notifications, err := flattenNotifications(ctx, notificationGroup.Notifications) +func getWebhooksIdsToNames(ctx context.Context, log logr.Logger) (map[uint32]string, error) { + log.V(1).Info("get all webhooks") + webhooks, err := coralogixv1alpha1.WebhooksClient.ListAllOutgoingWebhooks(ctx, &webhooks.ListAllOutgoingWebhooksRequest{}) if err != nil { - return nil, fmt.Errorf("error on flatten notification-group - %s", err.Error()) + return nil, fmt.Errorf("error on get all webhooks - %w", err) } + webhooksIdsToNames := make(map[uint32]string) + for _, webhook := range webhooks.Deployed { + webhooksIdsToNames[webhook.GetExternalId().GetValue()] = webhook.GetName().GetValue() + } + return webhooksIdsToNames, nil +} +func flattenNotificationGroup(notificationGroup *alerts.AlertNotificationGroups, webhooksIdsToNames map[uint32]string) *coralogixv1alpha1.NotificationGroup { return &coralogixv1alpha1.NotificationGroup{ - GroupByFields: groupByFields, - Notifications: notifications, - }, nil + GroupByFields: utils.WrappedStringSliceToStringSlice(notificationGroup.GroupByFields), + Notifications: flattenNotifications(notificationGroup.Notifications, webhooksIdsToNames), + } } -func flattenNotifications(ctx context.Context, notifications []*alerts.AlertNotification) ([]coralogixv1alpha1.Notification, error) { +func flattenNotifications(notifications []*alerts.AlertNotification, webhooksIdsToNames map[uint32]string) []coralogixv1alpha1.Notification { result := make([]coralogixv1alpha1.Notification, 0, len(notifications)) - var err error for _, notification := range notifications { - flattenedNotification, flattenErr := flattenNotification(ctx, notification) - if flattenErr != nil { - err = stdErr.Join(err, fmt.Errorf("error on flatten notifications - %w", flattenErr)) - continue - } + flattenedNotification := flattenNotification(notification, webhooksIdsToNames) result = append(result, flattenedNotification) } - return result, err + return result } -func flattenNotification(ctx context.Context, notification *alerts.AlertNotification) (coralogixv1alpha1.Notification, error) { +func flattenNotification(notification *alerts.AlertNotification, webhooksIdsToNames map[uint32]string) coralogixv1alpha1.Notification { notifyOn := alertProtoNotifyOn[notification.GetNotifyOn()] retriggeringPeriodMinutes := int32(notification.GetRetriggeringPeriodSeconds().GetValue()) / 60 flattenedNotification := coralogixv1alpha1.Notification{ @@ -1062,20 +1032,13 @@ func flattenNotification(ctx context.Context, notification *alerts.AlertNotifica switch integration := notification.GetIntegrationType().(type) { case *alerts.AlertNotification_IntegrationId: - log := log.FromContext(ctx) - id := strconv.Itoa(int(integration.IntegrationId.GetValue())) - log.V(1).Info("get webhook", "id", id) - webhook, err := coralogixv1alpha1.WebhooksClient.GetOutboundWebhook(ctx, &webhooks.GetOutgoingWebhookRequest{Id: wrapperspb.String(id)}) - if err != nil { - log.Error(err, "error on get webhook") - return flattenedNotification, fmt.Errorf("error on get webhook - %w", err) - } - flattenedNotification.IntegrationName = utils.WrapperspbStringToStringPointer(webhook.GetWebhook().GetName()) + webhookName, _ := webhooksIdsToNames[integration.IntegrationId.GetValue()] + flattenedNotification.IntegrationName = pointer.String(webhookName) case *alerts.AlertNotification_Recipients: flattenedNotification.EmailRecipients = utils.WrappedStringSliceToStringSlice(integration.Recipients.Emails) } - return flattenedNotification, nil + return flattenedNotification } func flattenShowInInsight(showInInsight *alerts.ShowInInsight) *coralogixv1alpha1.ShowInInsight { diff --git a/controllers/alphacontrollers/alert_controller_test.go b/controllers/alphacontrollers/alert_controller_test.go index fb67549..55d41c2 100644 --- a/controllers/alphacontrollers/alert_controller_test.go +++ b/controllers/alphacontrollers/alert_controller_test.go @@ -7,6 +7,7 @@ import ( utils "github.com/coralogix/coralogix-operator/apis" coralogixv1alpha1 "github.com/coralogix/coralogix-operator/apis/coralogix/v1alpha1" alerts "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/alerts/v2" + webhooks "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" "github.com/coralogix/coralogix-operator/controllers/mock_clientset" "github.com/stretchr/testify/assert" "go.uber.org/mock/gomock" @@ -21,6 +22,7 @@ import ( "k8s.io/utils/pointer" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/log/zap" ) @@ -175,9 +177,13 @@ func TestAlertCreation(t *testing.T) { Return(&alerts.GetAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) - params.alertsClient.EXPECT().CreateAlert(params.ctx, gomock.Any()). + params.webhooksClient.EXPECT().ListAllOutgoingWebhooks(gomock.Any(), gomock.Any()). + Return(&webhooks.ListAllOutgoingWebhooksResponse{}, nil).AnyTimes() + + params.alertsClient.EXPECT().CreateAlert(gomock.Any(), gomock.Any()). Return(&alerts.CreateAlertResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) + }, }, } @@ -198,7 +204,7 @@ func TestAlertCreation(t *testing.T) { // Preparing common mocks. clientSet.EXPECT().Alerts().MaxTimes(1).MinTimes(1).Return(alertsClient) - clientSet.EXPECT().OutboundWebhooks().Return(webhooksClient).AnyTimes() + clientSet.EXPECT().OutboundWebhooks().MaxTimes(1).MinTimes(1).Return(webhooksClient) ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -354,21 +360,30 @@ func TestAlertUpdate(t *testing.T) { }, prepare: func(params PrepareParams) { params.alertsClient.EXPECT(). - GetAlert(params.ctx, gomock.Any()). + GetAlert(params.ctx, coralogixv1alpha1.NewAlert()). Return(&alerts.GetAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) + params.webhooksClient.EXPECT().ListAllOutgoingWebhooks(params.ctx, gomock.Any()). + Return(&webhooks.ListAllOutgoingWebhooksResponse{}, nil). + MinTimes(1).MaxTimes(2) + params.alertsClient.EXPECT().CreateAlert(params.ctx, gomock.Any()). Return(&alerts.CreateAlertResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) - params.alertsClient.EXPECT().UpdateAlert(params.ctx, gomock.Any()). - Return(&alerts.UpdateAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). + params.alertsClient.EXPECT(). + GetAlert(params.ctx, gomock.Any()). + Return(&alerts.GetAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) - params.alertsClient.EXPECT().GetAlert(params.ctx, gomock.Any()). - Return(&alerts.GetAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). + params.webhooksClient.EXPECT().ListAllOutgoingWebhooks(params.ctx, gomock.Any()). + Return(&webhooks.ListAllOutgoingWebhooksResponse{}, nil). MinTimes(1).MaxTimes(2) + + params.alertsClient.EXPECT().UpdateAlert(params.ctx, gomock.Any()). + Return(&alerts.UpdateAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). + MinTimes(1).MaxTimes(1) }, }, { @@ -417,16 +432,20 @@ func TestAlertUpdate(t *testing.T) { Return(&alerts.GetAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) - params.alertsClient.EXPECT().CreateAlert(params.ctx, gomock.Any()). + params.webhooksClient.EXPECT().ListAllOutgoingWebhooks(gomock.Any(), gomock.Any()). + Return(&webhooks.ListAllOutgoingWebhooksResponse{}, nil). + MinTimes(1).MaxTimes(2) + + params.alertsClient.EXPECT().CreateAlert(gomock.Any(), gomock.Any()). Return(&alerts.CreateAlertResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) - params.alertsClient.EXPECT().UpdateAlert(params.ctx, gomock.Any()). - Return(&alerts.UpdateAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). - MinTimes(1).MaxTimes(1) + params.webhooksClient.EXPECT().ListAllOutgoingWebhooks(gomock.Any(), gomock.Any()). + Return(&webhooks.ListAllOutgoingWebhooksResponse{}, nil). + MinTimes(1).MaxTimes(2) - params.alertsClient.EXPECT().GetAlert(params.ctx, gomock.Any()). - Return(&alerts.GetAlertByUniqueIdResponse{Alert: params.remoteAlert}, status.Error(codes.NotFound, "")). + params.alertsClient.EXPECT().UpdateAlert(gomock.Any(), gomock.Any()). + Return(nil, status.Error(codes.NotFound, "")). MinTimes(1).MaxTimes(1) }, }, @@ -627,6 +646,10 @@ func TestAlertDelete(t *testing.T) { Return(&alerts.GetAlertByUniqueIdResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) + params.webhooksClient.EXPECT().ListAllOutgoingWebhooks(params.ctx, gomock.Any()). + Return(&webhooks.ListAllOutgoingWebhooksResponse{}, nil). + MinTimes(1).MaxTimes(2) + params.alertsClient.EXPECT().CreateAlert(params.ctx, gomock.Any()). Return(&alerts.CreateAlertResponse{Alert: params.remoteAlert}, nil). MinTimes(1).MaxTimes(1) @@ -753,7 +776,18 @@ func TestFlattenAlerts(t *testing.T) { TimeZone: coralogixv1alpha1.TimeZone("UTC+02"), }, } - status, err := getStatus(context.Background(), alert, spec) + + ctx := context.Background() + log := log.FromContext(ctx) + + controller := gomock.NewController(t) + defer controller.Finish() + + webhookMock := mock_clientset.NewMockOutboundWebhooksClientInterface(controller) + webhookMock.EXPECT().ListAllOutgoingWebhooks(ctx, gomock.Any()).Return(&webhooks.ListAllOutgoingWebhooksResponse{}, nil).AnyTimes() + coralogixv1alpha1.WebhooksClient = webhookMock + + status, err := getStatus(ctx, log, alert, spec) assert.NoError(t, err) expected := &coralogixv1alpha1.AlertStatus{ diff --git a/controllers/alphacontrollers/utils.go b/controllers/alphacontrollers/utils.go index 6f5bebc..b95699a 100644 --- a/controllers/alphacontrollers/utils.go +++ b/controllers/alphacontrollers/utils.go @@ -5,5 +5,5 @@ import ( ) const ( - defaultErrRequeuePeriod = 30 * time.Second + defaultErrRequeuePeriod = 60 * time.Second ) diff --git a/tests/e2e/alerts/flow/flow_alert_example.yaml b/tests/e2e/alerts/flow/flow_alert_example.yaml index c323659..13b76cd 100644 --- a/tests/e2e/alerts/flow/flow_alert_example.yaml +++ b/tests/e2e/alerts/flow/flow_alert_example.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: flow-alert-example spec: diff --git a/tests/e2e/alerts/lucene/00-assert.yaml b/tests/e2e/alerts/lucene/00-assert.yaml index 74676d1..ffd4a7d 100644 --- a/tests/e2e/alerts/lucene/00-assert.yaml +++ b/tests/e2e/alerts/lucene/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: lucene-alert-example status: diff --git a/tests/e2e/alerts/lucene/00-lucene-install.yaml b/tests/e2e/alerts/lucene/00-lucene-install.yaml index c9adc58..acdf13b 100644 --- a/tests/e2e/alerts/lucene/00-lucene-install.yaml +++ b/tests/e2e/alerts/lucene/00-lucene-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: lucene-alert-example spec: diff --git a/tests/e2e/alerts/lucene/01-assert.yaml b/tests/e2e/alerts/lucene/01-assert.yaml new file mode 100644 index 0000000..a615979 --- /dev/null +++ b/tests/e2e/alerts/lucene/01-assert.yaml @@ -0,0 +1,58 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: lucene-alert-example +status: + active: true + alertType: + metric: + lucene: + conditions: + alertWhen: Less + arithmeticOperator: Percentile + arithmeticOperatorModifier: 20 + groupBy: + - coralogix.metadata.sdkId + manageUndetectedValues: + autoRetireRatio: Never + enableTriggeringOnUndetectedValues: true + metricField: subsystem + replaceMissingValueWithZero: false + sampleThresholdPercentage: 50 + threshold: "50" + timeWindow: ThirtyMinutes + searchQuery: name:\"Frontend transactions\" + description: updated alert from k8s operator + name: lucene alert example + labels: + managed-by: coralogix-operator + # notificationGroups: + # - notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + # - groupByFields: [ "coralogix.metadata.sdkId" ] + # notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example2@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: + - Wednesday + - Thursday + endTime: "20:30" + startTime: "08:30" + timeZone: UTC+02 + severity: Critical diff --git a/tests/e2e/alerts/lucene/00-delete.yaml b/tests/e2e/alerts/lucene/01-delete.yaml similarity index 100% rename from tests/e2e/alerts/lucene/00-delete.yaml rename to tests/e2e/alerts/lucene/01-delete.yaml diff --git a/tests/e2e/alerts/lucene/01-lucene-install.yaml b/tests/e2e/alerts/lucene/01-lucene-install.yaml new file mode 100644 index 0000000..3017d28 --- /dev/null +++ b/tests/e2e/alerts/lucene/01-lucene-install.yaml @@ -0,0 +1,50 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: lucene-alert-example +spec: + name: lucene alert example + description: updated alert from k8s operator + severity: Critical + notificationGroups: + - notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + - groupByFields: [ "coralogix.metadata.sdkId" ] + notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example2@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: ["Wednesday", "Thursday"] + timeZone: UTC+02 + startTime: 08:30 + endTime: 20:30 + alertType: + metric: + lucene: + searchQuery: name:\"Frontend transactions\" + conditions: + metricField: subsystem + arithmeticOperator: Percentile + arithmeticOperatorModifier: 20 + alertWhen: Less + groupBy: ["coralogix.metadata.sdkId"] + threshold: 50 + sampleThresholdPercentage: 50 + timeWindow: ThirtyMinutes + manageUndetectedValues: + enableTriggeringOnUndetectedValues: false diff --git a/tests/e2e/alerts/new-value/00-assert.yaml b/tests/e2e/alerts/new-value/00-assert.yaml index 9798ef1..5e94907 100644 --- a/tests/e2e/alerts/new-value/00-assert.yaml +++ b/tests/e2e/alerts/new-value/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: new-value-alert-example status: @@ -16,7 +16,6 @@ status: key: remote_addr_geoip.country_name timeWindow: TwelveHours filters: - alias: "" severities: - Error description: alert from k8s operator diff --git a/tests/e2e/alerts/new-value/00-new-value-install.yaml b/tests/e2e/alerts/new-value/00-new-value-install.yaml index 7afda60..a86e1b9 100644 --- a/tests/e2e/alerts/new-value/00-new-value-install.yaml +++ b/tests/e2e/alerts/new-value/00-new-value-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: new-value-alert-example spec: diff --git a/tests/e2e/alerts/new-value/01-assert.yaml b/tests/e2e/alerts/new-value/01-assert.yaml new file mode 100644 index 0000000..231a489 --- /dev/null +++ b/tests/e2e/alerts/new-value/01-assert.yaml @@ -0,0 +1,48 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: new-value-alert-example +status: + active: true + alertType: + newValue: + conditions: + key: remote_addr_geoip.city_name + timeWindow: TwentyFourHours + filters: + severities: + - Error + description: alert from k8s operator + name: new-value alert example + labels: + managed-by: coralogix-operator + # notificationGroups: + # - notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + # - groupByFields: [ "coralogix.metadata.sdkId" ] + # notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example2@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: + - Wednesday + - Thursday + endTime: "20:30" + startTime: "08:30" + timeZone: UTC+02 + severity: Critical diff --git a/tests/e2e/alerts/new-value/00-delete.yaml b/tests/e2e/alerts/new-value/01-delete.yaml similarity index 100% rename from tests/e2e/alerts/new-value/00-delete.yaml rename to tests/e2e/alerts/new-value/01-delete.yaml diff --git a/tests/e2e/alerts/new-value/01-new-value-install.yaml b/tests/e2e/alerts/new-value/01-new-value-install.yaml new file mode 100644 index 0000000..aa3e6a8 --- /dev/null +++ b/tests/e2e/alerts/new-value/01-new-value-install.yaml @@ -0,0 +1,42 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: new-value-alert-example +spec: + name: new-value alert example + description: alert from k8s operator + severity: Critical + notificationGroups: + - notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + - groupByFields: [ "remote_addr_geoip.city_name" ] + notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example2@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: ["Wednesday", "Thursday"] + timeZone: UTC+02 + startTime: 08:30 + endTime: 20:30 + alertType: + newValue: + filters: + severities: ["Error"] + conditions: + key: remote_addr_geoip.city_name + timeWindow: "TwentyFourHours" diff --git a/tests/e2e/alerts/promql/00-assert.yaml b/tests/e2e/alerts/promql/00-assert.yaml index e2d8cad..74c5d34 100644 --- a/tests/e2e/alerts/promql/00-assert.yaml +++ b/tests/e2e/alerts/promql/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: promql-alert-example status: diff --git a/tests/e2e/alerts/promql/00-promql-install.yaml b/tests/e2e/alerts/promql/00-promql-install.yaml index 6f48c2b..37ae33e 100644 --- a/tests/e2e/alerts/promql/00-promql-install.yaml +++ b/tests/e2e/alerts/promql/00-promql-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: promql-alert-example spec: diff --git a/tests/e2e/alerts/promql/01-assert.yaml b/tests/e2e/alerts/promql/01-assert.yaml index 614ecc0..d8b6939 100644 --- a/tests/e2e/alerts/promql/01-assert.yaml +++ b/tests/e2e/alerts/promql/01-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: promql-alert-example-2 status: diff --git a/tests/e2e/alerts/promql/01-promql-install.yaml b/tests/e2e/alerts/promql/01-promql-install.yaml index d4dcb06..953f625 100644 --- a/tests/e2e/alerts/promql/01-promql-install.yaml +++ b/tests/e2e/alerts/promql/01-promql-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: promql-alert-example-2 spec: diff --git a/tests/e2e/alerts/ratio/00-assert.yaml b/tests/e2e/alerts/ratio/00-assert.yaml index df71897..e621b5b 100644 --- a/tests/e2e/alerts/ratio/00-assert.yaml +++ b/tests/e2e/alerts/ratio/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: ratio-alert-example status: diff --git a/tests/e2e/alerts/ratio/00-ratio-install.yaml b/tests/e2e/alerts/ratio/00-ratio-install.yaml index 000e507..829d92d 100644 --- a/tests/e2e/alerts/ratio/00-ratio-install.yaml +++ b/tests/e2e/alerts/ratio/00-ratio-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: ratio-alert-example spec: @@ -53,6 +53,6 @@ spec: timeWindow: TenMinutes groupBy: ["coralogix.metadata.sdkId"] groupByFor: Q1 -# manageUndetectedValues: -# enableTriggeringOnUndetectedValues: true -# autoRetireRatio: FiveMinutes + manageUndetectedValues: + enableTriggeringOnUndetectedValues: false + autoRetireRatio: Never diff --git a/tests/e2e/alerts/ratio/01-assert.yaml b/tests/e2e/alerts/ratio/01-assert.yaml new file mode 100644 index 0000000..3b44fb7 --- /dev/null +++ b/tests/e2e/alerts/ratio/01-assert.yaml @@ -0,0 +1,61 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: ratio-alert-example +status: + active: true + name: ratio alert example + description: alert from k8s operator + severity: Critical + labels: + managed-by: coralogix-operator +# notificationGroups: +# - notifications: +# - notifyOn: TriggeredOnly +# integrationName: WebhookAlerts +# retriggeringPeriodMinutes: 1 +# - notifyOn: TriggeredAndResolved +# emailRecipients: [ "example@coralogix.com" ] +# retriggeringPeriodMinutes: 1440 +# - groupByFields: [ "coralogix.metadata.sdkId" ] +# notifications: +# - notifyOn: TriggeredOnly +# integrationName: WebhookAlerts +# retriggeringPeriodMinutes: 1 +# - notifyOn: TriggeredAndResolved +# emailRecipients: [ "example2@coralogix.com" ] +# retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: [ "Wednesday", "Thursday" ] + timeZone: UTC+02 + startTime: 08:30 + endTime: 20:30 + alertType: + ratio: + q1Filters: + alias: Q1-updated + searchQuery: remote_addr_enriched:/.*/ + applications: [ "filter:contains:nginx" ] + subsystems: [ "filter:startsWith:subsystem-name" ] + severities: [ "Warning", "Info" ] + q2Filters: + alias: Q2-updated + searchQuery: remote_addr_enriched:/.*/ + applications: [ "filter:contains:nginx" ] + subsystems: [ "filter:startsWith:updated-subsystem-name" ] + severities: [ "Critical", "Warning" ] + conditions: + alertWhen: Less + ratio: "2" + timeWindow: TenMinutes + groupBy: [ "coralogix.metadata.sdkId" ] + groupByFor: Q1 + manageUndetectedValues: + enableTriggeringOnUndetectedValues: true + autoRetireRatio: TwelveHours diff --git a/tests/e2e/alerts/ratio/00-delete.yaml b/tests/e2e/alerts/ratio/01-delete.yaml similarity index 100% rename from tests/e2e/alerts/ratio/00-delete.yaml rename to tests/e2e/alerts/ratio/01-delete.yaml diff --git a/tests/e2e/alerts/ratio/01-ratio-install.yaml b/tests/e2e/alerts/ratio/01-ratio-install.yaml new file mode 100644 index 0000000..3daec2e --- /dev/null +++ b/tests/e2e/alerts/ratio/01-ratio-install.yaml @@ -0,0 +1,58 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: ratio-alert-example +spec: + name: ratio alert example + description: alert from k8s operator + severity: Critical + notificationGroups: + - notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + - groupByFields: [ "coralogix.metadata.sdkId" ] + notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example2@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: ["Wednesday", "Thursday"] + timeZone: UTC+02 + startTime: 08:30 + endTime: 20:30 + alertType: + ratio: + q1Filters: + alias: Q1-updated + searchQuery: remote_addr_enriched:/.*/ + applications: ["filter:contains:nginx"] + subsystems: ["filter:startsWith:subsystem-name"] + severities: ["Warning", "Info"] + q2Filters: + alias: Q2-updated + searchQuery: remote_addr_enriched:/.*/ + applications: ["filter:contains:nginx"] + subsystems: ["filter:startsWith:updated-subsystem-name"] + severities: ["Critical", "Warning"] + conditions: + alertWhen: Less + ratio: 2 + timeWindow: TenMinutes + groupBy: ["coralogix.metadata.sdkId"] + groupByFor: Q1 + manageUndetectedValues: + enableTriggeringOnUndetectedValues: true + autoRetireRatio: TwelveHours diff --git a/tests/e2e/alerts/standard/00-assert.yaml b/tests/e2e/alerts/standard/00-assert.yaml index f1ae692..1cafc63 100644 --- a/tests/e2e/alerts/standard/00-assert.yaml +++ b/tests/e2e/alerts/standard/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example status: @@ -19,7 +19,6 @@ status: threshold: 5 timeWindow: FiveMinutes filters: - alias: "" applications: - filter:contains:nginx searchQuery: remote_addr_enriched:/.*/ diff --git a/tests/e2e/alerts/standard/00-standard-install.yaml b/tests/e2e/alerts/standard/00-standard-install.yaml index e7d81c4..e25772f 100644 --- a/tests/e2e/alerts/standard/00-standard-install.yaml +++ b/tests/e2e/alerts/standard/00-standard-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example spec: diff --git a/tests/e2e/alerts/standard/01-assert.yaml b/tests/e2e/alerts/standard/01-assert.yaml index b0f47b2..ef60f2e 100644 --- a/tests/e2e/alerts/standard/01-assert.yaml +++ b/tests/e2e/alerts/standard/01-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example-01 status: @@ -19,7 +19,6 @@ status: threshold: 5 timeWindow: FiveMinutes filters: - alias: "" applications: - filter:contains:nginx searchQuery: remote_addr_enriched:/.*/ diff --git a/tests/e2e/alerts/standard/01-standard-install.yaml b/tests/e2e/alerts/standard/01-standard-install.yaml index 30fbbd4..b8c9b24 100644 --- a/tests/e2e/alerts/standard/01-standard-install.yaml +++ b/tests/e2e/alerts/standard/01-standard-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example-01 spec: diff --git a/tests/e2e/alerts/standard/02-assert.yaml b/tests/e2e/alerts/standard/02-assert.yaml index d51d84b..c939f22 100644 --- a/tests/e2e/alerts/standard/02-assert.yaml +++ b/tests/e2e/alerts/standard/02-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example-02 status: @@ -18,7 +18,6 @@ status: - coralogix.metadata.sdkId threshold: 5 filters: - alias: "" applications: - filter:contains:nginx searchQuery: remote_addr_enriched:/.*/ diff --git a/tests/e2e/alerts/standard/02-standard-install.yaml b/tests/e2e/alerts/standard/02-standard-install.yaml index 38bd600..8c55541 100644 --- a/tests/e2e/alerts/standard/02-standard-install.yaml +++ b/tests/e2e/alerts/standard/02-standard-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example-02 spec: diff --git a/tests/e2e/alerts/standard/03-assert.yaml b/tests/e2e/alerts/standard/03-assert.yaml index 8b7846e..1959ed2 100644 --- a/tests/e2e/alerts/standard/03-assert.yaml +++ b/tests/e2e/alerts/standard/03-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example-03 status: @@ -15,7 +15,6 @@ status: conditions: alertWhen: Immediately filters: - alias: "" applications: - filter:contains:nginx searchQuery: remote_addr_enriched:/.*/ diff --git a/tests/e2e/alerts/standard/03-standard-install.yaml b/tests/e2e/alerts/standard/03-standard-install.yaml index 57070d6..25bb3f8 100644 --- a/tests/e2e/alerts/standard/03-standard-install.yaml +++ b/tests/e2e/alerts/standard/03-standard-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: standard-alert-example-03 spec: diff --git a/tests/e2e/alerts/time-relative/00-assert.yaml b/tests/e2e/alerts/time-relative/00-assert.yaml index 5d6839f..d25fb70 100644 --- a/tests/e2e/alerts/time-relative/00-assert.yaml +++ b/tests/e2e/alerts/time-relative/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: time-relative-example status: diff --git a/tests/e2e/alerts/time-relative/00-time-relative-install.yaml b/tests/e2e/alerts/time-relative/00-time-relative-install.yaml index 8c1f91b..2cfec34 100644 --- a/tests/e2e/alerts/time-relative/00-time-relative-install.yaml +++ b/tests/e2e/alerts/time-relative/00-time-relative-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: time-relative-example spec: diff --git a/tests/e2e/alerts/time-relative/01-assert.yaml b/tests/e2e/alerts/time-relative/01-assert.yaml new file mode 100644 index 0000000..53bc215 --- /dev/null +++ b/tests/e2e/alerts/time-relative/01-assert.yaml @@ -0,0 +1,59 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: time-relative-example +status: + active: true + alertType: + timeRelative: + conditions: + alertWhen: More + groupBy: + - coralogix.metadata.sdkId + ignoreInfinity: true + threshold: "15" + timeWindow: SameHourYesterday + filters: + applications: + - filter:contains:nginx + severities: + - Warning + - Info + subsystems: + - filter:startsWith:subsystem-name + description: alert from k8s operator + labels: + alert_type: security + security_severity: high + managed-by: coralogix-operator + name: time-relative alert example + # notificationGroups: + # - notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + # - groupByFields: [ "coralogix.metadata.sdkId" ] + # notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example2@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: + - Wednesday + - Thursday + endTime: "20:00" + startTime: "08:00" + timeZone: UTC+02 + severity: Error diff --git a/tests/e2e/alerts/time-relative/00-delete.yaml b/tests/e2e/alerts/time-relative/01-delete.yaml similarity index 100% rename from tests/e2e/alerts/time-relative/00-delete.yaml rename to tests/e2e/alerts/time-relative/01-delete.yaml diff --git a/tests/e2e/alerts/time-relative/01-time-relative-install.yaml b/tests/e2e/alerts/time-relative/01-time-relative-install.yaml new file mode 100644 index 0000000..36606d0 --- /dev/null +++ b/tests/e2e/alerts/time-relative/01-time-relative-install.yaml @@ -0,0 +1,50 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: time-relative-example +spec: + name: time-relative alert example + description: alert from k8s operator + severity: Error + labels: + alert_type: security + security_severity: high + notificationGroups: + - notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + - groupByFields: [ "coralogix.metadata.sdkId" ] + notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example2@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: ["Wednesday", "Thursday"] + timeZone: UTC+02 + startTime: 08:00 + endTime: 20:00 + alertType: + timeRelative: + filters: + applications: ["filter:contains:nginx"] + subsystems: ["filter:startsWith:subsystem-name"] + severities: ["Warning", "Info"] + conditions: + alertWhen: More + threshold: 15 + timeWindow: SameHourYesterday + ignoreInfinity: true + groupBy: ["coralogix.metadata.sdkId"] diff --git a/tests/e2e/alerts/trace/00-assert.yaml b/tests/e2e/alerts/trace/00-assert.yaml index 65fcbc8..70a74ba 100644 --- a/tests/e2e/alerts/trace/00-assert.yaml +++ b/tests/e2e/alerts/trace/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: tracing-alert-example status: diff --git a/tests/e2e/alerts/trace/00-tracing-install.yaml b/tests/e2e/alerts/trace/00-tracing-install.yaml index 04275e2..65ecbb0 100644 --- a/tests/e2e/alerts/trace/00-tracing-install.yaml +++ b/tests/e2e/alerts/trace/00-tracing-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: tracing-alert-example spec: diff --git a/tests/e2e/alerts/trace/01-assert.yaml b/tests/e2e/alerts/trace/01-assert.yaml new file mode 100644 index 0000000..2483202 --- /dev/null +++ b/tests/e2e/alerts/trace/01-assert.yaml @@ -0,0 +1,58 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: tracing-alert-example +status: + active: true + alertType: + tracing: + conditions: + alertWhen: More + threshold: 15 + timeWindow: FifteenMinutes + filters: + applications: + - application_name + latencyThresholdMilliseconds: "30" + services: + - filter:contains:serviceName + subsystems: + - filter:startsWith:subsystemName + tagFilters: + - field: status + values: + - filter:startsWith:500 + description: alert from k8s operator + name: tracing alert example + labels: + managed-by: coralogix-operator + # notificationGroups: + # - notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + # - groupByFields: [ "coralogix.metadata.sdkId" ] + # notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example2@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: + - Wednesday + - Thursday + endTime: "20:30" + startTime: "08:30" + timeZone: UTC+02 + severity: Critical diff --git a/tests/e2e/alerts/trace/00-delete.yaml b/tests/e2e/alerts/trace/01-delete.yaml similarity index 100% rename from tests/e2e/alerts/trace/00-delete.yaml rename to tests/e2e/alerts/trace/01-delete.yaml diff --git a/tests/e2e/alerts/trace/01-tracing-install.yaml b/tests/e2e/alerts/trace/01-tracing-install.yaml new file mode 100644 index 0000000..63667d1 --- /dev/null +++ b/tests/e2e/alerts/trace/01-tracing-install.yaml @@ -0,0 +1,50 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: tracing-alert-example +spec: + name: tracing alert example + description: alert from k8s operator + severity: Critical + notificationGroups: + - notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example2@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: [ "Wednesday", "Thursday" ] + timeZone: UTC+02 + startTime: 08:30 + endTime: 20:30 + alertType: + tracing: + filters: + latencyThresholdMilliseconds: 30 + applications: + [ + "application_name", + ] + subsystems: + [ + "filter:startsWith:subsystemName", + ] + services: + [ + "filter:contains:serviceName", + ] + tagFilters: + - field: status + values: [ "filter:startsWith:500"] + conditions: + alertWhen: More + threshold: 15 + timeWindow: FifteenMinutes diff --git a/tests/e2e/alerts/unique-count/00-assert.yaml b/tests/e2e/alerts/unique-count/00-assert.yaml index e714a77..c779b85 100644 --- a/tests/e2e/alerts/unique-count/00-assert.yaml +++ b/tests/e2e/alerts/unique-count/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: unique-count-alert-example status: @@ -19,7 +19,6 @@ status: maxUniqueValuesForGroupBy: 500 timeWindow: TenMinutes filters: - alias: "" severities: - Error description: alert from k8s operator diff --git a/tests/e2e/alerts/unique-count/00-unique-count-install.yaml b/tests/e2e/alerts/unique-count/00-unique-count-install.yaml index d4f94fb..78a9262 100644 --- a/tests/e2e/alerts/unique-count/00-unique-count-install.yaml +++ b/tests/e2e/alerts/unique-count/00-unique-count-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: alert app.kubernetes.io/instance: alert-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: unique-count-alert-example spec: diff --git a/tests/e2e/alerts/unique-count/01-assert.yaml b/tests/e2e/alerts/unique-count/01-assert.yaml new file mode 100644 index 0000000..79e99db --- /dev/null +++ b/tests/e2e/alerts/unique-count/01-assert.yaml @@ -0,0 +1,51 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: unique-count-alert-example +status: + active: true + alertType: + uniqueCount: + conditions: + groupBy: EventType + key: remote_addr_geoip.city_name + maxUniqueValues: 3 + maxUniqueValuesForGroupBy: 600 + timeWindow: TenMinutes + filters: + severities: + - Error + description: alert from k8s operator + name: unique-count alert example + labels: + managed-by: coralogix-operator + # notificationGroups: + # - notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + # - groupByFields: [ "coralogix.metadata.sdkId" ] + # notifications: + # - notifyOn: TriggeredOnly + # integrationName: WebhookAlerts + # retriggeringPeriodMinutes: 1 + # - notifyOn: TriggeredAndResolved + # emailRecipients: [ "example2@coralogix.com" ] + # retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: + - Wednesday + - Thursday + endTime: "20:30" + startTime: "08:30" + timeZone: UTC+02 + severity: Critical diff --git a/tests/e2e/alerts/unique-count/00-delete.yaml b/tests/e2e/alerts/unique-count/01-delete.yaml similarity index 100% rename from tests/e2e/alerts/unique-count/00-delete.yaml rename to tests/e2e/alerts/unique-count/01-delete.yaml diff --git a/tests/e2e/alerts/unique-count/01-unique-count-install.yaml b/tests/e2e/alerts/unique-count/01-unique-count-install.yaml new file mode 100644 index 0000000..8eb529d --- /dev/null +++ b/tests/e2e/alerts/unique-count/01-unique-count-install.yaml @@ -0,0 +1,38 @@ +apiVersion: coralogix.com/v1alpha1 +kind: Alert +metadata: + labels: + app.kubernetes.io/name: alert + app.kubernetes.io/instance: alert-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: unique-count-alert-example +spec: + name: unique-count alert example + description: alert from k8s operator + severity: Critical + notificationGroups: + - groupByFields: [ "EventType" ] + notifications: + - notifyOn: TriggeredOnly + integrationName: WebhookAlerts + retriggeringPeriodMinutes: 1 + - notifyOn: TriggeredAndResolved + emailRecipients: [ "example2@coralogix.com" ] + retriggeringPeriodMinutes: 1440 + scheduling: + daysEnabled: ["Wednesday", "Thursday"] + timeZone: UTC+02 + startTime: 08:30 + endTime: 20:30 + alertType: + uniqueCount: + filters: + severities: ["Error"] + conditions: + key: remote_addr_geoip.city_name + maxUniqueValues: 3 + timeWindow: TenMinutes + groupBy: EventType + maxUniqueValuesForGroupBy: 600 diff --git a/tests/e2e/rulegroups/block/00-assert.yaml b/tests/e2e/rulegroups/block/00-assert.yaml index be01cb7..ef46f7d 100644 --- a/tests/e2e/rulegroups/block/00-assert.yaml +++ b/tests/e2e/rulegroups/block/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: block-rule status: diff --git a/tests/e2e/rulegroups/block/00-block-install.yaml b/tests/e2e/rulegroups/block/00-block-install.yaml index 71b94f4..76f151b 100644 --- a/tests/e2e/rulegroups/block/00-block-install.yaml +++ b/tests/e2e/rulegroups/block/00-block-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: block-rule spec: diff --git a/tests/e2e/rulegroups/extract/00-assert.yaml b/tests/e2e/rulegroups/extract/00-assert.yaml index b5a199f..8fc5860 100644 --- a/tests/e2e/rulegroups/extract/00-assert.yaml +++ b/tests/e2e/rulegroups/extract/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: extract-rule status: diff --git a/tests/e2e/rulegroups/extract/00-extract-install.yaml b/tests/e2e/rulegroups/extract/00-extract-install.yaml index e243263..bd599fe 100644 --- a/tests/e2e/rulegroups/extract/00-extract-install.yaml +++ b/tests/e2e/rulegroups/extract/00-extract-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: extract-rule spec: diff --git a/tests/e2e/rulegroups/json-extract/00-assert.yaml b/tests/e2e/rulegroups/json-extract/00-assert.yaml index 24d98c6..2ae1977 100644 --- a/tests/e2e/rulegroups/json-extract/00-assert.yaml +++ b/tests/e2e/rulegroups/json-extract/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: json-extract-rule status: diff --git a/tests/e2e/rulegroups/json-extract/00-json-extract-install.yaml b/tests/e2e/rulegroups/json-extract/00-json-extract-install.yaml index d36e897..fcf913f 100644 --- a/tests/e2e/rulegroups/json-extract/00-json-extract-install.yaml +++ b/tests/e2e/rulegroups/json-extract/00-json-extract-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: json-extract-rule spec: diff --git a/tests/e2e/rulegroups/mixed-rulegroups/00-assert.yaml b/tests/e2e/rulegroups/mixed-rulegroups/00-assert.yaml index 931e28c..d92aae4 100644 --- a/tests/e2e/rulegroups/mixed-rulegroups/00-assert.yaml +++ b/tests/e2e/rulegroups/mixed-rulegroups/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: mixed-rulegroup status: diff --git a/tests/e2e/rulegroups/mixed-rulegroups/00-mixed-rulegroup-install.yaml b/tests/e2e/rulegroups/mixed-rulegroups/00-mixed-rulegroup-install.yaml index 30eec66..e16865f 100644 --- a/tests/e2e/rulegroups/mixed-rulegroups/00-mixed-rulegroup-install.yaml +++ b/tests/e2e/rulegroups/mixed-rulegroups/00-mixed-rulegroup-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: mixed-rulegroup spec: diff --git a/tests/e2e/rulegroups/parse-json/00-assert.yaml b/tests/e2e/rulegroups/parse-json/00-assert.yaml index 0308b60..dc63040 100644 --- a/tests/e2e/rulegroups/parse-json/00-assert.yaml +++ b/tests/e2e/rulegroups/parse-json/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: parsing-json-field-rule status: diff --git a/tests/e2e/rulegroups/parse-json/00-parse-json-field-install.yaml b/tests/e2e/rulegroups/parse-json/00-parse-json-field-install.yaml index 5768451..54bf17e 100644 --- a/tests/e2e/rulegroups/parse-json/00-parse-json-field-install.yaml +++ b/tests/e2e/rulegroups/parse-json/00-parse-json-field-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: parsing-json-field-rule spec: diff --git a/tests/e2e/rulegroups/parse/00-assert.yaml b/tests/e2e/rulegroups/parse/00-assert.yaml index 345798b..cec8873 100644 --- a/tests/e2e/rulegroups/parse/00-assert.yaml +++ b/tests/e2e/rulegroups/parse/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: parsing-rule status: diff --git a/tests/e2e/rulegroups/parse/00-parse-install.yaml b/tests/e2e/rulegroups/parse/00-parse-install.yaml index fc0e898..a16d81d 100644 --- a/tests/e2e/rulegroups/parse/00-parse-install.yaml +++ b/tests/e2e/rulegroups/parse/00-parse-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: parsing-rule spec: diff --git a/tests/e2e/rulegroups/remove-fields/00-assert.yaml b/tests/e2e/rulegroups/remove-fields/00-assert.yaml index f46f27b..f460797 100644 --- a/tests/e2e/rulegroups/remove-fields/00-assert.yaml +++ b/tests/e2e/rulegroups/remove-fields/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: remove-fields status: diff --git a/tests/e2e/rulegroups/remove-fields/00-remove-fields-install.yaml b/tests/e2e/rulegroups/remove-fields/00-remove-fields-install.yaml index 438a419..802a385 100644 --- a/tests/e2e/rulegroups/remove-fields/00-remove-fields-install.yaml +++ b/tests/e2e/rulegroups/remove-fields/00-remove-fields-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: remove-fields spec: diff --git a/tests/e2e/rulegroups/replace/00-assert.yaml b/tests/e2e/rulegroups/replace/00-assert.yaml index 11cbdb0..28ef061 100644 --- a/tests/e2e/rulegroups/replace/00-assert.yaml +++ b/tests/e2e/rulegroups/replace/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: replace-rule status: diff --git a/tests/e2e/rulegroups/replace/00-replace-install.yaml b/tests/e2e/rulegroups/replace/00-replace-install.yaml index ab342d0..323b7af 100644 --- a/tests/e2e/rulegroups/replace/00-replace-install.yaml +++ b/tests/e2e/rulegroups/replace/00-replace-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: replace-rule spec: diff --git a/tests/e2e/rulegroups/stringify-json/00-assert.yaml b/tests/e2e/rulegroups/stringify-json/00-assert.yaml index e27cc23..cbaabbf 100644 --- a/tests/e2e/rulegroups/stringify-json/00-assert.yaml +++ b/tests/e2e/rulegroups/stringify-json/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: json-stringify-rule status: diff --git a/tests/e2e/rulegroups/stringify-json/00-stringify-json-install.yaml b/tests/e2e/rulegroups/stringify-json/00-stringify-json-install.yaml index a4c2000..ea2ffa1 100644 --- a/tests/e2e/rulegroups/stringify-json/00-stringify-json-install.yaml +++ b/tests/e2e/rulegroups/stringify-json/00-stringify-json-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: json-stringify-rule spec: diff --git a/tests/e2e/rulegroups/timestamp/00-assert.yaml b/tests/e2e/rulegroups/timestamp/00-assert.yaml index b32bbc0..716e6ab 100644 --- a/tests/e2e/rulegroups/timestamp/00-assert.yaml +++ b/tests/e2e/rulegroups/timestamp/00-assert.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: extract-timestamp-rule status: diff --git a/tests/e2e/rulegroups/timestamp/00-extract-time-stamp-install.yaml b/tests/e2e/rulegroups/timestamp/00-extract-time-stamp-install.yaml index 8068cab..6b42c55 100644 --- a/tests/e2e/rulegroups/timestamp/00-extract-time-stamp-install.yaml +++ b/tests/e2e/rulegroups/timestamp/00-extract-time-stamp-install.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/name: rulegroup app.kubernetes.io/instance: rulegroup-sample app.kubernetes.io/part-of: coralogix-operator - app.kuberentes.io/managed-by: kustomize + app.kubernetes.io/managed-by: kustomize app.kubernetes.io/created-by: coralogix-operator name: extract-timestamp-rule spec: