Skip to content

Commit 49e7ca1

Browse files
adjust translators for new SDK
1 parent 918a21a commit 49e7ca1

File tree

4 files changed

+73
-4
lines changed

4 files changed

+73
-4
lines changed

v2/devspace.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,8 @@ deployments:
3838
enabled: false
3939
resources:
4040
limits:
41-
cpu: null
4241
memory: 4Gi
4342
requests:
44-
cpu: null
4543
memory: 4Gi
4644
distro:
4745
k3s:

v2/syncers/podmonitor/syncer.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"k8s.io/apimachinery/pkg/util/errors"
1818
ctrl "sigs.k8s.io/controller-runtime"
1919
"sigs.k8s.io/controller-runtime/pkg/client"
20+
internaltranslators "github.com/codefresh-contrib/vcluster-prometheus-operator-plugin/v2/translators"
2021
)
2122

2223
func init() {
@@ -79,7 +80,7 @@ func (s *podMonitorSyncer) Sync(ctx *synccontext.SyncContext, event *synccontext
7980
event.Host.Labels = translate.HostLabels(event.Virtual, event.Host)
8081

8182
// sync virtual to host
82-
event.Host.Spec = event.Virtual.Spec
83+
event.Host.Spec = *internaltranslators.TranslatePodMonitorSpec(&event.Virtual.Spec, event.Virtual.Namespace)
8384

8485
return ctrl.Result{}, nil
8586
}

v2/syncers/servicemonitor/syncer.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"k8s.io/apimachinery/pkg/util/errors"
1818
ctrl "sigs.k8s.io/controller-runtime"
1919
"sigs.k8s.io/controller-runtime/pkg/client"
20+
internaltranslators "github.com/codefresh-contrib/vcluster-prometheus-operator-plugin/v2/translators"
2021
)
2122

2223
func init() {
@@ -79,7 +80,7 @@ func (s *serviceMonitorSyncer) Sync(ctx *synccontext.SyncContext, event *synccon
7980
event.Host.Labels = translate.HostLabels(event.Virtual, event.Host)
8081

8182
// sync virtual to host
82-
event.Host.Spec = event.Virtual.Spec
83+
event.Host.Spec = *internaltranslators.TranslateServiceMonitorSpec(&event.Virtual.Spec, event.Virtual.Namespace)
8384

8485
return ctrl.Result{}, nil
8586
}

v2/translators/monitorspec.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package translators
2+
3+
import (
4+
"github.com/loft-sh/vcluster/pkg/util/translate"
5+
promoperatorv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
6+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
)
8+
9+
type MonitorSpec struct {
10+
NamespaceSelector promoperatorv1.NamespaceSelector
11+
Selector metav1.LabelSelector
12+
JobLabel string
13+
Namespace string
14+
}
15+
16+
func (s *MonitorSpec) rewriteSpec() *MonitorSpec {
17+
18+
newSpec := s
19+
monitorNamespaces := []string{}
20+
21+
// If not any namespace - it's required to constuct a list of namespaces
22+
if !s.NamespaceSelector.Any {
23+
if len(s.NamespaceSelector.MatchNames) > 0 {
24+
monitorNamespaces = s.NamespaceSelector.DeepCopy().MatchNames
25+
} else {
26+
monitorNamespaces = append(monitorNamespaces, s.Namespace)
27+
}
28+
}
29+
30+
// Clear namespace selector as it does not apply on host cluster
31+
newSpec.NamespaceSelector = promoperatorv1.NamespaceSelector{}
32+
newSpec.Selector = *translate.HostLabelSelector(&s.Selector)
33+
34+
if len(monitorNamespaces) > 0 {
35+
nsExpression := metav1.LabelSelectorRequirement{Key: translate.NamespaceLabel, Operator: metav1.LabelSelectorOpIn, Values: monitorNamespaces}
36+
newSpec.Selector.MatchExpressions = append(s.Selector.MatchExpressions, nsExpression)
37+
}
38+
39+
// Translate job labels
40+
if len(s.JobLabel) > 0 {
41+
newSpec.JobLabel = translate.HostLabel(s.JobLabel)
42+
}
43+
44+
return newSpec
45+
}
46+
47+
func TranslatePodMonitorSpec(vPodMonitorSpec *promoperatorv1.PodMonitorSpec, podMonitorNamespace string) *promoperatorv1.PodMonitorSpec {
48+
changedSpec := &MonitorSpec{Selector: vPodMonitorSpec.Selector, NamespaceSelector: vPodMonitorSpec.NamespaceSelector, JobLabel: vPodMonitorSpec.JobLabel, Namespace: podMonitorNamespace}
49+
changedSpec = changedSpec.rewriteSpec()
50+
newSpec := vPodMonitorSpec.DeepCopy()
51+
52+
newSpec.Selector = changedSpec.Selector
53+
newSpec.NamespaceSelector = changedSpec.NamespaceSelector
54+
newSpec.JobLabel = changedSpec.JobLabel
55+
56+
return newSpec
57+
}
58+
59+
func TranslateServiceMonitorSpec(vPodMonitorSpec *promoperatorv1.ServiceMonitorSpec, serviceMonitorNamespace string) *promoperatorv1.ServiceMonitorSpec {
60+
changedSpec := &MonitorSpec{Selector: vPodMonitorSpec.Selector, NamespaceSelector: vPodMonitorSpec.NamespaceSelector, JobLabel: vPodMonitorSpec.JobLabel, Namespace: serviceMonitorNamespace}
61+
changedSpec = changedSpec.rewriteSpec()
62+
newSpec := vPodMonitorSpec.DeepCopy()
63+
64+
newSpec.Selector = changedSpec.Selector
65+
newSpec.NamespaceSelector = changedSpec.NamespaceSelector
66+
newSpec.JobLabel = changedSpec.JobLabel
67+
68+
return newSpec
69+
}

0 commit comments

Comments
 (0)