Skip to content

Commit 4442301

Browse files
Merge pull request #368 from kstrenkova/refactor-pod-definitions
Refactor pod definitions
2 parents 6d9a94f + eed7ef4 commit 4442301

File tree

9 files changed

+215
-230
lines changed

9 files changed

+215
-230
lines changed

pkg/ansibletest/const.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ansibletest
33

44
import (
55
"github.com/openstack-k8s-operators/lib-common/modules/storage"
6+
corev1 "k8s.io/api/core/v1"
67
)
78

89
const (
@@ -11,7 +12,18 @@ const (
1112

1213
// AnsibleTest is the definition of the ansibletest group
1314
AnsibleTest storage.PropagationType = "AnsibleTest"
15+
16+
// PodRunAsUser is the UID to run the AnsibleTest pod as
17+
PodRunAsUser = int64(227)
18+
19+
// PodRunAsGroup is the GID to run the AnsibleTest pod as
20+
PodRunAsGroup = int64(227)
1421
)
1522

16-
// AnsibleTestPropagation is the definition of the AnsibleTest propagation service
17-
var AnsibleTestPropagation = []storage.PropagationType{AnsibleTest}
23+
var (
24+
// AnsibleTestPropagation is the definition of the Ansible Test propagation service
25+
AnsibleTestPropagation = []storage.PropagationType{AnsibleTest}
26+
27+
// PodCapabilities defines the Linux capabilities for AnsibleTest pods
28+
PodCapabilities = []corev1.Capability{"NET_ADMIN", "NET_RAW"}
29+
)

pkg/ansibletest/pod.go

Lines changed: 20 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
testv1beta1 "github.com/openstack-k8s-operators/test-operator/api/v1beta1"
77
util "github.com/openstack-k8s-operators/test-operator/pkg/util"
88
corev1 "k8s.io/api/core/v1"
9-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
109
)
1110

1211
// Pod - prepare pod to run AnsibleTests tests
@@ -20,55 +19,24 @@ func Pod(
2019
externalWorkflowCounter int,
2120
containerImage string,
2221
) *corev1.Pod {
23-
24-
runAsUser := int64(227)
25-
runAsGroup := int64(227)
26-
27-
capabilities := []corev1.Capability{"NET_ADMIN", "NET_RAW"}
28-
securityContext := util.GetSecurityContext(runAsUser, capabilities, instance.Spec.Privileged)
29-
30-
pod := &corev1.Pod{
31-
ObjectMeta: metav1.ObjectMeta{
32-
Name: podName,
33-
Namespace: instance.Namespace,
34-
Labels: labels,
35-
},
36-
Spec: corev1.PodSpec{
37-
AutomountServiceAccountToken: &instance.Spec.Privileged,
38-
RestartPolicy: corev1.RestartPolicyNever,
39-
Tolerations: instance.Spec.Tolerations,
40-
NodeSelector: instance.Spec.NodeSelector,
41-
SecurityContext: &corev1.PodSecurityContext{
42-
RunAsUser: &runAsUser,
43-
RunAsGroup: &runAsGroup,
44-
FSGroup: &runAsGroup,
45-
},
46-
Containers: []corev1.Container{
47-
{
48-
Name: instance.Name,
49-
Image: containerImage,
50-
Args: []string{},
51-
Env: env.MergeEnvs([]corev1.EnvVar{}, envVars),
52-
VolumeMounts: GetVolumeMounts(mountCerts, AnsibleTestPropagation, instance, externalWorkflowCounter),
53-
SecurityContext: &securityContext,
54-
Resources: instance.Spec.Resources,
55-
},
56-
},
57-
Volumes: GetVolumes(
58-
instance,
59-
logsPVCName,
60-
mountCerts,
61-
AnsibleTestPropagation,
62-
externalWorkflowCounter,
63-
),
64-
},
65-
}
66-
67-
if len(instance.Spec.SELinuxLevel) > 0 {
68-
pod.Spec.SecurityContext.SELinuxOptions = &corev1.SELinuxOptions{
69-
Level: instance.Spec.SELinuxLevel,
70-
}
71-
}
72-
73-
return pod
22+
return util.BuildTestPod(
23+
nil, // No annotations
24+
PodCapabilities,
25+
containerImage,
26+
instance.Name,
27+
[]corev1.EnvFromSource{}, // No EnvFromSource
28+
envVars,
29+
labels,
30+
instance.Namespace,
31+
instance.Spec.NodeSelector,
32+
podName,
33+
instance.Spec.Privileged,
34+
instance.Spec.Resources,
35+
PodRunAsGroup,
36+
PodRunAsUser,
37+
instance.Spec.SELinuxLevel,
38+
instance.Spec.Tolerations,
39+
GetVolumeMounts(mountCerts, AnsibleTestPropagation, instance, externalWorkflowCounter),
40+
GetVolumes(instance, logsPVCName, mountCerts, AnsibleTestPropagation, externalWorkflowCounter),
41+
)
7442
}

pkg/horizontest/const.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package horizontest
33

44
import (
55
"github.com/openstack-k8s-operators/lib-common/modules/storage"
6+
corev1 "k8s.io/api/core/v1"
67
)
78

89
const (
@@ -11,7 +12,18 @@ const (
1112

1213
// HorizonTest is the definition of the horizontest group
1314
HorizonTest storage.PropagationType = "HorizonTest"
15+
16+
// PodRunAsUser is the UID to run the HorizonTest pod as
17+
PodRunAsUser = int64(42455)
18+
19+
// PodRunAsGroup is the GID to run the HorizonTest pod as
20+
PodRunAsGroup = int64(42455)
1421
)
1522

16-
// HorizonTestPropagation is the definition of the HorizonTest propagation service
17-
var HorizonTestPropagation = []storage.PropagationType{HorizonTest}
23+
var (
24+
// HorizonTestPropagation is the definition of the HorizonTest propagation service
25+
HorizonTestPropagation = []storage.PropagationType{HorizonTest}
26+
27+
// PodCapabilities defines the Linux capabilities for HorizonTest pods
28+
PodCapabilities = []corev1.Capability{"NET_ADMIN", "NET_RAW"}
29+
)

pkg/horizontest/pod.go

Lines changed: 20 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
testv1beta1 "github.com/openstack-k8s-operators/test-operator/api/v1beta1"
77
util "github.com/openstack-k8s-operators/test-operator/pkg/util"
88
corev1 "k8s.io/api/core/v1"
9-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
109
)
1110

1211
// Pod - prepare pod to run Horizon tests
@@ -20,55 +19,24 @@ func Pod(
2019
envVars map[string]env.Setter,
2120
containerImage string,
2221
) *corev1.Pod {
23-
24-
runAsUser := int64(42455)
25-
runAsGroup := int64(42455)
26-
27-
capabilities := []corev1.Capability{"NET_ADMIN", "NET_RAW"}
28-
securityContext := util.GetSecurityContext(runAsUser, capabilities, instance.Spec.Privileged)
29-
30-
pod := &corev1.Pod{
31-
ObjectMeta: metav1.ObjectMeta{
32-
Name: podName,
33-
Namespace: instance.Namespace,
34-
Labels: labels,
35-
},
36-
Spec: corev1.PodSpec{
37-
AutomountServiceAccountToken: &instance.Spec.Privileged,
38-
RestartPolicy: corev1.RestartPolicyNever,
39-
Tolerations: instance.Spec.Tolerations,
40-
NodeSelector: instance.Spec.NodeSelector,
41-
SecurityContext: &corev1.PodSecurityContext{
42-
RunAsUser: &runAsUser,
43-
RunAsGroup: &runAsGroup,
44-
FSGroup: &runAsGroup,
45-
},
46-
Containers: []corev1.Container{
47-
{
48-
Name: instance.Name,
49-
Image: containerImage,
50-
Args: []string{},
51-
Env: env.MergeEnvs([]corev1.EnvVar{}, envVars),
52-
VolumeMounts: GetVolumeMounts(mountCerts, mountKubeconfig, HorizonTestPropagation, instance),
53-
SecurityContext: &securityContext,
54-
Resources: instance.Spec.Resources,
55-
},
56-
},
57-
Volumes: GetVolumes(
58-
instance,
59-
logsPVCName,
60-
mountCerts,
61-
mountKubeconfig,
62-
HorizonTestPropagation,
63-
),
64-
},
65-
}
66-
67-
if len(instance.Spec.SELinuxLevel) > 0 {
68-
pod.Spec.SecurityContext.SELinuxOptions = &corev1.SELinuxOptions{
69-
Level: instance.Spec.SELinuxLevel,
70-
}
71-
}
72-
73-
return pod
22+
return util.BuildTestPod(
23+
nil, // No annotations
24+
PodCapabilities,
25+
containerImage,
26+
instance.Name,
27+
[]corev1.EnvFromSource{}, // No EnvFromSource
28+
envVars,
29+
labels,
30+
instance.Namespace,
31+
instance.Spec.NodeSelector,
32+
podName,
33+
instance.Spec.Privileged,
34+
instance.Spec.Resources,
35+
PodRunAsGroup,
36+
PodRunAsUser,
37+
instance.Spec.SELinuxLevel,
38+
instance.Spec.Tolerations,
39+
GetVolumeMounts(mountCerts, mountKubeconfig, HorizonTestPropagation, instance),
40+
GetVolumes(instance, logsPVCName, mountCerts, mountKubeconfig, HorizonTestPropagation),
41+
)
7442
}

pkg/tempest/const.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tempest
33

44
import (
55
"github.com/openstack-k8s-operators/lib-common/modules/storage"
6+
corev1 "k8s.io/api/core/v1"
67
)
78

89
const (
@@ -11,7 +12,18 @@ const (
1112

1213
// Tempest is the definition of the tempest group
1314
Tempest storage.PropagationType = "Tempest"
15+
16+
// PodRunAsUser is the UID to run the Tempest pod as
17+
PodRunAsUser = int64(42480)
18+
19+
// PodRunAsGroup is the GID to run the Tempest pod as
20+
PodRunAsGroup = int64(42480)
1421
)
1522

16-
// TempestPropagation is the definition of the Tempest propagation service
17-
var TempestPropagation = []storage.PropagationType{Tempest}
23+
var (
24+
// TempestPropagation is the definition of the Tempest propagation service
25+
TempestPropagation = []storage.PropagationType{Tempest}
26+
27+
// PodCapabilities defines the Linux capabilities for Tempest pods
28+
PodCapabilities = []corev1.Capability{}
29+
)

pkg/tempest/pod.go

Lines changed: 31 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
testv1beta1 "github.com/openstack-k8s-operators/test-operator/api/v1beta1"
77
util "github.com/openstack-k8s-operators/test-operator/pkg/util"
88
corev1 "k8s.io/api/core/v1"
9-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
109
)
1110

1211
// Pod - prepare pod to run Tempest tests
@@ -22,72 +21,41 @@ func Pod(
2221
mountSSHKey bool,
2322
containerImage string,
2423
) *corev1.Pod {
25-
26-
envVars := map[string]env.Setter{}
27-
runAsUser := int64(42480)
28-
runAsGroup := int64(42480)
29-
securityContext := util.GetSecurityContext(runAsUser, []corev1.Capability{}, instance.Spec.Privileged)
30-
31-
pod := &corev1.Pod{
32-
ObjectMeta: metav1.ObjectMeta{
33-
Annotations: annotations,
34-
Name: podName,
35-
Namespace: instance.Namespace,
36-
Labels: labels,
37-
},
38-
Spec: corev1.PodSpec{
39-
AutomountServiceAccountToken: &instance.Spec.Privileged,
40-
RestartPolicy: corev1.RestartPolicyNever,
41-
Tolerations: instance.Spec.Tolerations,
42-
NodeSelector: instance.Spec.NodeSelector,
43-
SecurityContext: &corev1.PodSecurityContext{
44-
RunAsUser: &runAsUser,
45-
RunAsGroup: &runAsGroup,
46-
FSGroup: &runAsGroup,
24+
envFromSource := []corev1.EnvFromSource{
25+
{
26+
ConfigMapRef: &corev1.ConfigMapEnvSource{
27+
LocalObjectReference: corev1.LocalObjectReference{
28+
Name: customDataConfigMapName,
29+
},
4730
},
48-
Containers: []corev1.Container{
49-
{
50-
Name: instance.Name + "-tests-runner",
51-
Image: containerImage,
52-
Args: []string{},
53-
Env: env.MergeEnvs([]corev1.EnvVar{}, envVars),
54-
VolumeMounts: GetVolumeMounts(mountCerts, mountSSHKey, TempestPropagation, instance),
55-
SecurityContext: &securityContext,
56-
Resources: instance.Spec.Resources,
57-
EnvFrom: []corev1.EnvFromSource{
58-
{
59-
ConfigMapRef: &corev1.ConfigMapEnvSource{
60-
LocalObjectReference: corev1.LocalObjectReference{
61-
Name: customDataConfigMapName,
62-
},
63-
},
64-
},
65-
{
66-
ConfigMapRef: &corev1.ConfigMapEnvSource{
67-
LocalObjectReference: corev1.LocalObjectReference{
68-
Name: envVarsConfigMapName,
69-
},
70-
},
71-
},
72-
},
31+
},
32+
{
33+
ConfigMapRef: &corev1.ConfigMapEnvSource{
34+
LocalObjectReference: corev1.LocalObjectReference{
35+
Name: envVarsConfigMapName,
7336
},
7437
},
75-
Volumes: GetVolumes(
76-
instance,
77-
customDataConfigMapName,
78-
logsPVCName,
79-
mountCerts,
80-
mountSSHKey,
81-
TempestPropagation,
82-
),
8338
},
8439
}
8540

86-
if len(instance.Spec.SELinuxLevel) > 0 {
87-
pod.Spec.SecurityContext.SELinuxOptions = &corev1.SELinuxOptions{
88-
Level: instance.Spec.SELinuxLevel,
89-
}
90-
}
91-
92-
return pod
41+
return util.BuildTestPod(
42+
annotations,
43+
PodCapabilities,
44+
containerImage,
45+
instance.Name+"-tests-runner",
46+
envFromSource,
47+
map[string]env.Setter{},
48+
labels,
49+
instance.Namespace,
50+
instance.Spec.NodeSelector,
51+
podName,
52+
instance.Spec.Privileged,
53+
instance.Spec.Resources,
54+
PodRunAsGroup,
55+
PodRunAsUser,
56+
instance.Spec.SELinuxLevel,
57+
instance.Spec.Tolerations,
58+
GetVolumeMounts(mountCerts, mountSSHKey, TempestPropagation, instance),
59+
GetVolumes(instance, customDataConfigMapName, logsPVCName, mountCerts, mountSSHKey, TempestPropagation),
60+
)
9361
}

pkg/tobiko/const.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,27 @@ package tobiko
33

44
import (
55
"github.com/openstack-k8s-operators/lib-common/modules/storage"
6+
corev1 "k8s.io/api/core/v1"
67
)
78

89
const (
9-
// ServiceName - tempest service name
10+
// ServiceName - tobiko service name
1011
ServiceName = "tobiko"
1112

1213
// Tobiko is the definition of the tobiko group
1314
Tobiko storage.PropagationType = "Tobiko"
15+
16+
// PodRunAsUser is the UID to run the Tobiko pod as
17+
PodRunAsUser = int64(42495)
18+
19+
// PodRunAsGroup is the GID to run the Tobiko pod as
20+
PodRunAsGroup = int64(42495)
1421
)
1522

16-
// TobikoPropagation is the definition of the Tobiko propagation service
17-
var TobikoPropagation = []storage.PropagationType{Tobiko}
23+
var (
24+
// TobikoPropagation is the definition of the Tobiko propagation service
25+
TobikoPropagation = []storage.PropagationType{Tobiko}
26+
27+
// PodCapabilities defines the Linux capabilities for Tobiko pods
28+
PodCapabilities = []corev1.Capability{"NET_ADMIN", "NET_RAW"}
29+
)

0 commit comments

Comments
 (0)