-
Notifications
You must be signed in to change notification settings - Fork 3
/
daemon-set.go
51 lines (46 loc) · 1.37 KB
/
daemon-set.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
46
47
48
49
50
51
package objects
import (
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// DaemonSetOptions represents fields that can be passed in to create a daemon set
type DaemonSetOptions struct {
Name string
PodTemplate corev1.PodTemplateSpec
Annotations map[string]string
Selector map[string]string
Labels map[string]string
UpdateStrategy appsv1.DaemonSetUpdateStrategy
}
// DaemonSet returns a pointer to a daemon set object
func DaemonSet(opts DaemonSetOptions) *appsv1.DaemonSet {
defaultLabels := map[string]string{"app": opts.Name}
// Provide backwards compatibility to resources that called this before label and
// selector were added to type. Could combine into one compound if statement, but
// may cause problems if one is set and the other is not
if opts.Labels == nil {
opts.Labels = defaultLabels
}
if opts.Selector == nil {
opts.Selector = defaultLabels
}
return &appsv1.DaemonSet{
TypeMeta: metav1.TypeMeta{
Kind: "DaemonSet",
APIVersion: "apps/v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: opts.Name,
Labels: opts.Labels,
Annotations: opts.Annotations,
},
Spec: appsv1.DaemonSetSpec{
Template: opts.PodTemplate,
Selector: &metav1.LabelSelector{
MatchLabels: opts.Selector,
},
UpdateStrategy: opts.UpdateStrategy,
},
}
}