From 71752b85245b5875ec80c8e80faed94d3f1a3763 Mon Sep 17 00:00:00 2001 From: Jan Willies Date: Thu, 5 Oct 2023 16:20:51 +0200 Subject: [PATCH] make rulerAPIPath configurable to support mimir --- apis/v1alpha1/providerconfig_types.go | 5 +++++ apis/v1alpha1/zz_generated.deepcopy.go | 7 ++++++- go.mod | 3 +-- go.sum | 4 ++-- internal/clients/cortex.go | 13 +++++++++---- .../crds/cortex.crossplane.io_providerconfigs.yaml | 3 +++ package/crossplane.yaml | 2 +- 7 files changed, 27 insertions(+), 10 deletions(-) diff --git a/apis/v1alpha1/providerconfig_types.go b/apis/v1alpha1/providerconfig_types.go index 40121e9..9374761 100644 --- a/apis/v1alpha1/providerconfig_types.go +++ b/apis/v1alpha1/providerconfig_types.go @@ -33,6 +33,11 @@ type ProviderConfigSpec struct { // Address of the cortex server Address string `json:"address"` + // RulerAPIPath for the Rules endpoint + // e.g. /prometheus/config/v1/rules + // +optional + RulerAPIPath *string `json:"rulerAPIPath,omitempty"` + // Credentials required to authenticate to this provider. // Credentials ProviderCredentials `json:"credentials"` } diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index 95fecfa..0423480 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -30,7 +30,7 @@ func (in *ProviderConfig) DeepCopyInto(out *ProviderConfig) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - out.Spec = in.Spec + in.Spec.DeepCopyInto(&out.Spec) in.Status.DeepCopyInto(&out.Status) } @@ -87,6 +87,11 @@ func (in *ProviderConfigList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProviderConfigSpec) DeepCopyInto(out *ProviderConfigSpec) { *out = *in + if in.RulerAPIPath != nil { + in, out := &in.RulerAPIPath, &out.RulerAPIPath + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderConfigSpec. diff --git a/go.mod b/go.mod index cdcef6b..24b4ccc 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ go 1.20 require ( github.com/crossplane/crossplane-runtime v0.19.2 - // github.com/crossplane/crossplane-tools v0.0.0-20230327091744-4236bf732aa5 github.com/crossplane/crossplane-tools v0.0.0-20220901191540-806c0b01097b github.com/google/go-cmp v0.5.9 github.com/pkg/errors v0.9.1 @@ -17,7 +16,7 @@ require ( ) require ( - github.com/cortexproject/cortex-tools v0.11.2-0.20230927171007-58aa76d01708 + github.com/cortexproject/cortex-tools v0.11.2-0.20231101174637-76a414b4fe47 github.com/prometheus/common v0.42.0 github.com/prometheus/prometheus v1.8.2-0.20220411232225-ce6a643ee88f gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index fffda27..86028ab 100644 --- a/go.sum +++ b/go.sum @@ -486,8 +486,8 @@ github.com/cortexproject/cortex v1.7.1-0.20210316085356-3fedc1108a49/go.mod h1:/ github.com/cortexproject/cortex v1.8.1-0.20210422151339-cf1c444e0905/go.mod h1:xxm4/CLvTmDxwE7yXwtClR4dIvkG4S09o5DygPOgc1U= github.com/cortexproject/cortex v1.13.2 h1:Bz0SstQuvW8HrUVuV5NygORm1eL4p+v5mAMBoMt4Lpg= github.com/cortexproject/cortex v1.13.2/go.mod h1:NL24i3LSvY5ChBGHwFFm+gc2ZWCH7E/37/F+1fgjf24= -github.com/cortexproject/cortex-tools v0.11.2-0.20230927171007-58aa76d01708 h1:0Bne+boFjYJn6/62upv1q1jY/2kYyE+0XddEHNX591E= -github.com/cortexproject/cortex-tools v0.11.2-0.20230927171007-58aa76d01708/go.mod h1:WULGudjEWbYqufjmjjO4SP276qAWaCKbVaPt/jFh5sE= +github.com/cortexproject/cortex-tools v0.11.2-0.20231101174637-76a414b4fe47 h1:bQZ1ikD6AI0oCUy/5PKhwSxEYpNEKhGGkfsfkvP72qo= +github.com/cortexproject/cortex-tools v0.11.2-0.20231101174637-76a414b4fe47/go.mod h1:WULGudjEWbYqufjmjjO4SP276qAWaCKbVaPt/jFh5sE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= diff --git a/internal/clients/cortex.go b/internal/clients/cortex.go index ab940bc..51d9b8b 100644 --- a/internal/clients/cortex.go +++ b/internal/clients/cortex.go @@ -20,8 +20,9 @@ type Config struct { // NewClient creates new Cortex Client with provided Cortex Configurations. func NewClient(config Config) *cortexClient.CortexClient { client, err := cortexClient.New(cortexClient.Config{ - Address: config.Address, - ID: config.ID, + Address: config.Address, + ID: config.ID, + RulerAPIPath: config.RulerAPIPath, }) if err != nil { @@ -52,8 +53,12 @@ func UseProviderConfig(ctx context.Context, c client.Client, mg resource.Managed return nil, errors.Wrap(err, "cannot track ProviderConfig usage") } - // return &Config{}, nil - return &Config{cortexClient.Config{ID: pc.Spec.TenantID, Address: pc.Spec.Address}}, nil + rulerAPIPath := "" + if pc.Spec.RulerAPIPath != nil { + rulerAPIPath = *pc.Spec.RulerAPIPath + } + + return &Config{cortexClient.Config{ID: pc.Spec.TenantID, Address: pc.Spec.Address, RulerAPIPath: rulerAPIPath}}, nil // switch s := pc.Spec.Credentials.Source; s { //nolint:exhaustive // case xpv1.CredentialsSourceSecret: diff --git a/package/crds/cortex.crossplane.io_providerconfigs.yaml b/package/crds/cortex.crossplane.io_providerconfigs.yaml index a0f8f6c..21495aa 100644 --- a/package/crds/cortex.crossplane.io_providerconfigs.yaml +++ b/package/crds/cortex.crossplane.io_providerconfigs.yaml @@ -45,6 +45,9 @@ spec: address: description: Address of the cortex server type: string + rulerAPIPath: + description: RulerAPIPath for the Rules endpoint e.g. /prometheus/config/v1/rules + type: string tenantId: description: ID of the cortex tenant type: string diff --git a/package/crossplane.yaml b/package/crossplane.yaml index b88b4e5..635c492 100644 --- a/package/crossplane.yaml +++ b/package/crossplane.yaml @@ -1,4 +1,4 @@ -apiVersion: meta.pkg.crossplane.io/v1alpha1 +apiVersion: meta.pkg.crossplane.io/v1 kind: Provider metadata: name: provider-cortex