Skip to content

Commit 3095bcc

Browse files
committed
Refactor test-operator volumes
Currently the test-operator volumes and volume mounts are written with a lot of duplicate code. This patch aims to remove that duplicity and make the code easier to understand.
1 parent ae53577 commit 3095bcc

File tree

4 files changed

+314
-372
lines changed

4 files changed

+314
-372
lines changed

pkg/horizontest/volumes.go

Lines changed: 26 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -16,127 +16,23 @@ func GetVolumes(
1616
svc []storage.PropagationType,
1717
) []corev1.Volume {
1818

19-
var scriptsVolumeDefaultMode int32 = 0755
20-
var scriptsVolumeConfidentialMode int32 = 0420
21-
var tlsCertificateMode int32 = 0444
22-
var publicInfoMode int32 = 0744
23-
2419
volumes := []corev1.Volume{
25-
{
26-
Name: "horizontest-config",
27-
VolumeSource: corev1.VolumeSource{
28-
ConfigMap: &corev1.ConfigMapVolumeSource{
29-
DefaultMode: &scriptsVolumeDefaultMode,
30-
LocalObjectReference: corev1.LocalObjectReference{
31-
Name: instance.Name + "horizontest-config",
32-
},
33-
},
34-
},
35-
},
36-
{
37-
Name: util.TestOperatorCloudsConfigMapName,
38-
VolumeSource: corev1.VolumeSource{
39-
ConfigMap: &corev1.ConfigMapVolumeSource{
40-
DefaultMode: &scriptsVolumeConfidentialMode,
41-
LocalObjectReference: corev1.LocalObjectReference{
42-
Name: util.TestOperatorCloudsConfigMapName,
43-
},
44-
},
45-
},
46-
},
47-
{
48-
Name: "openstack-config-secret",
49-
VolumeSource: corev1.VolumeSource{
50-
Secret: &corev1.SecretVolumeSource{
51-
DefaultMode: &tlsCertificateMode,
52-
SecretName: "openstack-config-secret",
53-
},
54-
},
55-
},
56-
{
57-
Name: "test-operator-logs",
58-
VolumeSource: corev1.VolumeSource{
59-
PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
60-
ClaimName: logsPVCName,
61-
ReadOnly: false,
62-
},
63-
},
64-
},
65-
{
66-
Name: util.TestOperatorEphemeralVolumeNameWorkdir,
67-
VolumeSource: corev1.VolumeSource{
68-
EmptyDir: &corev1.EmptyDirVolumeSource{},
69-
},
70-
},
71-
{
72-
Name: util.TestOperatorEphemeralVolumeNameTmp,
73-
VolumeSource: corev1.VolumeSource{
74-
EmptyDir: &corev1.EmptyDirVolumeSource{},
75-
},
76-
},
20+
createHorizontestConfigVolume(instance.Name),
21+
util.CreateOpenstackConfigMapVolume(util.TestOperatorCloudsConfigMapName),
22+
util.CreateOpenstackConfigSecretVolume(),
23+
util.CreateLogsPVCVolume(logsPVCName),
24+
util.CreateWorkdirVolume(),
25+
util.CreateTmpVolume(),
7726
}
7827

79-
if mountCerts {
80-
caCertsVolume := corev1.Volume{
81-
Name: "ca-certs",
82-
VolumeSource: corev1.VolumeSource{
83-
Secret: &corev1.SecretVolumeSource{
84-
DefaultMode: &scriptsVolumeConfidentialMode,
85-
SecretName: "combined-ca-bundle",
86-
},
87-
},
88-
}
89-
90-
volumes = append(volumes, caCertsVolume)
91-
}
28+
volumes = util.AppendCACertsVolume(volumes, mountCerts)
9229

9330
if mountKubeconfig {
94-
kubeconfigVolume := corev1.Volume{
95-
Name: "kubeconfig",
96-
VolumeSource: corev1.VolumeSource{
97-
Secret: &corev1.SecretVolumeSource{
98-
SecretName: instance.Spec.KubeconfigSecretName,
99-
Items: []corev1.KeyToPath{
100-
{
101-
Key: "config",
102-
Path: "config",
103-
},
104-
},
105-
},
106-
},
107-
}
108-
109-
volumes = append(volumes, kubeconfigVolume)
31+
volumes = util.AppendKubeconfigVolume(volumes, instance.Spec.KubeconfigSecretName)
11032
}
11133

112-
for _, exv := range instance.Spec.ExtraMounts {
113-
for _, vol := range exv.Propagate(svc) {
114-
for _, v := range vol.Volumes {
115-
volumeSource, _ := v.ToCoreVolumeSource()
116-
convertedVolume := corev1.Volume{
117-
Name: v.Name,
118-
VolumeSource: *volumeSource,
119-
}
120-
volumes = append(volumes, convertedVolume)
121-
}
122-
}
123-
}
124-
125-
for _, vol := range instance.Spec.ExtraConfigmapsMounts {
126-
extraVol := corev1.Volume{
127-
Name: vol.Name,
128-
VolumeSource: corev1.VolumeSource{
129-
ConfigMap: &corev1.ConfigMapVolumeSource{
130-
DefaultMode: &publicInfoMode,
131-
LocalObjectReference: corev1.LocalObjectReference{
132-
Name: vol.Name,
133-
},
134-
},
135-
},
136-
}
137-
138-
volumes = append(volumes, extraVol)
139-
}
34+
volumes = util.AppendExtraMountsVolumes(volumes, instance.Spec.ExtraMounts, svc)
35+
volumes = util.AppendExtraConfigmapsVolumes(volumes, instance.Spec.ExtraConfigmapsMounts, util.PublicInfoMode)
14036

14137
return volumes
14238
}
@@ -256,3 +152,19 @@ func GetVolumeMounts(
256152

257153
return volumeMounts
258154
}
155+
156+
// createHorizontestConfigVolume creates the horizontest-specific config volume
157+
func createHorizontestConfigVolume(instanceName string) corev1.Volume {
158+
mode := util.ScriptsVolumeDefaultMode
159+
return corev1.Volume{
160+
Name: "horizontest-config",
161+
VolumeSource: corev1.VolumeSource{
162+
ConfigMap: &corev1.ConfigMapVolumeSource{
163+
DefaultMode: &mode,
164+
LocalObjectReference: corev1.LocalObjectReference{
165+
Name: instanceName + "horizontest-config",
166+
},
167+
},
168+
},
169+
}
170+
}

pkg/tempest/volumes.go

Lines changed: 10 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -17,129 +17,24 @@ func GetVolumes(
1717
svc []storage.PropagationType,
1818
) []corev1.Volume {
1919

20-
var scriptsVolumeDefaultMode int32 = 0755
21-
var scriptsVolumeConfidentialMode int32 = 0420
22-
var tlsCertificateMode int32 = 0444
23-
var privateKeyMode int32 = 0600
24-
2520
//source_type := corev1.HostPathDirectoryOrCreate
2621
volumes := []corev1.Volume{
27-
{
28-
Name: "config-data",
29-
VolumeSource: corev1.VolumeSource{
30-
ConfigMap: &corev1.ConfigMapVolumeSource{
31-
DefaultMode: &scriptsVolumeDefaultMode,
32-
LocalObjectReference: corev1.LocalObjectReference{
33-
Name: customDataConfigMapName,
34-
},
35-
},
36-
},
37-
},
38-
{
39-
Name: "openstack-config",
40-
VolumeSource: corev1.VolumeSource{
41-
ConfigMap: &corev1.ConfigMapVolumeSource{
42-
DefaultMode: &scriptsVolumeConfidentialMode,
43-
LocalObjectReference: corev1.LocalObjectReference{
44-
Name: "openstack-config",
45-
},
46-
},
47-
},
48-
},
49-
{
50-
Name: "openstack-config-secret",
51-
VolumeSource: corev1.VolumeSource{
52-
Secret: &corev1.SecretVolumeSource{
53-
DefaultMode: &tlsCertificateMode,
54-
SecretName: "openstack-config-secret",
55-
},
56-
},
57-
},
58-
{
59-
Name: "test-operator-logs",
60-
VolumeSource: corev1.VolumeSource{
61-
PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
62-
ClaimName: logsPVCName,
63-
ReadOnly: false,
64-
},
65-
},
66-
},
67-
{
68-
Name: util.TestOperatorEphemeralVolumeNameWorkdir,
69-
VolumeSource: corev1.VolumeSource{
70-
EmptyDir: &corev1.EmptyDirVolumeSource{},
71-
},
72-
},
73-
{
74-
Name: util.TestOperatorEphemeralVolumeNameTmp,
75-
VolumeSource: corev1.VolumeSource{
76-
EmptyDir: &corev1.EmptyDirVolumeSource{},
77-
},
78-
},
22+
util.CreateDataConfigMapVolume("config-data", customDataConfigMapName),
23+
util.CreateOpenstackConfigMapVolume("openstack-config"),
24+
util.CreateOpenstackConfigSecretVolume(),
25+
util.CreateLogsPVCVolume(logsPVCName),
26+
util.CreateWorkdirVolume(),
27+
util.CreateTmpVolume(),
7928
}
8029

81-
if mountCerts {
82-
caCertsVolume := corev1.Volume{
83-
Name: "ca-certs",
84-
VolumeSource: corev1.VolumeSource{
85-
Secret: &corev1.SecretVolumeSource{
86-
DefaultMode: &scriptsVolumeConfidentialMode,
87-
SecretName: "combined-ca-bundle",
88-
},
89-
},
90-
}
91-
92-
volumes = append(volumes, caCertsVolume)
93-
}
30+
volumes = util.AppendCACertsVolume(volumes, mountCerts)
9431

9532
if mountSSHKey {
96-
sshKeyVolume := corev1.Volume{
97-
Name: "ssh-key",
98-
VolumeSource: corev1.VolumeSource{
99-
Secret: &corev1.SecretVolumeSource{
100-
SecretName: instance.Spec.SSHKeySecretName,
101-
DefaultMode: &privateKeyMode,
102-
Items: []corev1.KeyToPath{
103-
{
104-
Key: "ssh-privatekey",
105-
Path: "ssh_key",
106-
},
107-
},
108-
},
109-
},
110-
}
111-
112-
volumes = append(volumes, sshKeyVolume)
113-
}
114-
115-
for _, exv := range instance.Spec.ExtraMounts {
116-
for _, vol := range exv.Propagate(svc) {
117-
for _, v := range vol.Volumes {
118-
volumeSource, _ := v.ToCoreVolumeSource()
119-
convertedVolume := corev1.Volume{
120-
Name: v.Name,
121-
VolumeSource: *volumeSource,
122-
}
123-
volumes = append(volumes, convertedVolume)
124-
}
125-
}
33+
util.AppendSSHKeyVolume(volumes, "ssh-key", instance.Spec.SSHKeySecretName, "ssh-privatekey", "ssh_key")
12634
}
12735

128-
for _, vol := range instance.Spec.ExtraConfigmapsMounts {
129-
extraVol := corev1.Volume{
130-
Name: vol.Name,
131-
VolumeSource: corev1.VolumeSource{
132-
ConfigMap: &corev1.ConfigMapVolumeSource{
133-
DefaultMode: &scriptsVolumeDefaultMode,
134-
LocalObjectReference: corev1.LocalObjectReference{
135-
Name: vol.Name,
136-
},
137-
},
138-
},
139-
}
140-
141-
volumes = append(volumes, extraVol)
142-
}
36+
volumes = util.AppendExtraMountsVolumes(volumes, instance.Spec.ExtraMounts, svc)
37+
volumes = util.AppendExtraConfigmapsVolumes(volumes, instance.Spec.ExtraConfigmapsMounts, util.ScriptsVolumeDefaultMode)
14338

14439
return volumes
14540
}

0 commit comments

Comments
 (0)