@@ -29,16 +29,16 @@ type renderOpts struct {
2929 cloudProviderConfigOutputFile string
3030 // this file will be both input AND output
3131 featureGateManifestFile string
32- payloadVersion string
3332}
3433
3534// NewRenderCommand creates a render command.
3635func NewRenderCommand () * cobra.Command {
3736 renderOpts := renderOpts {
38- generic : * genericrenderoptions .NewGenericOptions (),
39- manifest : * genericrenderoptions .NewManifestOptions ("config" , "openshift/origin-cluster-config-operator:latest" ),
40- payloadVersion : "0.0.1-snapshot" ,
37+ generic : * genericrenderoptions .NewGenericOptions (),
38+ manifest : * genericrenderoptions .NewManifestOptions ("config" , "openshift/origin-cluster-config-operator:latest" ),
4139 }
40+ renderOpts .generic .PayloadVersion = "0.0.1-snapshot"
41+
4242 cmd := & cobra.Command {
4343 Use : "render" ,
4444 Short : "Render kubernetes API server bootstrap manifests, secrets and configMaps" ,
@@ -76,7 +76,6 @@ func (r *renderOpts) AddFlags(fs *pflag.FlagSet) {
7676 fs .StringVar (& r .cloudProviderConfigOutputFile , "cloud-provider-config-output-file" , r .cloudProviderConfigOutputFile , "Output path for the generated cloud provider config file." )
7777
7878 fs .StringVar (& r .featureGateManifestFile , "featuregate-manifest" , r .featureGateManifestFile , "Path for the FeatureGate.config.openshift.io that will be modified with completed status for use in other bootstrapping steps." )
79- fs .StringVar (& r .payloadVersion , "payload-version" , r .payloadVersion , "Version that will eventually be placed into ClusterOperator.status. This normally comes from the CVO set via env var: OPERATOR_IMAGE_VERSION." )
8079
8180}
8281
@@ -139,7 +138,7 @@ func (r *renderOpts) Run() error {
139138 }
140139
141140 featureGates := ReadFeatureGateV1OrDie (featureGateBytes )
142- currentDetails , err := featuregates .FeaturesGateDetailsFromFeatureSets (configv1 .FeatureSets , featureGates , r .payloadVersion )
141+ currentDetails , err := featuregates .FeaturesGateDetailsFromFeatureSets (configv1 .FeatureSets , featureGates , r .generic . PayloadVersion )
143142 if err != nil {
144143 return err
145144 }
@@ -164,22 +163,25 @@ func (r *renderOpts) Run() error {
164163 return err
165164 }
166165
167- featureGateFiles := renderConfig .ListManifestOfType (configv1 .GroupVersion .WithKind ("FeatureGate" ))
166+ featureGateFiles , err := featureGateManifests (r .generic )
167+ if err != nil {
168+ return fmt .Errorf ("problem with featuregate manifests: %w" , err )
169+ }
168170 for _ , featureGateFile := range featureGateFiles {
169171 featureGatesObj , err := featureGateFile .GetDecodedObj ()
170172 if err != nil {
171- return err
173+ return fmt . Errorf ( "error decoding FeatureGate: %w" , err )
172174 }
173175 featureGates := featureGatesObj .(* configv1.FeatureGate )
174- currentDetails , err := featuregates .FeaturesGateDetailsFromFeatureSets (configv1 .FeatureSets , featureGates , r .payloadVersion )
176+ currentDetails , err := featuregates .FeaturesGateDetailsFromFeatureSets (configv1 .FeatureSets , featureGates , r .generic . PayloadVersion )
175177 if err != nil {
176- return err
178+ return fmt . Errorf ( "error determining FeatureGates: %w" , err )
177179 }
178180 featureGates .Status .FeatureGates = []configv1.FeatureGateDetails {* currentDetails }
179181
180182 featureGateOutBytes := WriteFeatureGateV1OrDie (featureGates )
181183 if err := os .WriteFile (featureGateFile .OriginalFilename , []byte (featureGateOutBytes ), 0644 ); err != nil {
182- return err
184+ return fmt . Errorf ( "error writing FeatureGate manifest: %w" , err )
183185 }
184186 }
185187
@@ -199,3 +201,20 @@ func (r *renderOpts) Run() error {
199201
200202 return nil
201203}
204+
205+ func featureGateManifests (o genericrenderoptions.GenericOptions ) (genericrenderoptions.RenderedManifests , error ) {
206+ if len (o .RenderedManifestInputFilenames ) == 0 {
207+ return nil , fmt .Errorf ("cannot return FeatureGate without rendered manifests" )
208+ }
209+
210+ inputManifest , err := o .ReadInputManifests ()
211+ if err != nil {
212+ return nil , fmt .Errorf ("error reading input manifests: %w" , err )
213+ }
214+ featureGates := inputManifest .ListManifestOfType (configv1 .GroupVersion .WithKind ("FeatureGate" ))
215+ if len (featureGates ) == 0 {
216+ return nil , fmt .Errorf ("no FeatureGates found in manfest dir: %v" , o .RenderedManifestInputFilenames )
217+ }
218+
219+ return featureGates , nil
220+ }
0 commit comments