Skip to content

Commit fbdcb45

Browse files
committed
Move k8s meta storage structs as a common model
Signed-off-by: Xabier Larrakoetxea <me@slok.dev>
1 parent 0a7cdca commit fbdcb45

File tree

16 files changed

+153
-181
lines changed

16 files changed

+153
-181
lines changed

cmd/sloth/commands/generate.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717

1818
"github.com/slok/sloth/internal/log"
1919
"github.com/slok/sloth/internal/plugin"
20-
"github.com/slok/sloth/internal/storage"
2120
storageio "github.com/slok/sloth/internal/storage/io"
2221
"github.com/slok/sloth/pkg/common/model"
2322
utilsdata "github.com/slok/sloth/pkg/common/utils/data"
@@ -288,10 +287,7 @@ func generateSLOs(ctx context.Context, logger log.Logger, genService slothlib.Pr
288287
case genResult.OriginalSource.K8sSlothV1 != nil:
289288
repo := storageio.NewIOWriterPrometheusOperatorYAMLRepo(genTarget.Out, logger)
290289

291-
kmeta := storage.K8sMeta{
292-
Kind: "PrometheusServiceLevel",
293-
APIVersion: "sloth.slok.dev/v1",
294-
UID: string(genResult.OriginalSource.K8sSlothV1.UID),
290+
kmeta := model.K8sMeta{
295291
Name: genResult.OriginalSource.K8sSlothV1.Name,
296292
Namespace: genResult.OriginalSource.K8sSlothV1.Namespace,
297293
Labels: genResult.OriginalSource.K8sSlothV1.Labels,

cmd/sloth/commands/k8scontroller.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import (
3636
"github.com/slok/sloth/internal/plugin"
3737
pluginenginesli "github.com/slok/sloth/internal/pluginengine/sli"
3838
pluginengineslo "github.com/slok/sloth/internal/pluginengine/slo"
39-
"github.com/slok/sloth/internal/storage"
4039
storagefs "github.com/slok/sloth/internal/storage/fs"
4140
storageio "github.com/slok/sloth/internal/storage/io"
4241
storagek8s "github.com/slok/sloth/internal/storage/k8s"
@@ -388,7 +387,7 @@ type kubernetesService interface {
388387
ListPrometheusServiceLevels(ctx context.Context, ns string, opts metav1.ListOptions) (*slothv1.PrometheusServiceLevelList, error)
389388
WatchPrometheusServiceLevels(ctx context.Context, ns string, opts metav1.ListOptions) (watch.Interface, error)
390389
EnsurePrometheusServiceLevelStatus(ctx context.Context, slo *slothv1.PrometheusServiceLevel, err error) error
391-
StoreSLOs(ctx context.Context, kmeta storage.K8sMeta, slos model.PromSLOGroupResult) error
390+
StoreSLOs(ctx context.Context, kmeta model.K8sMeta, slos model.PromSLOGroupResult) error
392391
}
393392

394393
func (k kubeControllerCommand) newKubernetesService(ctx context.Context, config RootConfig) (kubernetesService, error) {

internal/app/kubecontroller/handler.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/slok/sloth/internal/app/generate"
1212
"github.com/slok/sloth/internal/info"
1313
"github.com/slok/sloth/internal/log"
14-
"github.com/slok/sloth/internal/storage"
1514
commonmodel "github.com/slok/sloth/pkg/common/model"
1615

1716
slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1"
@@ -29,7 +28,7 @@ type Generator interface {
2928

3029
// Repository knows how to store generated SLO Prometheus rules.
3130
type Repository interface {
32-
StoreSLOs(ctx context.Context, kmeta storage.K8sMeta, slos commonmodel.PromSLOGroupResult) error
31+
StoreSLOs(ctx context.Context, kmeta commonmodel.K8sMeta, slos commonmodel.PromSLOGroupResult) error
3332
}
3433

3534
// KubeStatusStorer knows how to set the status of Prometheus service levels Kubernetes CRD.
@@ -172,10 +171,7 @@ func (h handler) handlePrometheusServiceLevelV1(ctx context.Context, psl *slothv
172171
})
173172
}
174173

175-
kmeta := storage.K8sMeta{
176-
Kind: "PrometheusServiceLevel",
177-
APIVersion: "sloth.slok.dev/v1",
178-
UID: string(model.OriginalSource.K8sSlothV1.UID),
174+
kmeta := commonmodel.K8sMeta{
179175
Name: model.OriginalSource.K8sSlothV1.Name,
180176
Namespace: model.OriginalSource.K8sSlothV1.Namespace,
181177
Labels: model.OriginalSource.K8sSlothV1.Labels,

internal/kubernetes/modelmap/slo.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@ import (
1010
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1111
"k8s.io/apimachinery/pkg/util/intstr"
1212

13-
"github.com/slok/sloth/internal/storage"
1413
commonerrors "github.com/slok/sloth/pkg/common/errors"
1514
"github.com/slok/sloth/pkg/common/model"
1615
promutils "github.com/slok/sloth/pkg/common/utils/prometheus"
1716
)
1817

19-
func MapModelToPrometheusOperator(ctx context.Context, kmeta storage.K8sMeta, slos model.PromSLOGroupResult) (*monitoringv1.PrometheusRule, error) {
18+
func MapModelToPrometheusOperator(ctx context.Context, kmeta model.K8sMeta, slos model.PromSLOGroupResult) (*monitoringv1.PrometheusRule, error) {
2019
// Add extra labels.
2120
labels := map[string]string{
2221
"app.kubernetes.io/component": "SLO",

internal/pluginengine/slo/custom/github_com-slok-sloth-pkg-common-model.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/storage/io/prometheus_operator.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
kubernetesmodelmap "github.com/slok/sloth/internal/kubernetes/modelmap"
1313
"github.com/slok/sloth/internal/log"
14-
"github.com/slok/sloth/internal/storage"
1514
"github.com/slok/sloth/pkg/common/model"
1615
)
1716

@@ -31,7 +30,7 @@ type IOWriterPrometheusOperatorYAMLRepo struct {
3130
logger log.Logger
3231
}
3332

34-
func (i IOWriterPrometheusOperatorYAMLRepo) StoreSLOs(ctx context.Context, kmeta storage.K8sMeta, slos model.PromSLOGroupResult) error {
33+
func (i IOWriterPrometheusOperatorYAMLRepo) StoreSLOs(ctx context.Context, kmeta model.K8sMeta, slos model.PromSLOGroupResult) error {
3534
rule, err := kubernetesmodelmap.MapModelToPrometheusOperator(ctx, kmeta, slos)
3635
if err != nil {
3736
return fmt.Errorf("could not map model to Prometheus operator CR: %w", err)

internal/storage/io/prometheus_operator_test.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,33 @@ import (
1010
"github.com/stretchr/testify/assert"
1111

1212
"github.com/slok/sloth/internal/log"
13-
"github.com/slok/sloth/internal/storage"
1413
"github.com/slok/sloth/internal/storage/io"
1514
"github.com/slok/sloth/pkg/common/model"
1615
)
1716

1817
func TestIOWriterPrometheusOperatorYAMLRepo(t *testing.T) {
1918
tests := map[string]struct {
20-
k8sMeta storage.K8sMeta
19+
k8sMeta model.K8sMeta
2120
slos model.PromSLOGroupResult
2221
expYAML string
2322
expErr bool
2423
}{
2524
"Having 0 SLO rules should fail.": {
26-
k8sMeta: storage.K8sMeta{},
25+
k8sMeta: model.K8sMeta{},
2726
slos: model.PromSLOGroupResult{},
2827
expErr: true,
2928
},
3029

3130
"Having 0 SLO rules generated should fail.": {
32-
k8sMeta: storage.K8sMeta{},
31+
k8sMeta: model.K8sMeta{},
3332
slos: model.PromSLOGroupResult{
3433
SLOResults: []model.PromSLOResult{},
3534
},
3635
expErr: true,
3736
},
3837

3938
"Having a single SLI recording rule should render correctly.": {
40-
k8sMeta: storage.K8sMeta{
39+
k8sMeta: model.K8sMeta{
4140
Name: "test-name",
4241
Namespace: "test-ns",
4342
Labels: map[string]string{"lk1": "lv1"},
@@ -87,7 +86,7 @@ spec:
8786
},
8887

8988
"Having a single metadata recording rule should render correctly.": {
90-
k8sMeta: storage.K8sMeta{
89+
k8sMeta: model.K8sMeta{
9190
Name: "test-name",
9291
Namespace: "test-ns",
9392
Labels: map[string]string{"lk1": "lv1"},
@@ -139,7 +138,7 @@ spec:
139138
},
140139

141140
"Having a single SLO alert rule should render correctly.": {
142-
k8sMeta: storage.K8sMeta{
141+
k8sMeta: model.K8sMeta{
143142
Name: "test-name",
144143
Namespace: "test-ns",
145144
Labels: map[string]string{"lk1": "lv1"},
@@ -192,7 +191,7 @@ spec:
192191
},
193192

194193
"Having a multiple SLO alert and recording rules should render correctly.": {
195-
k8sMeta: storage.K8sMeta{
194+
k8sMeta: model.K8sMeta{
196195
Name: "test-name",
197196
Namespace: "test-ns",
198197
Labels: map[string]string{"lk1": "lv1"},

internal/storage/k8s/dry_run.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"k8s.io/apimachinery/pkg/watch"
88

99
"github.com/slok/sloth/internal/log"
10-
"github.com/slok/sloth/internal/storage"
1110
"github.com/slok/sloth/pkg/common/model"
1211
slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1"
1312
)
@@ -38,7 +37,7 @@ func (r DryRunApiserverRepository) EnsurePrometheusServiceLevelStatus(ctx contex
3837
return nil
3938
}
4039

41-
func (r DryRunApiserverRepository) StoreSLOs(ctx context.Context, kmeta storage.K8sMeta, slos model.PromSLOGroupResult) error {
40+
func (r DryRunApiserverRepository) StoreSLOs(ctx context.Context, kmeta model.K8sMeta, slos model.PromSLOGroupResult) error {
4241
r.logger.Infof("Dry run StoreSLOs")
4342
return nil
4443
}

internal/storage/k8s/fake.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"k8s.io/apimachinery/pkg/watch"
1010

1111
"github.com/slok/sloth/internal/log"
12-
"github.com/slok/sloth/internal/storage"
1312
"github.com/slok/sloth/pkg/common/model"
1413
slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1"
1514
slothclientsetfake "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned/fake"
@@ -42,7 +41,7 @@ func (r FakeApiserverRepository) EnsurePrometheusServiceLevelStatus(ctx context.
4241
return r.ksvc.EnsurePrometheusServiceLevelStatus(ctx, slo, err)
4342
}
4443

45-
func (r FakeApiserverRepository) StoreSLOs(ctx context.Context, kmeta storage.K8sMeta, slos model.PromSLOGroupResult) error {
44+
func (r FakeApiserverRepository) StoreSLOs(ctx context.Context, kmeta model.K8sMeta, slos model.PromSLOGroupResult) error {
4645
return r.ksvc.StoreSLOs(ctx, kmeta, slos)
4746
}
4847

internal/storage/k8s/k8s.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ import (
99
monitoringclientset "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned"
1010
kubeerrors "k8s.io/apimachinery/pkg/api/errors"
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12-
"k8s.io/apimachinery/pkg/types"
1312
"k8s.io/apimachinery/pkg/watch"
1413

1514
kubernetesmodelmap "github.com/slok/sloth/internal/kubernetes/modelmap"
1615
"github.com/slok/sloth/internal/log"
17-
"github.com/slok/sloth/internal/storage"
1816
"github.com/slok/sloth/pkg/common/model"
1917
slothv1 "github.com/slok/sloth/pkg/kubernetes/api/sloth/v1"
2018
slothclientset "github.com/slok/sloth/pkg/kubernetes/gen/clientset/versioned"
@@ -65,7 +63,7 @@ func (r ApiserverRepository) EnsurePrometheusServiceLevelStatus(ctx context.Cont
6563
return err
6664
}
6765

68-
func (r ApiserverRepository) StoreSLOs(ctx context.Context, kmeta storage.K8sMeta, slos model.PromSLOGroupResult) error {
66+
func (r ApiserverRepository) StoreSLOs(ctx context.Context, kmeta model.K8sMeta, slos model.PromSLOGroupResult) error {
6967
// Map to the Prometheus operator CRD.
7068
rule, err := kubernetesmodelmap.MapModelToPrometheusOperator(ctx, kmeta, slos)
7169
if err != nil {
@@ -74,10 +72,10 @@ func (r ApiserverRepository) StoreSLOs(ctx context.Context, kmeta storage.K8sMet
7472

7573
// Add object reference.
7674
rule.ObjectMeta.OwnerReferences = append(rule.ObjectMeta.OwnerReferences, metav1.OwnerReference{
77-
Kind: kmeta.Kind,
78-
APIVersion: kmeta.APIVersion,
79-
Name: kmeta.Name,
80-
UID: types.UID(kmeta.UID),
75+
Kind: "PrometheusServiceLevel",
76+
APIVersion: "sloth.slok.dev/v1",
77+
Name: slos.OriginalSource.K8sSlothV1.Name,
78+
UID: slos.OriginalSource.K8sSlothV1.UID,
8179
})
8280

8381
// Create on API server.

0 commit comments

Comments
 (0)