Skip to content

Commit 49f32d4

Browse files
Merge pull request #3701 from JoelSpeed/payload-version-flag
OCPBUGS-13547: Use payload-version flag to set release version consistently across components
2 parents 557fd8e + 131bf03 commit 49f32d4

File tree

16 files changed

+61
-4
lines changed

16 files changed

+61
-4
lines changed

Diff for: cmd/machine-config-controller/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"flag"
55
"os"
66

7+
"github.com/openshift/machine-config-operator/pkg/version"
78
"github.com/spf13/cobra"
89
"k8s.io/component-base/cli"
910
)
@@ -27,6 +28,7 @@ var (
2728
func init() {
2829
rootCmd.PersistentFlags().AddGoFlagSet(flag.CommandLine)
2930
rootCmd.PersistentFlags().StringVar(&rootOpts.templates, "templates", "/etc/mcc/templates", "Path to the template files used for creating MachineConfig objects")
31+
rootCmd.PersistentFlags().StringVar(&version.ReleaseVersion, "payload-version", version.ReleaseVersion, "Version of the openshift release")
3032
}
3133

3234
func main() {

Diff for: cmd/machine-config-daemon/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"flag"
55
"os"
66

7+
"github.com/openshift/machine-config-operator/pkg/version"
78
"github.com/spf13/cobra"
89
"k8s.io/component-base/cli"
910
)
@@ -22,6 +23,7 @@ var (
2223

2324
func init() {
2425
rootCmd.PersistentFlags().AddGoFlagSet(flag.CommandLine)
26+
rootCmd.PersistentFlags().StringVar(&version.ReleaseVersion, "payload-version", version.ReleaseVersion, "Version of the openshift release")
2527
}
2628

2729
func main() {

Diff for: cmd/machine-config-operator/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"flag"
55
"os"
66

7+
"github.com/openshift/machine-config-operator/pkg/version"
78
"github.com/spf13/cobra"
89
"k8s.io/component-base/cli"
910
)
@@ -20,6 +21,7 @@ var (
2021

2122
func init() {
2223
rootCmd.PersistentFlags().AddGoFlagSet(flag.CommandLine)
24+
rootCmd.PersistentFlags().StringVar(&version.ReleaseVersion, "payload-version", version.ReleaseVersion, "Version of the openshift release")
2325
}
2426

2527
func main() {

Diff for: cmd/machine-config-operator/start.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func runStartCmd(cmd *cobra.Command, args []string) {
4646
runContext, runCancel := context.WithCancel(context.Background())
4747

4848
// To help debugging, immediately log version
49-
glog.Infof("Version: %s (Raw: %s, Hash: %s)", os.Getenv("RELEASE_VERSION"), version.Raw, version.Hash)
49+
glog.Infof("Version: %s (Raw: %s, Hash: %s)", version.ReleaseVersion, version.Raw, version.Hash)
5050

5151
if startOpts.imagesFile == "" {
5252
glog.Fatal("--images-json cannot be empty")

Diff for: cmd/machine-config-server/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"os"
66

77
"github.com/openshift/machine-config-operator/pkg/server"
8+
"github.com/openshift/machine-config-operator/pkg/version"
89
"github.com/spf13/cobra"
910
"k8s.io/component-base/cli"
1011
)
@@ -34,6 +35,7 @@ func init() {
3435
rootCmd.PersistentFlags().StringVar(&rootOpts.cert, "cert", "/etc/ssl/mcs/tls.crt", "cert file for TLS")
3536
rootCmd.PersistentFlags().StringVar(&rootOpts.key, "key", "/etc/ssl/mcs/tls.key", "key file for TLS")
3637
rootCmd.PersistentFlags().IntVar(&rootOpts.isport, "insecure-port", server.InsecurePort, "insecure port to serve ignition configs")
38+
rootCmd.PersistentFlags().StringVar(&version.ReleaseVersion, "payload-version", version.ReleaseVersion, "Version of the openshift release")
3739
}
3840

3941
func main() {

Diff for: install/0000_80_machine-config-operator_04_deployment.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ spec:
2727
args:
2828
- "start"
2929
- "--images-json=/etc/mco/images/images.json"
30+
- "--payload-version=0.0.1-snapshot"
3031
resources:
3132
requests:
3233
cpu: 20m

Diff for: manifests/bootstrap-pod-v2.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ spec:
1515
- "--manifest-dir=/etc/mcc/bootstrap"
1616
- "--dest-dir=/etc/mcs/bootstrap"
1717
- "--pull-secret=/etc/mcc/bootstrap/machineconfigcontroller-pull-secret"
18+
- "--payload-version={{.ReleaseVersion}}"
1819
resources:
1920
limits:
2021
memory: 50Mi
@@ -36,6 +37,7 @@ spec:
3637
command: ["/usr/bin/machine-config-server"]
3738
args:
3839
- "bootstrap"
40+
- "--payload-version={{.ReleaseVersion}}"
3941
terminationMessagePolicy: FallbackToLogsOnError
4042
volumeMounts:
4143
- name: server-certs

Diff for: manifests/machineconfigcontroller/deployment.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ spec:
2222
- "start"
2323
- "--resourcelock-namespace={{.TargetNamespace}}"
2424
- "--v=2"
25+
- "--payload-version={{.ReleaseVersion}}"
2526
resources:
2627
requests:
2728
cpu: 20m

Diff for: manifests/machineconfigdaemon/daemonset.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ spec:
2424
command: ["/usr/bin/machine-config-daemon"]
2525
args:
2626
- "start"
27+
- "--payload-version={{.ReleaseVersion}}"
2728
resources:
2829
requests:
2930
cpu: 20m

Diff for: manifests/machineconfigserver/daemonset.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ spec:
2222
args:
2323
- "start"
2424
- "--apiserver-url={{.APIServerURL}}"
25+
- "--payload-version={{.ReleaseVersion}}"
2526
resources:
2627
requests:
2728
cpu: 20m

Diff for: pkg/operator/operator.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ package operator
33
import (
44
"context"
55
"fmt"
6-
"os"
76
"time"
87

98
"github.com/golang/glog"
109

1110
configclientset "github.com/openshift/client-go/config/clientset/versioned"
1211
ctrlcommon "github.com/openshift/machine-config-operator/pkg/controller/common"
12+
"github.com/openshift/machine-config-operator/pkg/version"
1313
corev1 "k8s.io/api/core/v1"
1414
apiextclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
1515
apiextinformersv1 "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensions/v1"
@@ -220,7 +220,7 @@ func New(
220220
optr.dnsLister = dnsInformer.Lister()
221221
optr.dnsListerSynced = dnsInformer.Informer().HasSynced
222222

223-
optr.vStore.Set("operator", os.Getenv("RELEASE_VERSION"))
223+
optr.vStore.Set("operator", version.ReleaseVersion)
224224

225225
return optr
226226
}

Diff for: pkg/operator/render.go

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
type renderConfig struct {
2727
TargetNamespace string
2828
Version string
29+
ReleaseVersion string
2930
ControllerConfig mcfgv1.ControllerConfigSpec
3031
APIServerURL string
3132
Images *RenderConfigImages

Diff for: pkg/operator/render_test.go

+19-1
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,15 @@ func TestRenderAsset(t *testing.T) {
226226
Path: "manifests/machineconfigcontroller/deployment.yaml",
227227
RenderConfig: &renderConfig{
228228
TargetNamespace: "testing-namespace",
229+
ReleaseVersion: "4.8.0-rc.0",
229230
Images: &RenderConfigImages{
230231
MachineConfigOperator: "mco-operator-image",
231232
},
232233
},
233-
FindExpected: []string{"image: mco-operator-image"},
234+
FindExpected: []string{
235+
"image: mco-operator-image",
236+
"--payload-version=4.8.0-rc.0",
237+
},
234238
}, {
235239
// Render same template as previous test
236240
// But with a template field missing
@@ -244,6 +248,7 @@ func TestRenderAsset(t *testing.T) {
244248
Path: "manifests/machineconfigdaemon/daemonset.yaml",
245249
RenderConfig: &renderConfig{
246250
TargetNamespace: "testing-namespace",
251+
ReleaseVersion: "4.8.0-rc.0",
247252
Images: &RenderConfigImages{
248253
MachineConfigOperator: "mco-operator-image",
249254
OauthProxy: "oauth-proxy-image",
@@ -260,11 +265,24 @@ func TestRenderAsset(t *testing.T) {
260265
"image: oauth-proxy-image",
261266
"- name: HTTPS_PROXY\n value: https://i.am.a.proxy.server",
262267
"- name: NO_PROXY\n value: \"*\"", // Ensure the * is quoted: "*": https://bugzilla.redhat.com/show_bug.cgi?id=1947066
268+
"--payload-version=4.8.0-rc.0",
263269
},
264270
}, {
265271
// Bad path, will cause asset error
266272
Path: "BAD PATH",
267273
Error: true,
274+
}, {
275+
Path: "manifests/bootstrap-pod-v2.yaml",
276+
RenderConfig: &renderConfig{
277+
TargetNamespace: "testing-namespace",
278+
ReleaseVersion: "4.8.0-rc.0",
279+
Images: &RenderConfigImages{
280+
MachineConfigOperator: "mco-operator-image",
281+
},
282+
},
283+
FindExpected: []string{
284+
"--payload-version=4.8.0-rc.0",
285+
},
268286
}}
269287

270288
for idx, test := range tests {

Diff for: pkg/operator/sync.go

+1
Original file line numberDiff line numberDiff line change
@@ -1044,6 +1044,7 @@ func getRenderConfig(tnamespace, kubeAPIServerServingCA string, ccSpec *mcfgv1.C
10441044
return &renderConfig{
10451045
TargetNamespace: tnamespace,
10461046
Version: version.Raw,
1047+
ReleaseVersion: version.ReleaseVersion,
10471048
ControllerConfig: *ccSpec,
10481049
Images: imgs,
10491050
APIServerURL: apiServerURL,

Diff for: pkg/version/version.go

+21
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,18 @@ package version
22

33
import (
44
"fmt"
5+
"os"
6+
)
7+
8+
const (
9+
releaseVersionEnv = "RELEASE_VERSION"
510
)
611

712
var (
13+
// ReleaseVersion is the version of the openshift release.
14+
// This will be injected by the payload build process.
15+
ReleaseVersion = "0.0.1-snapshot"
16+
817
// Raw is the string representation of the version. This will be replaced
918
// with the calculated version at build time.
1019
Raw = "v0.0.0-was-not-built-properly"
@@ -31,3 +40,15 @@ func IsFCOS() bool {
3140
func IsSCOS() bool {
3241
return SCOS
3342
}
43+
44+
func init() {
45+
// TODO: Remove the following env var override to deprecated RELEASE_VERSION.
46+
// This is only here for backwards compatibility with the old build process.
47+
// For now, it will prepopulate the ReleaseVersion with the value of the env var
48+
// prior to flag parsing. This will allow the flag to override the env var.
49+
// In the future, we should remove this and only use the flag.
50+
rv := os.Getenv(releaseVersionEnv)
51+
if rv != "" {
52+
ReleaseVersion = rv
53+
}
54+
}

Diff for: test/e2e-bootstrap/bootstrap_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/openshift/machine-config-operator/pkg/controller/node"
2424
"github.com/openshift/machine-config-operator/pkg/controller/render"
2525
"github.com/openshift/machine-config-operator/pkg/controller/template"
26+
"github.com/openshift/machine-config-operator/pkg/version"
2627
"github.com/openshift/machine-config-operator/test/framework"
2728
"github.com/openshift/machine-config-operator/test/helpers"
2829

@@ -502,6 +503,7 @@ func createClusterVersion(t *testing.T, clientSet *framework.ClientSet, objs ...
502503
cv, err := clientSet.ClusterVersions().Create(ctx, cv, metav1.CreateOptions{})
503504
require.NoError(t, err)
504505

506+
cv.Status.Desired.Version = version.ReleaseVersion
505507
cv.Status.Desired.Image = controllerConfig.Spec.ReleaseImage
506508
cv, err = clientSet.ClusterVersions().UpdateStatus(ctx, cv, metav1.UpdateOptions{})
507509
require.NoError(t, err)

0 commit comments

Comments
 (0)