Skip to content

Commit

Permalink
Rule group set to use SDK (#170)
Browse files Browse the repository at this point in the history
  • Loading branch information
assafad1 authored Oct 10, 2024
1 parent 52fb754 commit 8c3e006
Show file tree
Hide file tree
Showing 10 changed files with 77 additions and 1,922 deletions.
22 changes: 12 additions & 10 deletions apis/coralogix/v1alpha1/recordingrulegroupset_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@ import (
"fmt"
"reflect"

utils "github.com/coralogix/coralogix-operator/apis"
rrg "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/recording-rules-groups/v2"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

cxsdk "github.com/coralogix/coralogix-management-sdk/go"

utils "github.com/coralogix/coralogix-operator/apis"
)

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
Expand Down Expand Up @@ -56,16 +58,16 @@ func (in *RecordingRuleGroupSetSpec) DeepEqual(status RecordingRuleGroupSetStatu
return true, utils.Diff{}
}

func (in *RecordingRuleGroupSetSpec) ExtractRecordingRuleGroups() []*rrg.InRuleGroup {
result := make([]*rrg.InRuleGroup, 0, len(in.Groups))
func (in *RecordingRuleGroupSetSpec) ExtractRecordingRuleGroups() []*cxsdk.InRuleGroup {
result := make([]*cxsdk.InRuleGroup, 0, len(in.Groups))
for _, ruleGroup := range in.Groups {
rg := expandRecordingRuleGroup(ruleGroup)
result = append(result, rg)
}
return result
}

func expandRecordingRuleGroup(group RecordingRuleGroup) *rrg.InRuleGroup {
func expandRecordingRuleGroup(group RecordingRuleGroup) *cxsdk.InRuleGroup {
interval := new(uint32)
*interval = uint32(group.IntervalSeconds)

Expand All @@ -74,25 +76,25 @@ func expandRecordingRuleGroup(group RecordingRuleGroup) *rrg.InRuleGroup {

rules := expandRecordingRules(group.Rules)

return &rrg.InRuleGroup{
return &cxsdk.InRuleGroup{
Name: group.Name,
Interval: interval,
Limit: limit,
Rules: rules,
}
}

func expandRecordingRules(rules []RecordingRule) []*rrg.InRule {
result := make([]*rrg.InRule, 0, len(rules))
func expandRecordingRules(rules []RecordingRule) []*cxsdk.InRule {
result := make([]*cxsdk.InRule, 0, len(rules))
for _, r := range rules {
rule := extractRecordingRule(r)
result = append(result, rule)
}
return result
}

func extractRecordingRule(rule RecordingRule) *rrg.InRule {
return &rrg.InRule{
func extractRecordingRule(rule RecordingRule) *cxsdk.InRule {
return &cxsdk.InRule{
Record: rule.Record,
Expr: rule.Expr,
Labels: rule.Labels,
Expand Down
21 changes: 10 additions & 11 deletions controllers/alphacontrollers/recordingrulegroupset_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,20 @@ import (
"context"
"fmt"

"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/utils/ptr"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
"sigs.k8s.io/controller-runtime/pkg/log"

cxsdk "github.com/coralogix/coralogix-management-sdk/go"

coralogixv1alpha1 "github.com/coralogix/coralogix-operator/apis/coralogix/v1alpha1"
"github.com/coralogix/coralogix-operator/controllers/clientset"
rrg "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/recording-rules-groups/v2"

"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"k8s.io/apimachinery/pkg/api/errors"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)

var recordingRuleGroupSetFinalizerName = "recordingrulegroupset.coralogix.com/finalizer"
Expand Down Expand Up @@ -97,7 +97,7 @@ func (r *RecordingRuleGroupSetReconciler) Reconcile(ctx context.Context, req ctr
func (r *RecordingRuleGroupSetReconciler) create(ctx context.Context, recordingRuleGroupSet *coralogixv1alpha1.RecordingRuleGroupSet) error {
response, err := r.CoralogixClientSet.
RecordingRuleGroups().
CreateRecordingRuleGroupSet(ctx, &rrg.CreateRuleGroupSet{
Create(ctx, &cxsdk.CreateRuleGroupSetRequest{
Name: ptr.To(fmt.Sprintf("%s%s", recordingRuleGroupSet.Name, r.RecordingRuleGroupSetSuffix)),
Groups: recordingRuleGroupSet.Spec.ExtractRecordingRuleGroups(),
})
Expand All @@ -124,7 +124,7 @@ func (r *RecordingRuleGroupSetReconciler) create(ctx context.Context, recordingR
}

func (r *RecordingRuleGroupSetReconciler) update(ctx context.Context, recordingRuleGroupSet *coralogixv1alpha1.RecordingRuleGroupSet) error {
remoteRecordingRule, err := r.CoralogixClientSet.RecordingRuleGroups().GetRecordingRuleGroupSet(ctx, &rrg.FetchRuleGroupSet{
remoteRecordingRule, err := r.CoralogixClientSet.RecordingRuleGroups().Get(ctx, &cxsdk.GetRuleGroupSetRequest{
Id: *recordingRuleGroupSet.Status.ID,
})

Expand All @@ -141,10 +141,9 @@ func (r *RecordingRuleGroupSetReconciler) update(ctx context.Context, recordingR

if _, err := r.CoralogixClientSet.
RecordingRuleGroups().
UpdateRecordingRuleGroupSet(ctx, &rrg.UpdateRuleGroupSet{
Update(ctx, &cxsdk.UpdateRuleGroupSetRequest{
Id: remoteRecordingRule.Id,
Groups: recordingRuleGroupSet.Spec.ExtractRecordingRuleGroups(),
Name: ptr.To(fmt.Sprintf("%s%s", recordingRuleGroupSet.Name, r.RecordingRuleGroupSetSuffix)),
}); err != nil {
return fmt.Errorf("failed to update recording rule groupSet: %w", err)
}
Expand All @@ -153,7 +152,7 @@ func (r *RecordingRuleGroupSetReconciler) update(ctx context.Context, recordingR
}

func (r *RecordingRuleGroupSetReconciler) delete(ctx context.Context, recordingRuleGroupSet *coralogixv1alpha1.RecordingRuleGroupSet) error {
_, err := r.CoralogixClientSet.RecordingRuleGroups().DeleteRecordingRuleGroupSet(ctx, &rrg.DeleteRuleGroupSet{
_, err := r.CoralogixClientSet.RecordingRuleGroups().Delete(ctx, &cxsdk.DeleteRuleGroupSetRequest{
Id: *recordingRuleGroupSet.Status.ID,
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ import (
"context"
"testing"

coralogixv1alpha1 "github.com/coralogix/coralogix-operator/apis/coralogix/v1alpha1"
rrg "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/recording-rules-groups/v2"
"github.com/coralogix/coralogix-operator/controllers/mock_clientset"
"github.com/stretchr/testify/assert"
"go.uber.org/mock/gomock"
"google.golang.org/protobuf/types/known/emptypb"
Expand All @@ -19,6 +16,11 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/log/zap"

cxsdk "github.com/coralogix/coralogix-management-sdk/go"

coralogixv1alpha1 "github.com/coralogix/coralogix-operator/apis/coralogix/v1alpha1"
"github.com/coralogix/coralogix-operator/controllers/mock_clientset"
)

func setupRecordingRuleReconciler(t *testing.T, ctx context.Context, clientSet *mock_clientset.MockClientSetInterface) (RecordingRuleGroupSetReconciler, watch.Interface) {
Expand Down Expand Up @@ -68,7 +70,7 @@ func TestRecordingRuleCreation(t *testing.T) {
name: "Recording rule creation success",
shouldFail: false,
params: func(params PrepareRecordingRulesParams) {
params.recordingRuleClient.EXPECT().CreateRecordingRuleGroupSet(params.ctx, gomock.Any()).Return(&rrg.CreateRuleGroupSetResult{Id: "id1"}, nil)
params.recordingRuleClient.EXPECT().Create(params.ctx, gomock.Any()).Return(&cxsdk.CreateRuleGroupSetResponse{Id: "id1"}, nil)
},
recordingRule: coralogixv1alpha1.RecordingRuleGroupSet{
ObjectMeta: metav1.ObjectMeta{
Expand Down Expand Up @@ -150,15 +152,15 @@ func TestRecordingRuleUpdate(t *testing.T) {
name: "Recording rule update success",
shouldFail: false,
params: func(params PrepareRecordingRulesParams) {
params.recordingRuleClient.EXPECT().CreateRecordingRuleGroupSet(params.ctx, gomock.Any()).Return(&rrg.CreateRuleGroupSetResult{Id: "id1"}, nil)
params.recordingRuleClient.EXPECT().GetRecordingRuleGroupSet(params.ctx, gomock.Any()).Return(&rrg.OutRuleGroupSet{
params.recordingRuleClient.EXPECT().Create(params.ctx, gomock.Any()).Return(&cxsdk.CreateRuleGroupSetResponse{Id: "id1"}, nil)
params.recordingRuleClient.EXPECT().Get(params.ctx, gomock.Any()).Return(&cxsdk.GetRuleGroupSetResponse{
Id: "id1",
Groups: []*rrg.OutRuleGroup{
Groups: []*cxsdk.OutRuleGroup{
{
Name: "name",
Interval: pointer.Uint32(60),
Limit: pointer.Uint64(100),
Rules: []*rrg.OutRule{
Rules: []*cxsdk.OutRule{
{
Record: "record",
Expr: "vector(1)",
Expand All @@ -168,7 +170,7 @@ func TestRecordingRuleUpdate(t *testing.T) {
},
},
}, nil)
params.recordingRuleClient.EXPECT().UpdateRecordingRuleGroupSet(params.ctx, gomock.Any()).Return(&emptypb.Empty{}, nil)
params.recordingRuleClient.EXPECT().Update(params.ctx, gomock.Any()).Return(&emptypb.Empty{}, nil)
},
recordingRule: coralogixv1alpha1.RecordingRuleGroupSet{
ObjectMeta: metav1.ObjectMeta{
Expand Down
4 changes: 2 additions & 2 deletions controllers/clientset/clientset.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type ClientSetInterface interface {
type ClientSet struct {
ruleGroups *cxsdk.RuleGroupsClient
alerts *AlertsClient
recordingRuleGroups *RecordingRulesGroupsClient
recordingRuleGroups *cxsdk.RecordingRuleGroupSetsClient
outboundWebhooks *cxsdk.WebhooksClient
}

Expand All @@ -40,7 +40,7 @@ func NewClientSet(targetUrl, apiKey string) ClientSetInterface {
return &ClientSet{
ruleGroups: cxsdk.NewRuleGroupsClient(SDKAPIKeyCPC),
alerts: NewAlertsClient(apikeyCPC),
recordingRuleGroups: NewRecordingRuleGroupsClient(apikeyCPC),
recordingRuleGroups: cxsdk.NewRecordingRuleGroupSetsClient(SDKAPIKeyCPC),
outboundWebhooks: cxsdk.NewWebhooksClient(SDKAPIKeyCPC),
}
}
Loading

0 comments on commit 8c3e006

Please sign in to comment.