Skip to content

Commit ad0525d

Browse files
committed
softdep: use a template
Make the code generating the softdep config slightly more readable. Generate the softdep config if at least two modules need ordered loading.
1 parent cb6ab45 commit ad0525d

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

internal/daemonset/daemonset.go

+22-16
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package daemonset
22

33
import (
4+
"bytes"
45
"context"
56
"errors"
67
"fmt"
78
"strings"
9+
"text/template"
810

911
"github.com/go-openapi/swag"
1012
kmmv1beta1 "github.com/kubernetes-sigs/kernel-module-management/api/v1beta1"
@@ -179,9 +181,14 @@ func (dc *daemonSetGenerator) SetDriverContainerAsDesired(
179181
}
180182

181183
var modulesOrderAnnotations map[string]string
182-
if mld.Modprobe.ModulesLoadingOrder != nil {
184+
if len(mld.Modprobe.ModulesLoadingOrder) >= 2 {
185+
modulesOrderConf, err := getModulesOrderAnnotationValue(mld)
186+
if err != nil {
187+
return fmt.Errorf("could not generate the softdep configuration: %v", err)
188+
}
189+
183190
modulesOrderAnnotations = map[string]string{
184-
"modules-order": getModulesOrderAnnotationValue(mld),
191+
"modules-order": modulesOrderConf,
185192
}
186193
softdepVolume := v1.Volume{
187194
Name: "modules-order",
@@ -494,19 +501,18 @@ func makeUnloadCommand(spec kmmv1beta1.ModprobeSpec, modName string) []string {
494501
return append(unloadCommandShell, unloadCommand.String())
495502
}
496503

497-
func getModulesOrderAnnotationValue(mld *api.ModuleLoaderData) string {
498-
modulesNames := mld.Modprobe.ModulesLoadingOrder
499-
softDepData := ""
500-
for i := 0; i < len(modulesNames); i++ {
501-
if i == len(modulesNames)-1 {
502-
break
503-
}
504-
line := prepareSoftDepLine(modulesNames[i], modulesNames[i+1])
505-
softDepData = softDepData + line
506-
}
507-
return softDepData
508-
}
504+
var softdepTemplate = template.Must(
505+
template.New("softdep").Parse(
506+
`{{ range $index, $mod := slice $ 1 -}}
507+
softdep {{ index $ $index }} pre: {{ $mod }}
508+
{{ end -}}
509+
`),
510+
)
511+
512+
func getModulesOrderAnnotationValue(mld *api.ModuleLoaderData) (string, error) {
513+
var buf bytes.Buffer
514+
515+
err := softdepTemplate.Execute(&buf, mld.Modprobe.ModulesLoadingOrder)
509516

510-
func prepareSoftDepLine(dependendModuleName, moduleName string) string {
511-
return fmt.Sprintf("softdep %s pre: %s\n", dependendModuleName, moduleName)
517+
return buf.String(), err
512518
}

0 commit comments

Comments
 (0)