From 5413c56182b74e6d768326cf67e759a69c187c55 Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 6 Mar 2023 15:13:59 -0800 Subject: [PATCH 01/12] test --- .github/workflows/generate.yaml | 2 +- CHANGELOG.md | 26 +++++++++---------- README.md | 4 +-- cmd/sloth/commands/commands.go | 2 +- cmd/sloth/commands/generate.go | 18 ++++++------- cmd/sloth/commands/helpers.go | 4 +-- cmd/sloth/commands/k8scontroller.go | 16 ++++++------ cmd/sloth/commands/validate.go | 10 +++---- cmd/sloth/commands/version.go | 2 +- cmd/sloth/main.go | 8 +++--- deploy/kubernetes/helm/sloth/tests/go.mod | 2 +- go.mod | 3 ++- go.sum | 2 ++ pkg/kubernetes/api/sloth/v1/README.md | 2 +- pkg/kubernetes/api/sloth/v1/register.go | 2 +- .../gen/clientset/versioned/clientset.go | 2 +- .../versioned/fake/clientset_generated.go | 6 ++--- .../gen/clientset/versioned/fake/register.go | 2 +- .../clientset/versioned/scheme/register.go | 2 +- .../v1/fake/fake_prometheusservicelevel.go | 2 +- .../typed/sloth/v1/fake/fake_sloth_client.go | 2 +- .../typed/sloth/v1/prometheusservicelevel.go | 4 +-- .../versioned/typed/sloth/v1/sloth_client.go | 4 +-- pkg/prometheus/alertwindows/v1/README.md | 2 +- pkg/prometheus/api/v1/README.md | 2 +- scripts/build/bin/build-raw.sh | 2 +- {internal => src}/alert/alert.go | 0 {internal => src}/alert/alert_test.go | 2 +- {internal => src}/alert/window.go | 4 +-- .../alert/windows/google-28d.yaml | 0 .../alert/windows/google-30d.yaml | 0 src/app/generate/grafana.go | 1 + {internal => src}/app/generate/noop.go | 6 ++--- {internal => src}/app/generate/prometheus.go | 8 +++--- .../app/generate/prometheus_test.go | 8 +++--- .../app/kubecontroller/handler.go | 10 +++---- .../app/kubecontroller/retriever.go | 2 +- {internal => src}/info/info.go | 0 {internal => src}/k8sprometheus/helpers.go | 0 .../prometheus_rules_ensurer.go | 0 {internal => src}/k8sprometheus/kubernetes.go | 8 +++--- {internal => src}/k8sprometheus/model.go | 2 +- {internal => src}/k8sprometheus/model_test.go | 4 +-- {internal => src}/k8sprometheus/spec.go | 8 +++--- {internal => src}/k8sprometheus/spec_test.go | 4 +-- {internal => src}/k8sprometheus/storage.go | 6 ++--- .../k8sprometheus/storage_test.go | 8 +++--- {internal => src}/log/log.go | 0 {internal => src}/log/logrus/logrus.go | 2 +- {internal => src}/openslo/spec.go | 2 +- {internal => src}/openslo/spec_test.go | 4 +-- {internal => src}/prometheus/alert_rules.go | 2 +- .../prometheus/alert_rules_test.go | 4 +-- {internal => src}/prometheus/conventions.go | 0 {internal => src}/prometheus/helpers.go | 2 +- {internal => src}/prometheus/model.go | 0 {internal => src}/prometheus/model_test.go | 2 +- .../prometheus/prometheusmock/file_manager.go | 0 .../prometheus/recording_rules.go | 4 +-- .../prometheus/recording_rules_test.go | 6 ++--- {internal => src}/prometheus/sli_plugin.go | 6 ++--- .../prometheus/sli_plugin_test.go | 4 +-- {internal => src}/prometheus/spec.go | 4 +-- {internal => src}/prometheus/spec_test.go | 2 +- {internal => src}/prometheus/storage.go | 4 +-- {internal => src}/prometheus/storage_test.go | 4 +-- .../k8scontroller/exp_base_test.go | 2 +- .../k8scontroller/exp_plugin_test.go | 2 +- test/integration/k8scontroller/helpers.go | 4 +-- .../k8scontroller/k8scontroller_test.go | 6 ++--- test/integration/prometheus/generate_test.go | 4 +-- test/integration/prometheus/helpers.go | 2 +- test/integration/prometheus/validate_test.go | 2 +- 73 files changed, 146 insertions(+), 142 deletions(-) rename {internal => src}/alert/alert.go (100%) rename {internal => src}/alert/alert_test.go (99%) rename {internal => src}/alert/window.go (98%) rename {internal => src}/alert/windows/google-28d.yaml (100%) rename {internal => src}/alert/windows/google-30d.yaml (100%) create mode 100644 src/app/generate/grafana.go rename {internal => src}/app/generate/noop.go (89%) rename {internal => src}/app/generate/prometheus.go (97%) rename {internal => src}/app/generate/prometheus_test.go (98%) rename {internal => src}/app/kubecontroller/handler.go (96%) rename {internal => src}/app/kubecontroller/retriever.go (95%) rename {internal => src}/info/info.go (100%) rename {internal => src}/k8sprometheus/helpers.go (100%) rename {internal => src}/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go (100%) rename {internal => src}/k8sprometheus/kubernetes.go (96%) rename {internal => src}/k8sprometheus/model.go (95%) rename {internal => src}/k8sprometheus/model_test.go (97%) rename {internal => src}/k8sprometheus/spec.go (95%) rename {internal => src}/k8sprometheus/spec_test.go (99%) rename {internal => src}/k8sprometheus/storage.go (97%) rename {internal => src}/k8sprometheus/storage_test.go (98%) rename {internal => src}/log/log.go (100%) rename {internal => src}/log/logrus/logrus.go (94%) rename {internal => src}/openslo/spec.go (99%) rename {internal => src}/openslo/spec_test.go (98%) rename {internal => src}/prometheus/alert_rules.go (99%) rename {internal => src}/prometheus/alert_rules_test.go (98%) rename {internal => src}/prometheus/conventions.go (100%) rename {internal => src}/prometheus/helpers.go (97%) rename {internal => src}/prometheus/model.go (100%) rename {internal => src}/prometheus/model_test.go (99%) rename {internal => src}/prometheus/prometheusmock/file_manager.go (100%) rename {internal => src}/prometheus/recording_rules.go (99%) rename {internal => src}/prometheus/recording_rules_test.go (99%) rename {internal => src}/prometheus/sli_plugin.go (97%) rename {internal => src}/prometheus/sli_plugin_test.go (97%) rename {internal => src}/prometheus/spec.go (96%) rename {internal => src}/prometheus/spec_test.go (99%) rename {internal => src}/prometheus/storage.go (97%) rename {internal => src}/prometheus/storage_test.go (98%) diff --git a/.github/workflows/generate.yaml b/.github/workflows/generate.yaml index d4582f86..73cd0630 100644 --- a/.github/workflows/generate.yaml +++ b/.github/workflows/generate.yaml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v3 - name: download and setup generator binary run: | - wget https://github.com/slok/sloth/releases/download/v0.9.0/sloth-linux-amd64 + wget https://github.com/kloudfuse/sloth/releases/download/v0.9.0/sloth-linux-amd64 chmod +x sloth-linux-amd64 ./sloth-linux-amd64 generate -i ./examples/getting-started.yml -o ./examples/_gen/getting-started.yml ./sloth-linux-amd64 generate -i ./examples/no-alerts.yml -o ./examples/_gen/no-alerts.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e24d724..1babe862 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -162,16 +162,16 @@ - Support raw query based SLI. - Kubernetes (prometheus-operator) CRD generation support. -[unreleased]: https://github.com/slok/sloth/compare/v0.11.0...HEAD -[v0.11.0]: https://github.com/slok/sloth/compare/v0.10.0...v0.11.0 -[v0.10.0]: https://github.com/slok/sloth/compare/v0.9.0...v0.10.0 -[v0.9.0]: https://github.com/slok/sloth/compare/v0.8.0...v0.9.0 -[v0.8.0]: https://github.com/slok/sloth/compare/v0.7.0...v0.8.0 -[v0.7.0]: https://github.com/slok/sloth/compare/v0.6.0...v0.7.0 -[v0.6.0]: https://github.com/slok/sloth/compare/v0.5.0...v0.6.0 -[v0.5.0]: https://github.com/slok/sloth/compare/v0.4.0...v0.5.0 -[v0.4.0]: https://github.com/slok/sloth/compare/v0.3.1...v0.4.0 -[v0.3.1]: https://github.com/slok/sloth/compare/v0.3.0...v0.3.1 -[v0.3.0]: https://github.com/slok/sloth/compare/v0.2.0...v0.3.0 -[v0.2.0]: https://github.com/slok/sloth/compare/v0.1.0...v0.2.0 -[v0.1.0]: https://github.com/slok/sloth/releases/tag/v0.1.0 +[unreleased]: https://github.com/kloudfuse/sloth/compare/v0.11.0...HEAD +[v0.11.0]: https://github.com/kloudfuse/sloth/compare/v0.10.0...v0.11.0 +[v0.10.0]: https://github.com/kloudfuse/sloth/compare/v0.9.0...v0.10.0 +[v0.9.0]: https://github.com/kloudfuse/sloth/compare/v0.8.0...v0.9.0 +[v0.8.0]: https://github.com/kloudfuse/sloth/compare/v0.7.0...v0.8.0 +[v0.7.0]: https://github.com/kloudfuse/sloth/compare/v0.6.0...v0.7.0 +[v0.6.0]: https://github.com/kloudfuse/sloth/compare/v0.5.0...v0.6.0 +[v0.5.0]: https://github.com/kloudfuse/sloth/compare/v0.4.0...v0.5.0 +[v0.4.0]: https://github.com/kloudfuse/sloth/compare/v0.3.1...v0.4.0 +[v0.3.1]: https://github.com/kloudfuse/sloth/compare/v0.3.0...v0.3.1 +[v0.3.0]: https://github.com/kloudfuse/sloth/compare/v0.2.0...v0.3.0 +[v0.2.0]: https://github.com/kloudfuse/sloth/compare/v0.1.0...v0.2.0 +[v0.1.0]: https://github.com/kloudfuse/sloth/releases/tag/v0.1.0 diff --git a/README.md b/README.md index bbcafe10..60c68d10 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ # Sloth -[![CI](https://github.com/slok/sloth/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/slok/sloth/actions/workflows/ci.yaml) +[![CI](https://github.com/kloudfuse/sloth/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/kloudfuse/sloth/actions/workflows/ci.yaml) [![Go Report Card](https://goreportcard.com/badge/github.com/slok/sloth)](https://goreportcard.com/report/github.com/slok/sloth) [![Apache 2 licensed](https://img.shields.io/badge/license-Apache2-blue.svg)](https://raw.githubusercontent.com/slok/sloth/master/LICENSE) -[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/slok/sloth)](https://github.com/slok/sloth/releases/latest) +[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/slok/sloth)](https://github.com/kloudfuse/sloth/releases/latest) ![Kubernetes release](https://img.shields.io/badge/Kubernetes-v1.25-green?logo=Kubernetes&style=flat&color=326CE5&logoColor=white) [![OpenSLO](https://img.shields.io/badge/OpenSLO-v1alpha-green?color=4974EA&style=flat)](https://github.com/OpenSLO/OpenSLO#slo) diff --git a/cmd/sloth/commands/commands.go b/cmd/sloth/commands/commands.go index a02cda71..96454d7f 100644 --- a/cmd/sloth/commands/commands.go +++ b/cmd/sloth/commands/commands.go @@ -6,7 +6,7 @@ import ( "gopkg.in/alecthomas/kingpin.v2" - "github.com/slok/sloth/internal/log" + "github.com/kloudfuse/sloth/src/log" ) const ( diff --git a/cmd/sloth/commands/generate.go b/cmd/sloth/commands/generate.go index 2d5c24ae..ea73c6c3 100644 --- a/cmd/sloth/commands/generate.go +++ b/cmd/sloth/commands/generate.go @@ -16,15 +16,15 @@ import ( prometheusmodel "github.com/prometheus/common/model" "gopkg.in/alecthomas/kingpin.v2" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/app/generate" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/k8sprometheus" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/openslo" - "github.com/slok/sloth/internal/prometheus" - kubernetesv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" - prometheusv1 "github.com/slok/sloth/pkg/prometheus/api/v1" + kubernetesv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + prometheusv1 "github.com/kloudfuse/sloth/pkg/prometheus/api/v1" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/app/generate" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/k8sprometheus" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/openslo" + "github.com/kloudfuse/sloth/src/prometheus" ) type generateCommand struct { diff --git a/cmd/sloth/commands/helpers.go b/cmd/sloth/commands/helpers.go index 817caa6e..bbd8b771 100644 --- a/cmd/sloth/commands/helpers.go +++ b/cmd/sloth/commands/helpers.go @@ -9,8 +9,8 @@ import ( "regexp" "strings" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/prometheus" ) var ( diff --git a/cmd/sloth/commands/k8scontroller.go b/cmd/sloth/commands/k8scontroller.go index 5b0ffbff..584d238f 100644 --- a/cmd/sloth/commands/k8scontroller.go +++ b/cmd/sloth/commands/k8scontroller.go @@ -30,14 +30,14 @@ import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/util/homedir" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/app/generate" - "github.com/slok/sloth/internal/app/kubecontroller" - "github.com/slok/sloth/internal/k8sprometheus" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/prometheus" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" - slothclientset "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + slothclientset "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/app/generate" + "github.com/kloudfuse/sloth/src/app/kubecontroller" + "github.com/kloudfuse/sloth/src/k8sprometheus" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/prometheus" ) var controllerModes = []string{controllerModeDefault, controllerModeDryRun, controllerModeFake} diff --git a/cmd/sloth/commands/validate.go b/cmd/sloth/commands/validate.go index 1dc68cf3..49ca7d9d 100644 --- a/cmd/sloth/commands/validate.go +++ b/cmd/sloth/commands/validate.go @@ -12,11 +12,11 @@ import ( prometheusmodel "github.com/prometheus/common/model" "gopkg.in/alecthomas/kingpin.v2" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/k8sprometheus" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/openslo" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/k8sprometheus" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/openslo" + "github.com/kloudfuse/sloth/src/prometheus" ) type validateCommand struct { diff --git a/cmd/sloth/commands/version.go b/cmd/sloth/commands/version.go index 1813c581..b048cd55 100644 --- a/cmd/sloth/commands/version.go +++ b/cmd/sloth/commands/version.go @@ -6,7 +6,7 @@ import ( "gopkg.in/alecthomas/kingpin.v2" - "github.com/slok/sloth/internal/info" + "github.com/kloudfuse/sloth/src/info" ) type versionCommand struct{} diff --git a/cmd/sloth/main.go b/cmd/sloth/main.go index 55f044bd..3de68a0c 100644 --- a/cmd/sloth/main.go +++ b/cmd/sloth/main.go @@ -9,10 +9,10 @@ import ( "github.com/sirupsen/logrus" "gopkg.in/alecthomas/kingpin.v2" - "github.com/slok/sloth/cmd/sloth/commands" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/log" - loglogrus "github.com/slok/sloth/internal/log/logrus" + "github.com/kloudfuse/sloth/cmd/sloth/commands" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/log" + loglogrus "github.com/kloudfuse/sloth/src/log/logrus" ) // Run runs the main application. diff --git a/deploy/kubernetes/helm/sloth/tests/go.mod b/deploy/kubernetes/helm/sloth/tests/go.mod index 3347b52c..5114345f 100644 --- a/deploy/kubernetes/helm/sloth/tests/go.mod +++ b/deploy/kubernetes/helm/sloth/tests/go.mod @@ -1,4 +1,4 @@ -module github.com/slok/sloth/helm +module github.com/kloudfuse/sloth/helm go 1.19 diff --git a/go.mod b/go.mod index 3bf52b60..bfd20b1b 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/slok/sloth +module github.com/kloudfuse/sloth go 1.19 @@ -13,6 +13,7 @@ require ( github.com/prometheus/prometheus v0.40.3 github.com/sirupsen/logrus v1.9.0 github.com/slok/reload v0.1.0 + github.com/slok/sloth v0.11.0 github.com/spotahome/kooper/v2 v2.2.0 github.com/stretchr/testify v1.8.1 github.com/traefik/yaegi v0.14.3 diff --git a/go.sum b/go.sum index 75a16d6d..06e1f8a0 100644 --- a/go.sum +++ b/go.sum @@ -482,6 +482,8 @@ github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0 github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/slok/reload v0.1.0 h1:VEkUHiV+7WCJ5+zKxuWhD41NFpr1G7ACILz43aXuP+8= github.com/slok/reload v0.1.0/go.mod h1:rQBFU7T77Rrm9zMyZRtCWexRBcFesEGPWj72KPzra/A= +github.com/slok/sloth v0.11.0 h1:0N3975hhO8izJoHIiPMBKZWxk6lxamuTd45MxYsOk04= +github.com/slok/sloth v0.11.0/go.mod h1:xE9zMDVvMb5ylMhkacDtC02vmRhZHNuqe5ez93OiDms= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= diff --git a/pkg/kubernetes/api/sloth/v1/README.md b/pkg/kubernetes/api/sloth/v1/README.md index 46ef875c..7106b7b5 100755 --- a/pkg/kubernetes/api/sloth/v1/README.md +++ b/pkg/kubernetes/api/sloth/v1/README.md @@ -3,7 +3,7 @@ # v1 ```go -import "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" +import "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" ``` ## Index diff --git a/pkg/kubernetes/api/sloth/v1/register.go b/pkg/kubernetes/api/sloth/v1/register.go index f750ea0f..63bf02c5 100644 --- a/pkg/kubernetes/api/sloth/v1/register.go +++ b/pkg/kubernetes/api/sloth/v1/register.go @@ -5,7 +5,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - "github.com/slok/sloth/pkg/kubernetes/api/sloth" + "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth" ) const ( diff --git a/pkg/kubernetes/gen/clientset/versioned/clientset.go b/pkg/kubernetes/gen/clientset/versioned/clientset.go index e70b7571..c6bef38b 100644 --- a/pkg/kubernetes/gen/clientset/versioned/clientset.go +++ b/pkg/kubernetes/gen/clientset/versioned/clientset.go @@ -6,7 +6,7 @@ import ( "fmt" "net/http" - slothv1 "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1" discovery "k8s.io/client-go/discovery" rest "k8s.io/client-go/rest" flowcontrol "k8s.io/client-go/util/flowcontrol" diff --git a/pkg/kubernetes/gen/clientset/versioned/fake/clientset_generated.go b/pkg/kubernetes/gen/clientset/versioned/fake/clientset_generated.go index f352624b..b366847b 100644 --- a/pkg/kubernetes/gen/clientset/versioned/fake/clientset_generated.go +++ b/pkg/kubernetes/gen/clientset/versioned/fake/clientset_generated.go @@ -3,9 +3,9 @@ package fake import ( - clientset "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned" - slothv1 "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1" - fakeslothv1 "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake" + clientset "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1" + fakeslothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/discovery" diff --git a/pkg/kubernetes/gen/clientset/versioned/fake/register.go b/pkg/kubernetes/gen/clientset/versioned/fake/register.go index 6248599c..01bfa89a 100644 --- a/pkg/kubernetes/gen/clientset/versioned/fake/register.go +++ b/pkg/kubernetes/gen/clientset/versioned/fake/register.go @@ -3,7 +3,7 @@ package fake import ( - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" schema "k8s.io/apimachinery/pkg/runtime/schema" diff --git a/pkg/kubernetes/gen/clientset/versioned/scheme/register.go b/pkg/kubernetes/gen/clientset/versioned/scheme/register.go index c4f6bb53..bfbd4931 100644 --- a/pkg/kubernetes/gen/clientset/versioned/scheme/register.go +++ b/pkg/kubernetes/gen/clientset/versioned/scheme/register.go @@ -3,7 +3,7 @@ package scheme import ( - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" schema "k8s.io/apimachinery/pkg/runtime/schema" diff --git a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_prometheusservicelevel.go b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_prometheusservicelevel.go index fb32ddc2..c29a7f3b 100644 --- a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_prometheusservicelevel.go +++ b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_prometheusservicelevel.go @@ -5,7 +5,7 @@ package fake import ( "context" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" labels "k8s.io/apimachinery/pkg/labels" schema "k8s.io/apimachinery/pkg/runtime/schema" diff --git a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_sloth_client.go b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_sloth_client.go index 81c230ad..fc9ebe51 100644 --- a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_sloth_client.go +++ b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/fake/fake_sloth_client.go @@ -3,7 +3,7 @@ package fake import ( - v1 "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1" + v1 "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1" rest "k8s.io/client-go/rest" testing "k8s.io/client-go/testing" ) diff --git a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/prometheusservicelevel.go b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/prometheusservicelevel.go index ee2c8102..75d3dbfc 100644 --- a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/prometheusservicelevel.go +++ b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/prometheusservicelevel.go @@ -6,8 +6,8 @@ import ( "context" "time" - v1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" - scheme "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/scheme" + v1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + scheme "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/scheme" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" types "k8s.io/apimachinery/pkg/types" watch "k8s.io/apimachinery/pkg/watch" diff --git a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/sloth_client.go b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/sloth_client.go index ac0fbd46..2132205e 100644 --- a/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/sloth_client.go +++ b/pkg/kubernetes/gen/clientset/versioned/typed/sloth/v1/sloth_client.go @@ -5,8 +5,8 @@ package v1 import ( "net/http" - v1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" - "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/scheme" + v1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/scheme" rest "k8s.io/client-go/rest" ) diff --git a/pkg/prometheus/alertwindows/v1/README.md b/pkg/prometheus/alertwindows/v1/README.md index 09544ab2..0c3c20f4 100755 --- a/pkg/prometheus/alertwindows/v1/README.md +++ b/pkg/prometheus/alertwindows/v1/README.md @@ -3,7 +3,7 @@ # v1 ```go -import "github.com/slok/sloth/pkg/prometheus/alertwindows/v1" +import "github.com/kloudfuse/sloth/pkg/prometheus/alertwindows/v1" ``` ## Index diff --git a/pkg/prometheus/api/v1/README.md b/pkg/prometheus/api/v1/README.md index ab419d3d..11a2967f 100755 --- a/pkg/prometheus/api/v1/README.md +++ b/pkg/prometheus/api/v1/README.md @@ -3,7 +3,7 @@ # v1 ```go -import "github.com/slok/sloth/pkg/prometheus/api/v1" +import "github.com/kloudfuse/sloth/pkg/prometheus/api/v1" ``` ### Package v1 diff --git a/scripts/build/bin/build-raw.sh b/scripts/build/bin/build-raw.sh index eb13684b..423457f8 100755 --- a/scripts/build/bin/build-raw.sh +++ b/scripts/build/bin/build-raw.sh @@ -10,7 +10,7 @@ set -o nounset # - GOARCH: Arch compiling target. # - GOARM: ARM version. -version_path="github.com/slok/sloth/internal/info.Version" +version_path="github.com/kloudfuse/sloth/src/info.Version" src=./cmd/sloth out=./bin/sloth diff --git a/internal/alert/alert.go b/src/alert/alert.go similarity index 100% rename from internal/alert/alert.go rename to src/alert/alert.go diff --git a/internal/alert/alert_test.go b/src/alert/alert_test.go similarity index 99% rename from internal/alert/alert_test.go rename to src/alert/alert_test.go index 977e4df4..d438a70f 100644 --- a/internal/alert/alert_test.go +++ b/src/alert/alert_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/slok/sloth/internal/alert" + "github.com/kloudfuse/sloth/src/alert" ) func TestGenerateMWMBAlerts(t *testing.T) { diff --git a/internal/alert/window.go b/src/alert/window.go similarity index 98% rename from internal/alert/window.go rename to src/alert/window.go index dbc24450..00eaabcd 100644 --- a/internal/alert/window.go +++ b/src/alert/window.go @@ -11,8 +11,8 @@ import ( "gopkg.in/yaml.v2" - "github.com/slok/sloth/internal/log" - alertwindowsv1 "github.com/slok/sloth/pkg/prometheus/alertwindows/v1" + alertwindowsv1 "github.com/kloudfuse/sloth/pkg/prometheus/alertwindows/v1" + "github.com/kloudfuse/sloth/src/log" ) var ( diff --git a/internal/alert/windows/google-28d.yaml b/src/alert/windows/google-28d.yaml similarity index 100% rename from internal/alert/windows/google-28d.yaml rename to src/alert/windows/google-28d.yaml diff --git a/internal/alert/windows/google-30d.yaml b/src/alert/windows/google-30d.yaml similarity index 100% rename from internal/alert/windows/google-30d.yaml rename to src/alert/windows/google-30d.yaml diff --git a/src/app/generate/grafana.go b/src/app/generate/grafana.go new file mode 100644 index 00000000..eb834779 --- /dev/null +++ b/src/app/generate/grafana.go @@ -0,0 +1 @@ +package generate diff --git a/internal/app/generate/noop.go b/src/app/generate/noop.go similarity index 89% rename from internal/app/generate/noop.go rename to src/app/generate/noop.go index c0ee12dd..f691227b 100644 --- a/internal/app/generate/noop.go +++ b/src/app/generate/noop.go @@ -3,10 +3,10 @@ package generate import ( "context" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/prometheus" "github.com/prometheus/prometheus/model/rulefmt" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/prometheus" ) type noopSLIRecordingRulesGenerator bool diff --git a/internal/app/generate/prometheus.go b/src/app/generate/prometheus.go similarity index 97% rename from internal/app/generate/prometheus.go rename to src/app/generate/prometheus.go index 7bf2c2cf..4e84594c 100644 --- a/internal/app/generate/prometheus.go +++ b/src/app/generate/prometheus.go @@ -6,10 +6,10 @@ import ( "github.com/prometheus/prometheus/model/rulefmt" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/prometheus" ) // ServiceConfig is the application service configuration. diff --git a/internal/app/generate/prometheus_test.go b/src/app/generate/prometheus_test.go similarity index 98% rename from internal/app/generate/prometheus_test.go rename to src/app/generate/prometheus_test.go index 8a31a4ed..707db686 100644 --- a/internal/app/generate/prometheus_test.go +++ b/src/app/generate/prometheus_test.go @@ -9,10 +9,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/app/generate" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/app/generate" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/prometheus" ) func TestIntegrationAppServiceGenerate(t *testing.T) { diff --git a/internal/app/kubecontroller/handler.go b/src/app/kubecontroller/handler.go similarity index 96% rename from internal/app/kubecontroller/handler.go rename to src/app/kubecontroller/handler.go index eeb77151..3f86bcf8 100644 --- a/internal/app/kubecontroller/handler.go +++ b/src/app/kubecontroller/handler.go @@ -8,11 +8,11 @@ import ( "github.com/spotahome/kooper/v2/controller" "k8s.io/apimachinery/pkg/runtime" - "github.com/slok/sloth/internal/app/generate" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/k8sprometheus" - "github.com/slok/sloth/internal/log" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + "github.com/kloudfuse/sloth/src/app/generate" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/k8sprometheus" + "github.com/kloudfuse/sloth/src/log" ) // SpecLoader Knows how to load a Kubernetes Spec into an app model. diff --git a/internal/app/kubecontroller/retriever.go b/src/app/kubecontroller/retriever.go similarity index 95% rename from internal/app/kubecontroller/retriever.go rename to src/app/kubecontroller/retriever.go index b728c694..47fc5882 100644 --- a/internal/app/kubecontroller/retriever.go +++ b/src/app/kubecontroller/retriever.go @@ -10,7 +10,7 @@ import ( "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/tools/cache" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" ) // RetrieverKubernetesRepository is the service to manage k8s resources by the Kubernetes controller retrievers. diff --git a/internal/info/info.go b/src/info/info.go similarity index 100% rename from internal/info/info.go rename to src/info/info.go diff --git a/internal/k8sprometheus/helpers.go b/src/k8sprometheus/helpers.go similarity index 100% rename from internal/k8sprometheus/helpers.go rename to src/k8sprometheus/helpers.go diff --git a/internal/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go b/src/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go similarity index 100% rename from internal/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go rename to src/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go diff --git a/internal/k8sprometheus/kubernetes.go b/src/k8sprometheus/kubernetes.go similarity index 96% rename from internal/k8sprometheus/kubernetes.go rename to src/k8sprometheus/kubernetes.go index 75a0fb83..3a9563a2 100644 --- a/internal/k8sprometheus/kubernetes.go +++ b/src/k8sprometheus/kubernetes.go @@ -12,10 +12,10 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" - "github.com/slok/sloth/internal/log" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" - slothclientset "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned" - slothclientsetfake "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/fake" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + slothclientset "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned" + slothclientsetfake "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/fake" + "github.com/kloudfuse/sloth/src/log" ) type KubernetesService struct { diff --git a/internal/k8sprometheus/model.go b/src/k8sprometheus/model.go similarity index 95% rename from internal/k8sprometheus/model.go rename to src/k8sprometheus/model.go index d338fabc..7e1fa2af 100644 --- a/internal/k8sprometheus/model.go +++ b/src/k8sprometheus/model.go @@ -3,7 +3,7 @@ package k8sprometheus import ( "github.com/go-playground/validator/v10" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/prometheus" ) // K8sMeta is the Kubernetes metadata simplified. diff --git a/internal/k8sprometheus/model_test.go b/src/k8sprometheus/model_test.go similarity index 97% rename from internal/k8sprometheus/model_test.go rename to src/k8sprometheus/model_test.go index 25686e22..87785451 100644 --- a/internal/k8sprometheus/model_test.go +++ b/src/k8sprometheus/model_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/k8sprometheus" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/k8sprometheus" + "github.com/kloudfuse/sloth/src/prometheus" ) func getGoodSLOGroup() k8sprometheus.SLOGroup { diff --git a/internal/k8sprometheus/spec.go b/src/k8sprometheus/spec.go similarity index 95% rename from internal/k8sprometheus/spec.go rename to src/k8sprometheus/spec.go index d2226435..e86272ed 100644 --- a/internal/k8sprometheus/spec.go +++ b/src/k8sprometheus/spec.go @@ -8,10 +8,10 @@ import ( "k8s.io/apimachinery/pkg/runtime" - "github.com/slok/sloth/internal/prometheus" - k8sprometheusv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" - "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/scheme" - prometheuspluginv1 "github.com/slok/sloth/pkg/prometheus/plugin/v1" + k8sprometheusv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned/scheme" + prometheuspluginv1 "github.com/kloudfuse/sloth/pkg/prometheus/plugin/v1" + "github.com/kloudfuse/sloth/src/prometheus" ) type SLIPluginRepo interface { diff --git a/internal/k8sprometheus/spec_test.go b/src/k8sprometheus/spec_test.go similarity index 99% rename from internal/k8sprometheus/spec_test.go rename to src/k8sprometheus/spec_test.go index 5734c524..2fd05c14 100644 --- a/internal/k8sprometheus/spec_test.go +++ b/src/k8sprometheus/spec_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/k8sprometheus" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/k8sprometheus" + "github.com/kloudfuse/sloth/src/prometheus" ) type testMemPluginsRepo map[string]prometheus.SLIPlugin diff --git a/internal/k8sprometheus/storage.go b/src/k8sprometheus/storage.go similarity index 97% rename from internal/k8sprometheus/storage.go rename to src/k8sprometheus/storage.go index 1f31f833..a74a5a2e 100644 --- a/internal/k8sprometheus/storage.go +++ b/src/k8sprometheus/storage.go @@ -14,9 +14,9 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/prometheus" ) var ( diff --git a/internal/k8sprometheus/storage_test.go b/src/k8sprometheus/storage_test.go similarity index 98% rename from internal/k8sprometheus/storage_test.go rename to src/k8sprometheus/storage_test.go index 165304e4..59cd45e1 100644 --- a/internal/k8sprometheus/storage_test.go +++ b/src/k8sprometheus/storage_test.go @@ -14,10 +14,10 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" - "github.com/slok/sloth/internal/k8sprometheus" - "github.com/slok/sloth/internal/k8sprometheus/k8sprometheusmock" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/k8sprometheus" + "github.com/kloudfuse/sloth/src/k8sprometheus/k8sprometheusmock" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/prometheus" ) func TestIOWriterPrometheusOperatorYAMLRepo(t *testing.T) { diff --git a/internal/log/log.go b/src/log/log.go similarity index 100% rename from internal/log/log.go rename to src/log/log.go diff --git a/internal/log/logrus/logrus.go b/src/log/logrus/logrus.go similarity index 94% rename from internal/log/logrus/logrus.go rename to src/log/logrus/logrus.go index efa25bdf..6a18c411 100644 --- a/internal/log/logrus/logrus.go +++ b/src/log/logrus/logrus.go @@ -5,7 +5,7 @@ import ( "github.com/sirupsen/logrus" - "github.com/slok/sloth/internal/log" + "github.com/kloudfuse/sloth/src/log" ) type logger struct { diff --git a/internal/openslo/spec.go b/src/openslo/spec.go similarity index 99% rename from internal/openslo/spec.go rename to src/openslo/spec.go index d659cd21..230b157a 100644 --- a/internal/openslo/spec.go +++ b/src/openslo/spec.go @@ -12,7 +12,7 @@ import ( openslov1alpha "github.com/OpenSLO/oslo/pkg/manifest/v1alpha" "gopkg.in/yaml.v2" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/prometheus" ) type YAMLSpecLoader struct { diff --git a/internal/openslo/spec_test.go b/src/openslo/spec_test.go similarity index 98% rename from internal/openslo/spec_test.go rename to src/openslo/spec_test.go index cf0dd5e2..fbea1d95 100644 --- a/internal/openslo/spec_test.go +++ b/src/openslo/spec_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/openslo" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/openslo" + "github.com/kloudfuse/sloth/src/prometheus" ) func TestYAMLoadSpec(t *testing.T) { diff --git a/internal/prometheus/alert_rules.go b/src/prometheus/alert_rules.go similarity index 99% rename from internal/prometheus/alert_rules.go rename to src/prometheus/alert_rules.go index f402d520..7009c0cc 100644 --- a/internal/prometheus/alert_rules.go +++ b/src/prometheus/alert_rules.go @@ -8,7 +8,7 @@ import ( "github.com/prometheus/prometheus/model/rulefmt" - "github.com/slok/sloth/internal/alert" + "github.com/kloudfuse/sloth/src/alert" ) // genFunc knows how to generate an SLI recording rule for a specific time window. diff --git a/internal/prometheus/alert_rules_test.go b/src/prometheus/alert_rules_test.go similarity index 98% rename from internal/prometheus/alert_rules_test.go rename to src/prometheus/alert_rules_test.go index 2320510b..e69da60e 100644 --- a/internal/prometheus/alert_rules_test.go +++ b/src/prometheus/alert_rules_test.go @@ -8,8 +8,8 @@ import ( "github.com/prometheus/prometheus/model/rulefmt" "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/prometheus" ) func getSLOAlertGroup() alert.MWMBAlertGroup { diff --git a/internal/prometheus/conventions.go b/src/prometheus/conventions.go similarity index 100% rename from internal/prometheus/conventions.go rename to src/prometheus/conventions.go diff --git a/internal/prometheus/helpers.go b/src/prometheus/helpers.go similarity index 97% rename from internal/prometheus/helpers.go rename to src/prometheus/helpers.go index 7f40361e..95ee221d 100644 --- a/internal/prometheus/helpers.go +++ b/src/prometheus/helpers.go @@ -6,7 +6,7 @@ import ( prommodel "github.com/prometheus/common/model" - "github.com/slok/sloth/internal/alert" + "github.com/kloudfuse/sloth/src/alert" ) func mergeLabels(ms ...map[string]string) map[string]string { diff --git a/internal/prometheus/model.go b/src/prometheus/model.go similarity index 100% rename from internal/prometheus/model.go rename to src/prometheus/model.go diff --git a/internal/prometheus/model_test.go b/src/prometheus/model_test.go similarity index 99% rename from internal/prometheus/model_test.go rename to src/prometheus/model_test.go index 70d9298c..ae2d9a18 100644 --- a/internal/prometheus/model_test.go +++ b/src/prometheus/model_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/prometheus" ) func getGoodSLOGroup() prometheus.SLOGroup { diff --git a/internal/prometheus/prometheusmock/file_manager.go b/src/prometheus/prometheusmock/file_manager.go similarity index 100% rename from internal/prometheus/prometheusmock/file_manager.go rename to src/prometheus/prometheusmock/file_manager.go diff --git a/internal/prometheus/recording_rules.go b/src/prometheus/recording_rules.go similarity index 99% rename from internal/prometheus/recording_rules.go rename to src/prometheus/recording_rules.go index b9f4a6c4..0af8799b 100644 --- a/internal/prometheus/recording_rules.go +++ b/src/prometheus/recording_rules.go @@ -10,8 +10,8 @@ import ( "github.com/prometheus/prometheus/model/rulefmt" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/info" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/info" ) // sliRulesgenFunc knows how to generate an SLI recording rule for a specific time window. diff --git a/internal/prometheus/recording_rules_test.go b/src/prometheus/recording_rules_test.go similarity index 99% rename from internal/prometheus/recording_rules_test.go rename to src/prometheus/recording_rules_test.go index 6e518d78..450c80a5 100644 --- a/internal/prometheus/recording_rules_test.go +++ b/src/prometheus/recording_rules_test.go @@ -8,9 +8,9 @@ import ( "github.com/prometheus/prometheus/model/rulefmt" "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/alert" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/alert" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/prometheus" ) func getAlertGroup() alert.MWMBAlertGroup { diff --git a/internal/prometheus/sli_plugin.go b/src/prometheus/sli_plugin.go similarity index 97% rename from internal/prometheus/sli_plugin.go rename to src/prometheus/sli_plugin.go index 17eb9c87..9d2d492c 100644 --- a/internal/prometheus/sli_plugin.go +++ b/src/prometheus/sli_plugin.go @@ -12,9 +12,9 @@ import ( "github.com/traefik/yaegi/interp" "github.com/traefik/yaegi/stdlib" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/pkg/prometheus/plugin/v1" - pluginv1 "github.com/slok/sloth/pkg/prometheus/plugin/v1" + "github.com/kloudfuse/sloth/pkg/prometheus/plugin/v1" + pluginv1 "github.com/kloudfuse/sloth/pkg/prometheus/plugin/v1" + "github.com/kloudfuse/sloth/src/log" ) // FileManager knows how to manage files. diff --git a/internal/prometheus/sli_plugin_test.go b/src/prometheus/sli_plugin_test.go similarity index 97% rename from internal/prometheus/sli_plugin_test.go rename to src/prometheus/sli_plugin_test.go index f7f6bb2a..44390c24 100644 --- a/internal/prometheus/sli_plugin_test.go +++ b/src/prometheus/sli_plugin_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" - "github.com/slok/sloth/internal/prometheus" - "github.com/slok/sloth/internal/prometheus/prometheusmock" + "github.com/kloudfuse/sloth/src/prometheus" + "github.com/kloudfuse/sloth/src/prometheus/prometheusmock" ) func TestSLIPluginLoader(t *testing.T) { diff --git a/internal/prometheus/spec.go b/src/prometheus/spec.go similarity index 96% rename from internal/prometheus/spec.go rename to src/prometheus/spec.go index 1935aa38..e4d01961 100644 --- a/internal/prometheus/spec.go +++ b/src/prometheus/spec.go @@ -8,8 +8,8 @@ import ( "gopkg.in/yaml.v2" - prometheusv1 "github.com/slok/sloth/pkg/prometheus/api/v1" - prometheuspluginv1 "github.com/slok/sloth/pkg/prometheus/plugin/v1" + prometheusv1 "github.com/kloudfuse/sloth/pkg/prometheus/api/v1" + prometheuspluginv1 "github.com/kloudfuse/sloth/pkg/prometheus/plugin/v1" ) type SLIPluginRepo interface { diff --git a/internal/prometheus/spec_test.go b/src/prometheus/spec_test.go similarity index 99% rename from internal/prometheus/spec_test.go rename to src/prometheus/spec_test.go index 8c33a4fd..5c215787 100644 --- a/internal/prometheus/spec_test.go +++ b/src/prometheus/spec_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/prometheus" ) type testMemPluginsRepo map[string]prometheus.SLIPlugin diff --git a/internal/prometheus/storage.go b/src/prometheus/storage.go similarity index 97% rename from internal/prometheus/storage.go rename to src/prometheus/storage.go index 9b37ca92..e2ae0c5c 100644 --- a/internal/prometheus/storage.go +++ b/src/prometheus/storage.go @@ -9,8 +9,8 @@ import ( "github.com/prometheus/prometheus/model/rulefmt" "gopkg.in/yaml.v2" - "github.com/slok/sloth/internal/info" - "github.com/slok/sloth/internal/log" + "github.com/kloudfuse/sloth/src/info" + "github.com/kloudfuse/sloth/src/log" ) var ( diff --git a/internal/prometheus/storage_test.go b/src/prometheus/storage_test.go similarity index 98% rename from internal/prometheus/storage_test.go rename to src/prometheus/storage_test.go index 545c692b..0b095f2c 100644 --- a/internal/prometheus/storage_test.go +++ b/src/prometheus/storage_test.go @@ -8,8 +8,8 @@ import ( "github.com/prometheus/prometheus/model/rulefmt" "github.com/stretchr/testify/assert" - "github.com/slok/sloth/internal/log" - "github.com/slok/sloth/internal/prometheus" + "github.com/kloudfuse/sloth/src/log" + "github.com/kloudfuse/sloth/src/prometheus" ) func TestIOWriterGroupedRulesYAMLRepoStore(t *testing.T) { diff --git a/test/integration/k8scontroller/exp_base_test.go b/test/integration/k8scontroller/exp_base_test.go index affc1102..5b5da05d 100644 --- a/test/integration/k8scontroller/exp_base_test.go +++ b/test/integration/k8scontroller/exp_base_test.go @@ -5,7 +5,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" ) func getBasePrometheusServiceLevel() *slothv1.PrometheusServiceLevel { diff --git a/test/integration/k8scontroller/exp_plugin_test.go b/test/integration/k8scontroller/exp_plugin_test.go index 01f14568..0f4bb1bd 100644 --- a/test/integration/k8scontroller/exp_plugin_test.go +++ b/test/integration/k8scontroller/exp_plugin_test.go @@ -5,7 +5,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" ) func getPluginPrometheusServiceLevel() *slothv1.PrometheusServiceLevel { diff --git a/test/integration/k8scontroller/helpers.go b/test/integration/k8scontroller/helpers.go index 47241b3f..86793797 100644 --- a/test/integration/k8scontroller/helpers.go +++ b/test/integration/k8scontroller/helpers.go @@ -15,8 +15,8 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" - slothclientset "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned" - "github.com/slok/sloth/test/integration/testutils" + slothclientset "github.com/kloudfuse/sloth/pkg/kubernetes/gen/clientset/versioned" + "github.com/kloudfuse/sloth/test/integration/testutils" ) type Config struct { diff --git a/test/integration/k8scontroller/k8scontroller_test.go b/test/integration/k8scontroller/k8scontroller_test.go index 65658473..748f6227 100644 --- a/test/integration/k8scontroller/k8scontroller_test.go +++ b/test/integration/k8scontroller/k8scontroller_test.go @@ -12,9 +12,9 @@ import ( "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1" - "github.com/slok/sloth/test/integration/k8scontroller" - "github.com/slok/sloth/test/integration/testutils" + slothv1 "github.com/kloudfuse/sloth/pkg/kubernetes/api/sloth/v1" + "github.com/kloudfuse/sloth/test/integration/k8scontroller" + "github.com/kloudfuse/sloth/test/integration/testutils" ) // sanitizePrometheusRule will remove all the dynamic fields on a monitoringv1.PrometheusRule object diff --git a/test/integration/prometheus/generate_test.go b/test/integration/prometheus/generate_test.go index 0b2f28eb..c8a2710f 100644 --- a/test/integration/prometheus/generate_test.go +++ b/test/integration/prometheus/generate_test.go @@ -10,8 +10,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/slok/sloth/test/integration/prometheus" - "github.com/slok/sloth/test/integration/testutils" + "github.com/kloudfuse/sloth/test/integration/prometheus" + "github.com/kloudfuse/sloth/test/integration/testutils" ) type expecteOutLoader struct { diff --git a/test/integration/prometheus/helpers.go b/test/integration/prometheus/helpers.go index cfa4f00f..0b7508f5 100644 --- a/test/integration/prometheus/helpers.go +++ b/test/integration/prometheus/helpers.go @@ -7,7 +7,7 @@ import ( "os/exec" "testing" - "github.com/slok/sloth/test/integration/testutils" + "github.com/kloudfuse/sloth/test/integration/testutils" ) type Config struct { diff --git a/test/integration/prometheus/validate_test.go b/test/integration/prometheus/validate_test.go index 9e1f905c..03164636 100644 --- a/test/integration/prometheus/validate_test.go +++ b/test/integration/prometheus/validate_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/slok/sloth/test/integration/prometheus" + "github.com/kloudfuse/sloth/test/integration/prometheus" ) func TestPrometheusValidate(t *testing.T) { From 03e8035947211c4d42d17de417cb4094dbfa8331 Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 6 Mar 2023 16:26:05 -0800 Subject: [PATCH 02/12] Expose generator --- cmd/sloth/commands/generate.go | 12 ++++++------ cmd/sloth/commands/validate.go | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/sloth/commands/generate.go b/cmd/sloth/commands/generate.go index ea73c6c3..7069e99b 100644 --- a/cmd/sloth/commands/generate.go +++ b/cmd/sloth/commands/generate.go @@ -238,7 +238,7 @@ func (g generateCommand) Run(ctx context.Context, config RootConfig) error { } } - gen := generator{ + gen := Generator{ logger: logger, windowsRepo: windowsRepo, disableRecordings: g.disableRecordings, @@ -298,7 +298,7 @@ type generateTarget struct { SLOData string } -type generator struct { +type Generator struct { logger log.Logger windowsRepo alert.WindowsRepo disableRecordings bool @@ -308,7 +308,7 @@ type generator struct { } // GeneratePrometheus generates the SLOs based on a raw regular Prometheus spec format input and outs a Prometheus raw yaml. -func (g generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGroup, out io.Writer) error { +func (g Generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGroup, out io.Writer) error { g.logger.Infof("Generating from Prometheus spec") info := info.Info{ Version: info.Version, @@ -339,7 +339,7 @@ func (g generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGr } // generateKubernetes generates the SLOs based on a Kuberentes spec format input and outs a Kubernetes prometheus operator CRD yaml. -func (g generator) GenerateKubernetes(ctx context.Context, sloGroup k8sprometheus.SLOGroup, out io.Writer) error { +func (g Generator) GenerateKubernetes(ctx context.Context, sloGroup k8sprometheus.SLOGroup, out io.Writer) error { g.logger.Infof("Generating from Kubernetes Prometheus spec") info := info.Info{ @@ -370,7 +370,7 @@ func (g generator) GenerateKubernetes(ctx context.Context, sloGroup k8sprometheu } // generateOpenSLO generates the SLOs based on a OpenSLO spec format input and outs a Prometheus raw yaml. -func (g generator) GenerateOpenSLO(ctx context.Context, slos prometheus.SLOGroup, out io.Writer) error { +func (g Generator) GenerateOpenSLO(ctx context.Context, slos prometheus.SLOGroup, out io.Writer) error { g.logger.Infof("Generating from OpenSLO spec") info := info.Info{ Version: info.Version, @@ -401,7 +401,7 @@ func (g generator) GenerateOpenSLO(ctx context.Context, slos prometheus.SLOGroup } // generate is the main generator logic that all the spec types and storers share. Mainly has the logic of the generate app service. -func (g generator) generateRules(ctx context.Context, info info.Info, slos prometheus.SLOGroup) (*generate.Response, error) { +func (g Generator) generateRules(ctx context.Context, info info.Info, slos prometheus.SLOGroup) (*generate.Response, error) { // Disable recording rules if required. var sliRuleGen generate.SLIRecordingRulesGenerator = generate.NoopSLIRecordingRulesGenerator var metaRuleGen generate.MetadataRecordingRulesGenerator = generate.NoopMetadataRecordingRulesGenerator diff --git a/cmd/sloth/commands/validate.go b/cmd/sloth/commands/validate.go index 49ca7d9d..87b0d4aa 100644 --- a/cmd/sloth/commands/validate.go +++ b/cmd/sloth/commands/validate.go @@ -125,7 +125,7 @@ func (v validateCommand) Run(ctx context.Context, config RootConfig) error { // Split YAMLs in case we have multiple yaml files in a single file. splittedSLOsData := splitYAML(slxData) - gen := generator{ + gen := Generator{ logger: log.Noop, windowsRepo: windowsRepo, extraLabels: v.extraLabels, From 87920e74fdccf7e7442e95e59616e2d38ae03dee Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 6 Mar 2023 16:40:56 -0800 Subject: [PATCH 03/12] Expose generator vars --- cmd/sloth/commands/generate.go | 48 +++++++++++++++++----------------- cmd/sloth/commands/validate.go | 6 ++--- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/cmd/sloth/commands/generate.go b/cmd/sloth/commands/generate.go index 7069e99b..607d4e74 100644 --- a/cmd/sloth/commands/generate.go +++ b/cmd/sloth/commands/generate.go @@ -239,12 +239,12 @@ func (g generateCommand) Run(ctx context.Context, config RootConfig) error { } gen := Generator{ - logger: logger, - windowsRepo: windowsRepo, - disableRecordings: g.disableRecordings, - disableAlerts: g.disableAlerts, - disableOptimizedRules: g.disableOptimizedRules, - extraLabels: g.extraLabels, + Logger: logger, + WindowsRepo: windowsRepo, + DisableRecordings: g.disableRecordings, + DisableAlerts: g.disableAlerts, + DisableOptimizedRules: g.disableOptimizedRules, + ExtraLabels: g.extraLabels, } for _, genTarget := range genTargets { @@ -299,17 +299,17 @@ type generateTarget struct { } type Generator struct { - logger log.Logger - windowsRepo alert.WindowsRepo - disableRecordings bool - disableAlerts bool - disableOptimizedRules bool - extraLabels map[string]string + Logger log.Logger + WindowsRepo alert.WindowsRepo + DisableRecordings bool + DisableAlerts bool + DisableOptimizedRules bool + ExtraLabels map[string]string } // GeneratePrometheus generates the SLOs based on a raw regular Prometheus spec format input and outs a Prometheus raw yaml. func (g Generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGroup, out io.Writer) error { - g.logger.Infof("Generating from Prometheus spec") + g.Logger.Infof("Generating from Prometheus spec") info := info.Info{ Version: info.Version, Mode: info.ModeCLIGenPrometheus, @@ -321,7 +321,7 @@ func (g Generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGr return err } - repo := prometheus.NewIOWriterGroupedRulesYAMLRepo(out, g.logger) + repo := prometheus.NewIOWriterGroupedRulesYAMLRepo(out, g.Logger) storageSLOs := make([]prometheus.StorageSLO, 0, len(result.PrometheusSLOs)) for _, s := range result.PrometheusSLOs { storageSLOs = append(storageSLOs, prometheus.StorageSLO{ @@ -340,7 +340,7 @@ func (g Generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGr // generateKubernetes generates the SLOs based on a Kuberentes spec format input and outs a Kubernetes prometheus operator CRD yaml. func (g Generator) GenerateKubernetes(ctx context.Context, sloGroup k8sprometheus.SLOGroup, out io.Writer) error { - g.logger.Infof("Generating from Kubernetes Prometheus spec") + g.Logger.Infof("Generating from Kubernetes Prometheus spec") info := info.Info{ Version: info.Version, @@ -352,7 +352,7 @@ func (g Generator) GenerateKubernetes(ctx context.Context, sloGroup k8sprometheu return err } - repo := k8sprometheus.NewIOWriterPrometheusOperatorYAMLRepo(out, g.logger) + repo := k8sprometheus.NewIOWriterPrometheusOperatorYAMLRepo(out, g.Logger) storageSLOs := make([]k8sprometheus.StorageSLO, 0, len(result.PrometheusSLOs)) for _, s := range result.PrometheusSLOs { storageSLOs = append(storageSLOs, k8sprometheus.StorageSLO{ @@ -371,7 +371,7 @@ func (g Generator) GenerateKubernetes(ctx context.Context, sloGroup k8sprometheu // generateOpenSLO generates the SLOs based on a OpenSLO spec format input and outs a Prometheus raw yaml. func (g Generator) GenerateOpenSLO(ctx context.Context, slos prometheus.SLOGroup, out io.Writer) error { - g.logger.Infof("Generating from OpenSLO spec") + g.Logger.Infof("Generating from OpenSLO spec") info := info.Info{ Version: info.Version, Mode: info.ModeCLIGenOpenSLO, @@ -383,7 +383,7 @@ func (g Generator) GenerateOpenSLO(ctx context.Context, slos prometheus.SLOGroup return err } - repo := prometheus.NewIOWriterGroupedRulesYAMLRepo(out, g.logger) + repo := prometheus.NewIOWriterGroupedRulesYAMLRepo(out, g.Logger) storageSLOs := make([]prometheus.StorageSLO, 0, len(result.PrometheusSLOs)) for _, s := range result.PrometheusSLOs { storageSLOs = append(storageSLOs, prometheus.StorageSLO{ @@ -405,10 +405,10 @@ func (g Generator) generateRules(ctx context.Context, info info.Info, slos prome // Disable recording rules if required. var sliRuleGen generate.SLIRecordingRulesGenerator = generate.NoopSLIRecordingRulesGenerator var metaRuleGen generate.MetadataRecordingRulesGenerator = generate.NoopMetadataRecordingRulesGenerator - if !g.disableRecordings { + if !g.DisableRecordings { // Disable optimized rules if required. sliRuleGen = prometheus.OptimizedSLIRecordingRulesGenerator - if g.disableOptimizedRules { + if g.DisableOptimizedRules { sliRuleGen = prometheus.SLIRecordingRulesGenerator } metaRuleGen = prometheus.MetadataRecordingRulesGenerator @@ -416,24 +416,24 @@ func (g Generator) generateRules(ctx context.Context, info info.Info, slos prome // Disable alert rules if required. var alertRuleGen generate.SLOAlertRulesGenerator = generate.NoopSLOAlertRulesGenerator - if !g.disableAlerts { + if !g.DisableAlerts { alertRuleGen = prometheus.SLOAlertRulesGenerator } // Generate. controller, err := generate.NewService(generate.ServiceConfig{ - AlertGenerator: alert.NewGenerator(g.windowsRepo), + AlertGenerator: alert.NewGenerator(g.WindowsRepo), SLIRecordingRulesGenerator: sliRuleGen, MetaRecordingRulesGenerator: metaRuleGen, SLOAlertRulesGenerator: alertRuleGen, - Logger: g.logger, + Logger: g.Logger, }) if err != nil { return nil, fmt.Errorf("could not create application service: %w", err) } result, err := controller.Generate(ctx, generate.Request{ - ExtraLabels: g.extraLabels, + ExtraLabels: g.ExtraLabels, Info: info, SLOGroup: slos, }) diff --git a/cmd/sloth/commands/validate.go b/cmd/sloth/commands/validate.go index 87b0d4aa..31fb0398 100644 --- a/cmd/sloth/commands/validate.go +++ b/cmd/sloth/commands/validate.go @@ -126,9 +126,9 @@ func (v validateCommand) Run(ctx context.Context, config RootConfig) error { splittedSLOsData := splitYAML(slxData) gen := Generator{ - logger: log.Noop, - windowsRepo: windowsRepo, - extraLabels: v.extraLabels, + Logger: log.Noop, + WindowsRepo: windowsRepo, + ExtraLabels: v.extraLabels, } // Prepare file validation result and start validation result for every SLO in the file. From 0c5129a6fa3ce21d18e0cdb1caa59f1dc6f161cd Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Tue, 7 Mar 2023 14:22:03 -0800 Subject: [PATCH 04/12] Log statements --- cmd/sloth/commands/generate.go | 1 + src/prometheus/storage.go | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cmd/sloth/commands/generate.go b/cmd/sloth/commands/generate.go index 607d4e74..ae240163 100644 --- a/cmd/sloth/commands/generate.go +++ b/cmd/sloth/commands/generate.go @@ -324,6 +324,7 @@ func (g Generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGr repo := prometheus.NewIOWriterGroupedRulesYAMLRepo(out, g.Logger) storageSLOs := make([]prometheus.StorageSLO, 0, len(result.PrometheusSLOs)) for _, s := range result.PrometheusSLOs { + g.Logger.Infof(s.SLO.Name) storageSLOs = append(storageSLOs, prometheus.StorageSLO{ SLO: s.SLO, Rules: s.SLORules, diff --git a/src/prometheus/storage.go b/src/prometheus/storage.go index e2ae0c5c..08a5af43 100644 --- a/src/prometheus/storage.go +++ b/src/prometheus/storage.go @@ -89,7 +89,10 @@ func (i IOWriterGroupedRulesYAMLRepo) StoreSLOs(ctx context.Context, slos []Stor } logger := i.logger.WithCtxValues(ctx) - logger.WithValues(log.Kv{"groups": len(ruleGroups.Groups)}).Infof("Prometheus rules written") + logger.Infof("test 1") + i.logger.Infof("test 2") + logger.WithValues(log.Kv{"groups": len(ruleGroups.Groups)}).Infof("Prometheus rules written 1") + i.logger.WithValues(log.Kv{"groups": len(ruleGroups.Groups)}).Infof("Prometheus rules written 2") return nil } From 95c9a0f4ec62b0114738b6f2e54b8a19cd2f6afb Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Tue, 7 Mar 2023 15:12:58 -0800 Subject: [PATCH 05/12] Revert "Log statements" This reverts commit 0c5129a6fa3ce21d18e0cdb1caa59f1dc6f161cd. --- cmd/sloth/commands/generate.go | 1 - src/prometheus/storage.go | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/cmd/sloth/commands/generate.go b/cmd/sloth/commands/generate.go index ae240163..607d4e74 100644 --- a/cmd/sloth/commands/generate.go +++ b/cmd/sloth/commands/generate.go @@ -324,7 +324,6 @@ func (g Generator) GeneratePrometheus(ctx context.Context, slos prometheus.SLOGr repo := prometheus.NewIOWriterGroupedRulesYAMLRepo(out, g.Logger) storageSLOs := make([]prometheus.StorageSLO, 0, len(result.PrometheusSLOs)) for _, s := range result.PrometheusSLOs { - g.Logger.Infof(s.SLO.Name) storageSLOs = append(storageSLOs, prometheus.StorageSLO{ SLO: s.SLO, Rules: s.SLORules, diff --git a/src/prometheus/storage.go b/src/prometheus/storage.go index 08a5af43..e2ae0c5c 100644 --- a/src/prometheus/storage.go +++ b/src/prometheus/storage.go @@ -89,10 +89,7 @@ func (i IOWriterGroupedRulesYAMLRepo) StoreSLOs(ctx context.Context, slos []Stor } logger := i.logger.WithCtxValues(ctx) - logger.Infof("test 1") - i.logger.Infof("test 2") - logger.WithValues(log.Kv{"groups": len(ruleGroups.Groups)}).Infof("Prometheus rules written 1") - i.logger.WithValues(log.Kv{"groups": len(ruleGroups.Groups)}).Infof("Prometheus rules written 2") + logger.WithValues(log.Kv{"groups": len(ruleGroups.Groups)}).Infof("Prometheus rules written") return nil } From 3e958384e8bcaa4794513a15dbf3a386e4064a81 Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 27 Mar 2023 12:34:51 -0700 Subject: [PATCH 06/12] Create 1d error and total count recording rules, and use them in error_ratio for 1d --- src/prometheus/recording_rules.go | 41 ++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/prometheus/recording_rules.go b/src/prometheus/recording_rules.go index 0af8799b..23cfb7aa 100644 --- a/src/prometheus/recording_rules.go +++ b/src/prometheus/recording_rules.go @@ -21,6 +21,11 @@ type sliRecordingRulesGenerator struct { genFunc sliRulesgenFunc } +const ( + sliTotalCount1d = "slo:sli_total_count1d" + sliErrorCount1d = "slo:sli_error_count1d" +) + // OptimizedSLIRecordingRulesGenerator knows how to generate the SLI prometheus recording rules // from an SLO optimizing where it can. // Normally these rules are used by the SLO alerts. @@ -106,12 +111,23 @@ func rawSLIRecordGenerator(slo SLO, window time.Duration, alerts alert.MWMBAlert } func eventsSLIRecordGenerator(slo SLO, window time.Duration, alerts alert.MWMBAlertGroup) (*rulefmt.Rule, error) { - const sliExprTplFmt = `(%s) -/ -(%s) -` + var idFilter string + sliExprTplFmt := `(%s)/(%s)` + errorQuery := slo.SLI.Events.ErrorQuery + totalQuery := slo.SLI.Events.TotalQuery + strWindow := timeDurationToPromStr(window) + // Generate our first level of template by assembling the error and total expressions. - sliExprTpl := fmt.Sprintf(sliExprTplFmt, slo.SLI.Events.ErrorQuery, slo.SLI.Events.TotalQuery) + sliExprTpl := fmt.Sprintf(sliExprTplFmt, errorQuery, totalQuery) + + // If this is 1d, use the 1d recording rules + if strWindow == "1d" { + sliExprTplFmt = `(%s{%s}[{{.window}}]) / (%s{%s}[{{.window}}])` + errorQuery = sliErrorCount1d + totalQuery = sliTotalCount1d + idFilter = fmt.Sprintf(`sloth_id="%s"`, slo.ID) + sliExprTpl = fmt.Sprintf(sliExprTplFmt, sliErrorCount1d, idFilter, sliTotalCount1d, idFilter) + } // Render with our templated data. tpl, err := template.New("sliExpr").Option("missingkey=error").Parse(sliExprTpl) @@ -119,7 +135,6 @@ func eventsSLIRecordGenerator(slo SLO, window time.Duration, alerts alert.MWMBAl return nil, fmt.Errorf("could not create SLI expression template data: %w", err) } - strWindow := timeDurationToPromStr(window) var b bytes.Buffer err = tpl.Execute(&b, map[string]string{ tplKeyWindow: strWindow, @@ -300,6 +315,20 @@ func (m metadataRecordingRulesGenerator) GenerateMetadataRecordingRules(ctx cont sloObjectiveLabelName: strconv.FormatFloat(slo.Objective, 'f', -1, 64), }), }, + + //slo:sli_total_count1d, filter by sloID + { + Record: sliTotalCount1d, + Expr: slo.SLI.Events.TotalQuery, + Labels: labels, + }, + + //slo:sli_error_count1d, filter by sloID + { + Record: sliErrorCount1d, + Expr: slo.SLI.Events.ErrorQuery, + Labels: labels, + }, } return rules, nil From 5e3d68aeab6f691c17f4d93b67a3c19168d12b4c Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 27 Mar 2023 16:11:01 -0700 Subject: [PATCH 07/12] Fix recording rule time window --- src/prometheus/recording_rules.go | 35 +++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/prometheus/recording_rules.go b/src/prometheus/recording_rules.go index 23cfb7aa..cd71de70 100644 --- a/src/prometheus/recording_rules.go +++ b/src/prometheus/recording_rules.go @@ -261,6 +261,37 @@ func (m metadataRecordingRulesGenerator) GenerateMetadataRecordingRules(ctx cont return nil, fmt.Errorf("could not render period burn rate prometheus metadata recording rule expression: %w", err) } + sliExprTplFmt := `(%s)` + errorQuery := slo.SLI.Events.ErrorQuery + totalQuery := slo.SLI.Events.TotalQuery + + sliExprTplError := fmt.Sprintf(sliExprTplFmt, errorQuery) + sliExprTplTotal := fmt.Sprintf(sliExprTplFmt, totalQuery) + + tplError, err := template.New("sliExpr").Option("missingkey=error").Parse(sliExprTplError) + if err != nil { + return nil, fmt.Errorf("could not create SLI expression template data: %w", err) + } + tplTotal, err := template.New("sliExpr").Option("missingkey=error").Parse(sliExprTplTotal) + if err != nil { + return nil, fmt.Errorf("could not create SLI expression template data: %w", err) + } + + var bError bytes.Buffer + err = tplError.Execute(&bError, map[string]string{ + tplKeyWindow: "1d", + }) + if err != nil { + return nil, fmt.Errorf("could not render SLI expression template: %w", err) + } + var bTotal bytes.Buffer + err = tplTotal.Execute(&bTotal, map[string]string{ + tplKeyWindow: "1d", + }) + if err != nil { + return nil, fmt.Errorf("could not render SLI expression template: %w", err) + } + rules := []rulefmt.Rule{ // SLO Objective. { @@ -319,14 +350,14 @@ func (m metadataRecordingRulesGenerator) GenerateMetadataRecordingRules(ctx cont //slo:sli_total_count1d, filter by sloID { Record: sliTotalCount1d, - Expr: slo.SLI.Events.TotalQuery, + Expr: bTotal.String(), Labels: labels, }, //slo:sli_error_count1d, filter by sloID { Record: sliErrorCount1d, - Expr: slo.SLI.Events.ErrorQuery, + Expr: bError.String(), Labels: labels, }, } From 8c918280464c86766c5f46384fd783177cb5a770 Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 27 Mar 2023 16:32:07 -0700 Subject: [PATCH 08/12] Remove time window from error_ratio1d recording rule --- src/prometheus/recording_rules.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/prometheus/recording_rules.go b/src/prometheus/recording_rules.go index cd71de70..45344cde 100644 --- a/src/prometheus/recording_rules.go +++ b/src/prometheus/recording_rules.go @@ -122,7 +122,7 @@ func eventsSLIRecordGenerator(slo SLO, window time.Duration, alerts alert.MWMBAl // If this is 1d, use the 1d recording rules if strWindow == "1d" { - sliExprTplFmt = `(%s{%s}[{{.window}}]) / (%s{%s}[{{.window}}])` + sliExprTplFmt = `(%s{%s}) / (%s{%s})` errorQuery = sliErrorCount1d totalQuery = sliTotalCount1d idFilter = fmt.Sprintf(`sloth_id="%s"`, slo.ID) From 5bb4f9785ece7854568c1362d923b7de9c0e50fd Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Wed, 5 Apr 2023 11:31:26 -0700 Subject: [PATCH 09/12] Reduce annotations and remove extraLabels --- src/prometheus/alert_rules.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/prometheus/alert_rules.go b/src/prometheus/alert_rules.go index 7009c0cc..5f677a70 100644 --- a/src/prometheus/alert_rules.go +++ b/src/prometheus/alert_rules.go @@ -85,17 +85,18 @@ func defaultSLOAlertGenerator(slo SLO, sloAlert AlertMeta, quick, slow alert.MWM } // Add specific annotations. - severity := quick.Severity.String() // Any(quick or slow) should work because are the same. extraAnnotations := map[string]string{ - "title": fmt.Sprintf("(%s) {{$labels.%s}} {{$labels.%s}} SLO error budget burn rate is too fast.", severity, sloServiceLabelName, sloNameLabelName), - "summary": fmt.Sprintf("{{$labels.%s}} {{$labels.%s}} SLO error budget burn rate is over expected.", sloServiceLabelName, sloNameLabelName), + "summary": "SLO error budget burn rate is over expected.", } // Add specific labels. We don't add the labels from the rules because we will // inherit on the alerts, this way we avoid warnings of overrided labels. - extraLabels := map[string]string{ - sloSeverityLabelName: severity, - } + // severity := quick.Severity.String() // Any(quick or slow) should work because are the same. + // extraLabels := map[string]string{ + // sloSeverityLabelName: severity, + // } + + extraLabels := map[string]string{} return &rulefmt.Rule{ Alert: sloAlert.Name, From 024f9a6fee8959b30083d0f4357a1de0b5d96031 Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 10 Apr 2023 14:30:45 -0700 Subject: [PATCH 10/12] Skip prom validation for SLOs Since we aren't installing in prom and grafana has different requirements for alert labels, don't validate that alert labels are prom compliant --- src/prometheus/model.go | 9 ++--- src/prometheus/model_test.go | 72 ------------------------------------ 2 files changed, 3 insertions(+), 78 deletions(-) diff --git a/src/prometheus/model.go b/src/prometheus/model.go index f2ac02c1..283535d1 100644 --- a/src/prometheus/model.go +++ b/src/prometheus/model.go @@ -33,8 +33,8 @@ type SLIEvents struct { type AlertMeta struct { Disable bool Name string `validate:"required_if_enabled"` - Labels map[string]string `validate:"dive,keys,prom_label_key,endkeys,required,prom_label_value"` - Annotations map[string]string `validate:"dive,keys,prom_annot_key,endkeys,required"` + Labels map[string]string `validate:"dive,keys,endkeys,required"` + Annotations map[string]string `validate:"dive,keys,endkeys,required"` } // SLO represents a service level objective configuration. @@ -46,7 +46,7 @@ type SLO struct { SLI SLI `validate:"required"` TimeWindow time.Duration `validate:"required"` Objective float64 `validate:"gt=0,lte=100"` - Labels map[string]string `validate:"dive,keys,prom_label_key,endkeys,required,prom_label_value"` + Labels map[string]string `validate:"dive,keys,endkeys,required"` PageAlertMeta AlertMeta TicketAlertMeta AlertMeta } @@ -80,9 +80,6 @@ var modelSpecValidate = func() *validator.Validate { // More information on prometheus validators logic: https://github.com/prometheus/prometheus/blob/df80dc4d3970121f2f76cba79050983ffb3cdbb0/pkg/rulefmt/rulefmt.go#L188-L208 mustRegisterValidation(v, "prom_expr", validatePromExpression) - mustRegisterValidation(v, "prom_label_key", validatePromLabelKey) - mustRegisterValidation(v, "prom_label_value", validatePromLabelValue) - mustRegisterValidation(v, "prom_annot_key", validatePromAnnotKey) mustRegisterValidation(v, "name", validateName) mustRegisterValidation(v, "required_if_enabled", validateRequiredEnabledAlertName) mustRegisterValidation(v, "template_vars", validateTemplateVars) diff --git a/src/prometheus/model_test.go b/src/prometheus/model_test.go index ae2d9a18..fc7a4673 100644 --- a/src/prometheus/model_test.go +++ b/src/prometheus/model_test.go @@ -289,15 +289,6 @@ func TestModelValidationSpec(t *testing.T) { expErrMessage: "Key: 'SLOGroup.SLOs[0].Objective' Error:Field validation for 'Objective' failed on the 'lte' tag", }, - "SLO Labels should be valid prometheus keys.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].Labels[".something"] = "label key is wrong" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].Labels[.something]' Error:Field validation for 'Labels[.something]' failed on the 'prom_label_key' tag", - }, - "SLO Labels should have prometheus values.": { slo: func() prometheus.SLOGroup { s := getGoodSLOGroup() @@ -307,15 +298,6 @@ func TestModelValidationSpec(t *testing.T) { expErrMessage: "Key: 'SLOGroup.SLOs[0].Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'required' tag", }, - "SLO Labels should be valid prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].Labels["something"] = "\xc3\x28" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'prom_label_value' tag", - }, - "SLO page alert name is required.": { slo: func() prometheus.SLOGroup { s := getGoodSLOGroup() @@ -356,15 +338,6 @@ func TestModelValidationSpec(t *testing.T) { }, }, - "SLO page alert labels should be valid prometheus keys.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].PageAlertMeta.Labels[".something"] = "label key is wrong" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].PageAlertMeta.Labels[.something]' Error:Field validation for 'Labels[.something]' failed on the 'prom_label_key' tag", - }, - "SLO page alert labels should have prometheus values.": { slo: func() prometheus.SLOGroup { s := getGoodSLOGroup() @@ -374,24 +347,6 @@ func TestModelValidationSpec(t *testing.T) { expErrMessage: "Key: 'SLOGroup.SLOs[0].PageAlertMeta.Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'required' tag", }, - "SLO page alert labels should be valid prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].PageAlertMeta.Labels["something"] = "\xc3\x28" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].PageAlertMeta.Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'prom_label_value' tag", - }, - - "SLO page alert annotations should be valid prometheus keys.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].PageAlertMeta.Annotations[".something"] = "label key is wrong" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].PageAlertMeta.Annotations[.something]' Error:Field validation for 'Annotations[.something]' failed on the 'prom_annot_key' tag", - }, - "SLO page alert annotations should have prometheus values.": { slo: func() prometheus.SLOGroup { s := getGoodSLOGroup() @@ -401,15 +356,6 @@ func TestModelValidationSpec(t *testing.T) { expErrMessage: "Key: 'SLOGroup.SLOs[0].PageAlertMeta.Annotations[something]' Error:Field validation for 'Annotations[something]' failed on the 'required' tag", }, - "SLO warning alert labels should be valid prometheus keys.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].TicketAlertMeta.Labels[".something"] = "label key is wrong" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].TicketAlertMeta.Labels[.something]' Error:Field validation for 'Labels[.something]' failed on the 'prom_label_key' tag", - }, - "SLO warning alert labels should have prometheus values.": { slo: func() prometheus.SLOGroup { s := getGoodSLOGroup() @@ -419,24 +365,6 @@ func TestModelValidationSpec(t *testing.T) { expErrMessage: "Key: 'SLOGroup.SLOs[0].TicketAlertMeta.Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'required' tag", }, - "SLO warning alert labels should be valid prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].TicketAlertMeta.Labels["something"] = "\xc3\x28" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].TicketAlertMeta.Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'prom_label_value' tag", - }, - - "SLO warning alert annotations should be valid prometheus keys.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].TicketAlertMeta.Annotations[".something"] = "label key is wrong" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].TicketAlertMeta.Annotations[.something]' Error:Field validation for 'Annotations[.something]' failed on the 'prom_annot_key' tag", - }, - "SLO warning alert annotations should have prometheus values.": { slo: func() prometheus.SLOGroup { s := getGoodSLOGroup() From 42fa7e1624e377d98f65050956f997796a8bd3b3 Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Wed, 12 Apr 2023 11:15:00 -0700 Subject: [PATCH 11/12] Remove required tag from labels and annotations --- src/prometheus/model.go | 6 ++--- src/prometheus/model_test.go | 45 ------------------------------------ 2 files changed, 3 insertions(+), 48 deletions(-) diff --git a/src/prometheus/model.go b/src/prometheus/model.go index 283535d1..eed49453 100644 --- a/src/prometheus/model.go +++ b/src/prometheus/model.go @@ -33,8 +33,8 @@ type SLIEvents struct { type AlertMeta struct { Disable bool Name string `validate:"required_if_enabled"` - Labels map[string]string `validate:"dive,keys,endkeys,required"` - Annotations map[string]string `validate:"dive,keys,endkeys,required"` + Labels map[string]string `validate:"dive,keys,endkeys"` + Annotations map[string]string `validate:"dive,keys,endkeys"` } // SLO represents a service level objective configuration. @@ -46,7 +46,7 @@ type SLO struct { SLI SLI `validate:"required"` TimeWindow time.Duration `validate:"required"` Objective float64 `validate:"gt=0,lte=100"` - Labels map[string]string `validate:"dive,keys,endkeys,required"` + Labels map[string]string `validate:"dive,keys,endkeys"` PageAlertMeta AlertMeta TicketAlertMeta AlertMeta } diff --git a/src/prometheus/model_test.go b/src/prometheus/model_test.go index fc7a4673..b9012f52 100644 --- a/src/prometheus/model_test.go +++ b/src/prometheus/model_test.go @@ -289,15 +289,6 @@ func TestModelValidationSpec(t *testing.T) { expErrMessage: "Key: 'SLOGroup.SLOs[0].Objective' Error:Field validation for 'Objective' failed on the 'lte' tag", }, - "SLO Labels should have prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].Labels["something"] = "" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'required' tag", - }, - "SLO page alert name is required.": { slo: func() prometheus.SLOGroup { s := getGoodSLOGroup() @@ -337,42 +328,6 @@ func TestModelValidationSpec(t *testing.T) { return s }, }, - - "SLO page alert labels should have prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].PageAlertMeta.Labels["something"] = "" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].PageAlertMeta.Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'required' tag", - }, - - "SLO page alert annotations should have prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].PageAlertMeta.Annotations["something"] = "" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].PageAlertMeta.Annotations[something]' Error:Field validation for 'Annotations[something]' failed on the 'required' tag", - }, - - "SLO warning alert labels should have prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].TicketAlertMeta.Labels["something"] = "" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].TicketAlertMeta.Labels[something]' Error:Field validation for 'Labels[something]' failed on the 'required' tag", - }, - - "SLO warning alert annotations should have prometheus values.": { - slo: func() prometheus.SLOGroup { - s := getGoodSLOGroup() - s.SLOs[0].TicketAlertMeta.Annotations["something"] = "" - return s - }, - expErrMessage: "Key: 'SLOGroup.SLOs[0].TicketAlertMeta.Annotations[something]' Error:Field validation for 'Annotations[something]' failed on the 'required' tag", - }, } for name, test := range tests { From e8427ede1e17c5fa1dd012b7439a9eb968d32c8d Mon Sep 17 00:00:00 2001 From: Chris Leege Date: Mon, 22 May 2023 16:57:00 -0700 Subject: [PATCH 12/12] Use optimize (5m window) for any time window >= 6h --- src/prometheus/recording_rules.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/prometheus/recording_rules.go b/src/prometheus/recording_rules.go index 45344cde..d01b004a 100644 --- a/src/prometheus/recording_rules.go +++ b/src/prometheus/recording_rules.go @@ -38,7 +38,10 @@ var SLIRecordingRulesGenerator = sliRecordingRulesGenerator{genFunc: factorySLIR func optimizedFactorySLIRecordGenerator(slo SLO, window time.Duration, alerts alert.MWMBAlertGroup) (*rulefmt.Rule, error) { // Optimize the rules that are for the total period time window. - if window == slo.TimeWindow { + sixHours := time.Duration(6 * time.Hour) + + // Any windows that are greater than or equal to 6h will use the shor window (5m by default) + if window >= sixHours { return optimizedSLIRecordGenerator(slo, window, alerts.PageQuick.ShortWindow) }