Skip to content

Commit

Permalink
Support new MOFED image format for RHEL
Browse files Browse the repository at this point in the history
  • Loading branch information
e0ne committed Jul 9, 2023
1 parent e607350 commit 402fb41
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 4 deletions.
4 changes: 4 additions & 0 deletions pkg/nodeinfo/attributes.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ var log = logf.Log.WithName("nodeinfo")
const (
NodeLabelOSName = "feature.node.kubernetes.io/system-os_release.ID"
NodeLabelOSVer = "feature.node.kubernetes.io/system-os_release.VERSION_ID"
NodeLabelOSVerMajor = "feature.node.kubernetes.io/system-os_release.VERSION_ID.major"
NodeLabelKernelVerFull = "feature.node.kubernetes.io/kernel-version.full"
NodeLabelHostname = "kubernetes.io/hostname"
NodeLabelCPUArch = "kubernetes.io/arch"
Expand All @@ -48,6 +49,7 @@ const (
AttrTypeCPUArch
AttrTypeOSName
AttrTypeOSVer
AttrTypeOSVerMajor
// optional attrs
AttrTypeCudaVersionMajor

Expand All @@ -63,6 +65,8 @@ var attrToLabel = []string{
NodeLabelOSName,
// AttrTypeOSVer
NodeLabelOSVer,
// AttrTypeOSVerMajor
NodeLabelCudaVersionMajor,
// AttrTypeCudaVersionMajor
NodeLabelCudaVersionMajor,
}
Expand Down
22 changes: 18 additions & 4 deletions pkg/state/state_ofed.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,13 @@ const (

// mofedImageFormat is the new mofed driver container image name format
// format: <repo>/<image-name>:<driver-version>-<os-name><os-ver>-<cpu-arch>
// e.x: nvcr.io/nvidia/mellanox/mofed:5.7-0.1.2.0-ubuntu20.04-amd64
// e.g: nvcr.io/nvidia/mellanox/mofed:5.7-0.1.2.0-ubuntu20.04-amd64
mofedImageFormat = "%s/%s:%s-%s%s-%s"
// oldMofedRhelVersion is the old mofed driver container image format
// for RHEL-based images. E.g.: mofed:23.07-0.2.3.0.1.1-rhel9.2-amd64
oldMofedRhelVersion = "23.07-0.2.3.0.1.0"
// rhelOSName is OS name in Kubernetes annotation
rhelOSName = "rhel"
)

// Openshift cluster-wide Proxy
Expand Down Expand Up @@ -447,7 +452,6 @@ func (s *stateOFED) getManifestObjects(
}

// getMofedDriverImageName generates MOFED driver image name based on the driver version specified in CR
// TODO(adrianc): in Network-Operator v1.5.0, we should just use the new naming scheme
func (s *stateOFED) getMofedDriverImageName(cr *mellanoxv1alpha1.NicClusterPolicy,
nodeAttr map[nodeinfo.AttributeType]string, reqLogger logr.Logger) string {
curDriverVer, err := semver.NewVersion(cr.Spec.OFEDDriver.Version)
Expand All @@ -456,12 +460,22 @@ func (s *stateOFED) getMofedDriverImageName(cr *mellanoxv1alpha1.NicClusterPolic
}
reqLogger.V(consts.LogLevelDebug).Info("Generating ofed driver image name for version: %v", "version", curDriverVer)

oldRhelFormatDriverVer, err := semver.NewVersion(oldMofedRhelVersion)
if err != nil {
reqLogger.V(consts.LogLevelDebug).Info("failed to parse ofed driver version as semver")
}
osName := nodeAttr[nodeinfo.AttrTypeOSName]
osVer := nodeAttr[nodeinfo.AttrTypeOSVer]
if curDriverVer != nil && curDriverVer.GreaterThan(oldRhelFormatDriverVer) && osName == rhelOSName {
osVer = nodeAttr[nodeinfo.AttrTypeOSVerMajor] + ".x"
}

return fmt.Sprintf(mofedImageFormat,
cr.Spec.OFEDDriver.Repository,
cr.Spec.OFEDDriver.Image,
cr.Spec.OFEDDriver.Version,
nodeAttr[nodeinfo.AttrTypeOSName],
nodeAttr[nodeinfo.AttrTypeOSVer],
osName,
osVer,
nodeAttr[nodeinfo.AttrTypeCPUArch])
}

Expand Down
31 changes: 31 additions & 0 deletions pkg/state/state_ofed_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ var _ = Describe("MOFED state test", func() {
nodeAttr[nodeinfo.AttrTypeCPUArch] = "amd64"
nodeAttr[nodeinfo.AttrTypeOSName] = "ubuntu"
nodeAttr[nodeinfo.AttrTypeOSVer] = "20.04"
nodeAttr[nodeinfo.AttrTypeOSVerMajor] = "20"

cr := &v1alpha1.NicClusterPolicy{
Spec: v1alpha1.NicClusterPolicySpec{
Expand Down Expand Up @@ -78,6 +79,36 @@ var _ = Describe("MOFED state test", func() {
})
})

Context("getMofedDriverImageName for RHEL", func() {
nodeAttr := make(map[nodeinfo.AttributeType]string)
nodeAttr[nodeinfo.AttrTypeCPUArch] = "amd64"
nodeAttr[nodeinfo.AttrTypeOSName] = "rhel"
nodeAttr[nodeinfo.AttrTypeOSVer] = "9.2"
nodeAttr[nodeinfo.AttrTypeOSVerMajor] = "9"

cr := &v1alpha1.NicClusterPolicy{
Spec: v1alpha1.NicClusterPolicySpec{
OFEDDriver: &v1alpha1.OFEDDriverSpec{
ImageSpec: v1alpha1.ImageSpec{
Image: "mofed",
Repository: "nvcr.io/mellanox",
},
},
},
}

It("generates old image format", func() {
cr.Spec.OFEDDriver.Version = "23.07-0.2.3.0.1.0"
imageName := stateOfed.getMofedDriverImageName(cr, nodeAttr, testLogger)
Expect(imageName).To(Equal("nvcr.io/mellanox/mofed:23.07-0.2.3.0.1.0-rhel9.2-amd64"))
})
It("generates new image format", func() {
cr.Spec.OFEDDriver.Version = "23.07-0.2.3.0.1.1"
imageName := stateOfed.getMofedDriverImageName(cr, nodeAttr, testLogger)
Expect(imageName).To(Equal("nvcr.io/mellanox/mofed:23.07-0.2.3.0.1.1-rhel9.x-amd64"))
})
})

Context("Proxy config", func() {
It("Set Proxy from Cluster Wide Proxy", func() {
cr := &v1alpha1.NicClusterPolicy{
Expand Down

0 comments on commit 402fb41

Please sign in to comment.