88 "strings"
99 "text/template"
1010
11+ "github.com/blang/semver/v4"
1112 "github.com/pkg/errors"
1213
1314 "k8s.io/apimachinery/pkg/runtime"
@@ -47,6 +48,11 @@ func Render(outputDir, releaseImage, clusterVersionManifestPath, featureGateMani
4748 return fmt .Errorf ("error parsing feature gate manifest: %w" , err )
4849 }
4950
51+ payloadVersion , err := loadReleaseVersion (releaseManifestsDir )
52+ if err != nil {
53+ return fmt .Errorf ("error loading release version: %w" , err )
54+ }
55+
5056 tasks := []struct {
5157 idir string
5258 odir string
@@ -77,7 +83,7 @@ func Render(outputDir, releaseImage, clusterVersionManifestPath, featureGateMani
7783 }}
7884 var errs []error
7985 for _ , task := range tasks {
80- if err := renderDir (renderConfig , task .idir , task .odir , overrides , requiredFeatureSet , enabledFeatureGates , & clusterProfile , task .processTemplate , task .skipFiles , task .filterGroupKind ); err != nil {
86+ if err := renderDir (renderConfig , task .idir , task .odir , overrides , requiredFeatureSet , enabledFeatureGates , & clusterProfile , ptr . To ( payloadVersion . Major ), task .processTemplate , task .skipFiles , task .filterGroupKind ); err != nil {
8187 errs = append (errs , err )
8288 }
8389 }
@@ -89,8 +95,8 @@ func Render(outputDir, releaseImage, clusterVersionManifestPath, featureGateMani
8995 return nil
9096}
9197
92- func renderDir (renderConfig manifestRenderConfig , idir , odir string , overrides []configv1.ComponentOverride , requiredFeatureSet * string , enabledFeatureGates sets.Set [string ], clusterProfile * string , processTemplate bool , skipFiles sets.Set [string ], filterGroupKind sets.Set [schema.GroupKind ]) error {
93- klog .Infof ("Filtering manifests in %s for feature set %v, cluster profile %v and enabled feature gates %v" , idir , * requiredFeatureSet , * clusterProfile , enabledFeatureGates .UnsortedList ())
98+ func renderDir (renderConfig manifestRenderConfig , idir , odir string , overrides []configv1.ComponentOverride , requiredFeatureSet * string , enabledFeatureGates sets.Set [string ], clusterProfile * string , majorVersion * uint64 , processTemplate bool , skipFiles sets.Set [string ], filterGroupKind sets.Set [schema.GroupKind ]) error {
99+ klog .Infof ("Filtering manifests in %s for feature set %v, cluster profile %v, enabled feature gates %v, and major version %v " , idir , * requiredFeatureSet , * clusterProfile , enabledFeatureGates .UnsortedList (), ptr . Deref ( majorVersion , 0 ))
94100
95101 if err := os .MkdirAll (odir , 0666 ); err != nil {
96102 return err
@@ -140,7 +146,7 @@ func renderDir(renderConfig manifestRenderConfig, idir, odir string, overrides [
140146 for _ , manifest := range manifests {
141147 if len (filterGroupKind ) > 0 && ! filterGroupKind .Has (manifest .GVK .GroupKind ()) {
142148 klog .Infof ("excluding %s because we do not render that group/kind" , manifest .String ())
143- } else if err := manifest .Include (nil , requiredFeatureSet , clusterProfile , nil , overrides , enabledFeatureGates ); err != nil {
149+ } else if err := manifest .Include (nil , requiredFeatureSet , clusterProfile , nil , overrides , enabledFeatureGates , majorVersion ); err != nil {
144150 klog .Infof ("excluding %s: %v" , manifest .String (), err )
145151 } else {
146152 filteredManifests = append (filteredManifests , string (manifest .Raw ))
@@ -274,3 +280,17 @@ func parseFeatureGateManifest(featureGateManifestPath string) (*string, sets.Set
274280
275281 return requiredFeatureSet , enabledFeatureGates , nil
276282}
283+
284+ func loadReleaseVersion (releaseDir string ) (semver.Version , error ) {
285+ release , err := loadReleaseMetadata (releaseDir )
286+ if err != nil {
287+ return semver.Version {}, err
288+ }
289+
290+ parsedVersion , err := semver .Parse (release .Version )
291+ if err != nil {
292+ return semver.Version {}, fmt .Errorf ("cincinnati metadata version %q is not a valid semantic version: %v" , release .Version , err )
293+ }
294+
295+ return parsedVersion , nil
296+ }
0 commit comments