Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion internal/controllers/wekacontainer/funcs_pod_ensure.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,14 @@ func (r *containerReconcilerLoop) ensurePod(ctx context.Context) error {
image = drivers.GetBuilderImageForNode(node)
}

builderFlags, ffErr := r.GetFeatureFlags(ctx)
if ffErr != nil {
return errors.Wrap(ffErr, "failed to get feature flags for drivers-builder")
}

payloadBytes, _ := json.Marshal(map[string]string{ //nolint:errcheck // error return value intentionally not checked
"targetImage": container.Spec.Image,
"cliImage": image,
"cliImage": drivers.GetBuilderCliImage(builderFlags, container.Spec.Image, image),
})
container.Spec.Instructions = &weka.Instructions{
Type: weka.InstructionCopyWekaFilesToDriverLoader,
Expand Down
22 changes: 16 additions & 6 deletions internal/drivers/drivers.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"strings"

"github.com/weka/weka-operator/internal/config"
"github.com/weka/weka-operator/internal/pkg/domain"
"github.com/weka/weka-operator/internal/services"
v1 "k8s.io/api/core/v1"
)
Expand Down Expand Up @@ -66,13 +67,22 @@ func GetBuilderImageForNode(node *v1.Node) string {

func GetLoaderImageForNode(ctx context.Context, node *v1.Node, image string) string {
flags, err := services.GetFeatureFlags(ctx, image)
if err == nil && flags != nil {
if err != nil {
flags = nil
}

return GetBuilderCliImage(flags, image, GetBuilderImageForNode(node))
}

// GetBuilderCliImage picks the image that supplies the weka CLI staged for the
// drivers-builder init containers. The extraction step bind-mounts over /opt/weka,
// where the cluster image keeps its CLI, so a CLI is always staged out of band;
// prefer the cluster image's own CLI when it can copy driver files itself.
func GetBuilderCliImage(flags *domain.FeatureFlags, clusterImage, builderImage string) string {
if flags != nil && flags.WekaGetCopyLocalDriverFiles {
// innovation cli --kernel-build-id etc.
if flags.WekaGetCopyLocalDriverFiles {
return image
}
return clusterImage
}

// else - can use the builder image that has "innovation" cli
return GetBuilderImageForNode(node)
return builderImage
}
Loading