forked from argoproj/argo-rollouts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
service.go
45 lines (40 loc) · 1.48 KB
/
service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package service
import (
"fmt"
corev1 "k8s.io/api/core/v1"
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
)
func GetRolloutSelectorLabel(svc *corev1.Service) (string, bool) {
if svc == nil {
return "", false
}
if svc.Spec.Selector == nil {
return "", false
}
currentSelectorValue, ok := svc.Spec.Selector[v1alpha1.DefaultRolloutUniqueLabelKey]
return currentSelectorValue, ok
}
// GetRolloutServiceKeys returns services keys (namespace/serviceName) which are referenced by specified rollout
func GetRolloutServiceKeys(rollout *v1alpha1.Rollout) []string {
servicesSet := make(map[string]bool)
if rollout.Spec.Strategy.BlueGreen != nil {
if rollout.Spec.Strategy.BlueGreen.ActiveService != "" {
servicesSet[fmt.Sprintf("%s/%s", rollout.Namespace, rollout.Spec.Strategy.BlueGreen.ActiveService)] = true
}
if rollout.Spec.Strategy.BlueGreen.PreviewService != "" {
servicesSet[fmt.Sprintf("%s/%s", rollout.Namespace, rollout.Spec.Strategy.BlueGreen.PreviewService)] = true
}
} else if rollout.Spec.Strategy.Canary != nil {
if rollout.Spec.Strategy.Canary.CanaryService != "" {
servicesSet[fmt.Sprintf("%s/%s", rollout.Namespace, rollout.Spec.Strategy.Canary.CanaryService)] = true
}
if rollout.Spec.Strategy.Canary.StableService != "" {
servicesSet[fmt.Sprintf("%s/%s", rollout.Namespace, rollout.Spec.Strategy.Canary.StableService)] = true
}
}
var services []string
for svc := range servicesSet {
services = append(services, svc)
}
return services
}