Skip to content
This repository was archived by the owner on Oct 7, 2020. It is now read-only.

Commit 24504ea

Browse files
elfinheistio-testing
authored andcommitted
Update the version of operator for 1.4.3 (#677)
* Update the version for operator; Try version from DockerInfo.Tag as operator binary version; Use the latest version if target version does not exist. * Fix version/version_test. * Improve tests.
1 parent cdf2d7f commit 24504ea

File tree

10 files changed

+166
-51
lines changed

10 files changed

+166
-51
lines changed

cmd/mesh/manifest-versions.go

+14-1
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,26 @@ func getVersionCompatibleMap(versionsURI string, binVersion *goversion.Version,
9797
if err = yaml.Unmarshal(b, &versions); err != nil {
9898
return nil, err
9999
}
100-
var myVersionMap *version.CompatibilityMapping
100+
101+
var myVersionMap, closestVersionMap *version.CompatibilityMapping
101102
for _, v := range versions {
102103
if v.OperatorVersion.Equal(binVersion) {
103104
myVersionMap = v
104105
break
105106
}
107+
if v.OperatorVersionRange.Check(binVersion) {
108+
myVersionMap = v
109+
}
110+
if (closestVersionMap == nil || v.OperatorVersion.GreaterThan(closestVersionMap.OperatorVersion)) &&
111+
v.OperatorVersion.LessThanOrEqual(binVersion) {
112+
closestVersionMap = v
113+
}
106114
}
115+
116+
if myVersionMap == nil {
117+
myVersionMap = closestVersionMap
118+
}
119+
107120
if myVersionMap == nil {
108121
return nil, fmt.Errorf("this operator version %s was not found in the version map", binVersion.String())
109122
}

cmd/mesh/manifest-versions_test.go

+47-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ func TestGetVersionCompatibleMap(t *testing.T) {
4242

4343
goVerNonexistent, _ := goversion.NewVersion("0.0.999")
4444
goVer133, _ := goversion.NewVersion("1.3.3")
45+
goVer137, _ := goversion.NewVersion("1.3.7")
46+
goVer1331, _ := goversion.NewVersion("1.3.3.1")
47+
goVer1399, _ := goversion.NewVersion("1.3.9.9")
4548

4649
l := NewLogger(true, os.Stdout, os.Stderr)
4750

@@ -53,14 +56,17 @@ func TestGetVersionCompatibleMap(t *testing.T) {
5356
if err := yaml.Unmarshal(b, &vs); err != nil {
5457
t.Fatal(err)
5558
}
56-
var curCm, ver133Cm *version.CompatibilityMapping
59+
var curCm, ver133Cm, ver137Cm *version.CompatibilityMapping
5760
for i := range vs {
5861
if binversion.OperatorBinaryGoVersion.Equal(vs[i].OperatorVersion) {
5962
curCm = &vs[i]
6063
}
6164
if goVer133.Equal(vs[i].OperatorVersion) {
6265
ver133Cm = &vs[i]
6366
}
67+
if goVer137.Equal(vs[i].OperatorVersion) {
68+
ver137Cm = &vs[i]
69+
}
6470
}
6571

6672
if curCm == nil {
@@ -128,6 +134,46 @@ func TestGetVersionCompatibleMap(t *testing.T) {
128134
wantErr: fmt.Errorf("this operator version %s was not found in the version map",
129135
goVerNonexistent.String()),
130136
},
137+
{
138+
name: "read previous version if not found from testdata",
139+
args: args{
140+
versionsURI: testdataVersionsFilePath,
141+
binVersion: goVer1331,
142+
l: l,
143+
},
144+
want: ver133Cm,
145+
wantErr: nil,
146+
},
147+
{
148+
name: "read previous version if not found in built-in version map",
149+
args: args{
150+
versionsURI: nonexistentFilePath,
151+
binVersion: goVer1331,
152+
l: l,
153+
},
154+
want: ver133Cm,
155+
wantErr: nil,
156+
},
157+
{
158+
name: "read version matching range only from testdata",
159+
args: args{
160+
versionsURI: testdataVersionsFilePath,
161+
binVersion: goVer1399,
162+
l: l,
163+
},
164+
want: ver137Cm,
165+
wantErr: nil,
166+
},
167+
{
168+
name: "read version matching range only in built-in version map",
169+
args: args{
170+
versionsURI: nonexistentFilePath,
171+
binVersion: goVer1399,
172+
l: l,
173+
},
174+
want: ver137Cm,
175+
wantErr: nil,
176+
},
131177
}
132178
for _, tt := range tests {
133179
t.Run(tt.name, func(t *testing.T) {

cmd/mesh/testdata/manifest-versions/input/versions.yaml

+23
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,29 @@
1010
- operatorVersion: 1.3.3
1111
supportedIstioVersions: ">=1.3.0,<=1.3.3"
1212
recommendedIstioVersions: 1.3.3
13+
- operatorVersion: 1.3.4
14+
supportedIstioVersions: ">=1.3.0,<=1.3.4"
15+
recommendedIstioVersions: 1.3.4
16+
- operatorVersion: 1.3.5
17+
supportedIstioVersions: ">=1.3.0,<=1.3.5"
18+
recommendedIstioVersions: 1.3.5
19+
- operatorVersion: 1.3.6
20+
supportedIstioVersions: ">=1.3.0,<=1.3.6"
21+
recommendedIstioVersions: 1.3.6
22+
- operatorVersion: 1.3.7
23+
operatorVersionRange: ">=1.3.7,<1.4.0"
24+
supportedIstioVersions: ">=1.3.0,<1.4.0"
25+
recommendedIstioVersions: 1.3.7
1326
- operatorVersion: 1.4.0
1427
supportedIstioVersions: ">=1.3.3, <1.6"
1528
recommendedIstioVersions: 1.4.0
29+
- operatorVersion: 1.4.1
30+
supportedIstioVersions: ">=1.3.3, <1.6"
31+
recommendedIstioVersions: 1.4.1
32+
- operatorVersion: 1.4.2
33+
supportedIstioVersions: ">=1.3.3, <1.6"
34+
recommendedIstioVersions: 1.4.2
35+
- operatorVersion: 1.4.3
36+
operatorVersionRange: ">=1.4.3,<1.5.0"
37+
supportedIstioVersions: ">=1.3.3, <1.6"
38+
recommendedIstioVersions: 1.4.3

data/versions.yaml

+23
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,29 @@
1010
- operatorVersion: 1.3.3
1111
supportedIstioVersions: ">=1.3.0,<=1.3.3"
1212
recommendedIstioVersions: 1.3.3
13+
- operatorVersion: 1.3.4
14+
supportedIstioVersions: ">=1.3.0,<=1.3.4"
15+
recommendedIstioVersions: 1.3.4
16+
- operatorVersion: 1.3.5
17+
supportedIstioVersions: ">=1.3.0,<=1.3.5"
18+
recommendedIstioVersions: 1.3.5
19+
- operatorVersion: 1.3.6
20+
supportedIstioVersions: ">=1.3.0,<=1.3.6"
21+
recommendedIstioVersions: 1.3.6
22+
- operatorVersion: 1.3.7
23+
operatorVersionRange: ">=1.3.7,<1.4.0"
24+
supportedIstioVersions: ">=1.3.0,<1.4.0"
25+
recommendedIstioVersions: 1.3.7
1326
- operatorVersion: 1.4.0
1427
supportedIstioVersions: ">=1.3.3, <1.6"
1528
recommendedIstioVersions: 1.4.0
29+
- operatorVersion: 1.4.1
30+
supportedIstioVersions: ">=1.3.3, <1.6"
31+
recommendedIstioVersions: 1.4.1
32+
- operatorVersion: 1.4.2
33+
supportedIstioVersions: ">=1.3.3, <1.6"
34+
recommendedIstioVersions: 1.4.2
35+
- operatorVersion: 1.4.3
36+
operatorVersionRange: ">=1.4.3,<1.5.0"
37+
supportedIstioVersions: ">=1.3.3, <1.6"
38+
recommendedIstioVersions: 1.4.3

pkg/version/version.go

+19-6
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
// supported versions of Istio.
2828
type CompatibilityMapping struct {
2929
OperatorVersion *goversion.Version `json:"operatorVersion,omitempty"`
30+
OperatorVersionRange goversion.Constraints `json:"operatorVersionRange,omitempty"`
3031
SupportedIstioVersions goversion.Constraints `json:"supportedIstioVersions,omitempty"`
3132
RecommendedIstioVersions goversion.Constraints `json:"recommendedIstioVersions,omitempty"`
3233
}
@@ -64,6 +65,9 @@ func (v *CompatibilityMapping) MarshalYAML() (interface{}, error) {
6465
if v.OperatorVersion != nil {
6566
out["operatorVersion"] = v.OperatorVersion.String()
6667
}
68+
if v.OperatorVersionRange != nil {
69+
out["operatorVersionRange"] = v.OperatorVersionRange.String()
70+
}
6771
if v.SupportedIstioVersions != nil {
6872
out["supportedIstioVersions"] = v.SupportedIstioVersions.String()
6973
}
@@ -80,6 +84,7 @@ func (v *CompatibilityMapping) MarshalYAML() (interface{}, error) {
8084
func (v *CompatibilityMapping) UnmarshalYAML(unmarshal func(interface{}) error) error {
8185
type inStruct struct {
8286
OperatorVersion string `yaml:"operatorVersion"`
87+
OperatorVersionRange string `yaml:"operatorVersionRange"`
8388
SupportedIstioVersions string `yaml:"supportedIstioVersions"`
8489
RecommendedIstioVersions string `yaml:"recommendedIstioVersions"`
8590
}
@@ -96,17 +101,25 @@ func (v *CompatibilityMapping) UnmarshalYAML(unmarshal func(interface{}) error)
96101
}
97102

98103
var err error
99-
v.OperatorVersion, err = goversion.NewVersion(tmp.OperatorVersion)
100-
if err != nil {
104+
if v.OperatorVersion, err = goversion.NewVersion(tmp.OperatorVersion); err != nil {
101105
return err
102106
}
103-
v.SupportedIstioVersions, err = goversion.NewConstraint(tmp.SupportedIstioVersions)
104-
if err != nil {
107+
108+
if tmp.OperatorVersionRange != "" {
109+
if v.OperatorVersionRange, err = goversion.NewConstraint(tmp.OperatorVersionRange); err != nil {
110+
return err
111+
}
112+
} else {
113+
if v.OperatorVersionRange, err = goversion.NewConstraint(tmp.OperatorVersion); err != nil {
114+
return err
115+
}
116+
}
117+
118+
if v.SupportedIstioVersions, err = goversion.NewConstraint(tmp.SupportedIstioVersions); err != nil {
105119
return err
106120
}
107121
if tmp.RecommendedIstioVersions != "" {
108-
v.RecommendedIstioVersions, err = goversion.NewConstraint(tmp.RecommendedIstioVersions)
109-
if err != nil {
122+
if v.RecommendedIstioVersions, err = goversion.NewConstraint(tmp.RecommendedIstioVersions); err != nil {
110123
return err
111124
}
112125
}

pkg/version/version_test.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -108,22 +108,25 @@ func TestVersions(t *testing.T) {
108108
desc: "simple",
109109
yamlStr: `
110110
operatorVersion: 1.3.0
111-
supportedIstioVersions: 1.3.0
111+
operatorVersionRange: 1.3.0
112112
recommendedIstioVersions: 1.3.0
113+
supportedIstioVersions: 1.3.0
113114
`,
114115
},
115116
{
116117
desc: "complex",
117118
yamlStr: `
118119
operatorVersion: 1.3.0
119-
supportedIstioVersions: "> 1.1, < 1.4.0, = 1.5.2"
120-
recommendedIstioVersions: ">= 1, < 1.4"
120+
operatorVersionRange: 1.3.0
121+
recommendedIstioVersions: '>= 1, < 1.4'
122+
supportedIstioVersions: '> 1.1, < 1.4.0, = 1.5.2'
121123
`,
122124
},
123125
{
124126
desc: "partial",
125127
yamlStr: `
126128
operatorVersion: 1.3.0
129+
operatorVersionRange: 1.3.0
127130
supportedIstioVersions: "> 1.1, < 1.4.0"
128131
`,
129132
},

pkg/vfs/assets.gen.go

+23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

release/create_release_charts.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function copy_installer_charts() {
7676
function copy_operator_data() {
7777
cp -R "${OPERATOR_BASE_DIR}/data/profiles" "${OUTPUT_DIR}"
7878
cp -R "${OPERATOR_BASE_DIR}/data/examples" "${OUTPUT_DIR}"
79-
cp "${OPERATOR_BASE_DIR}/version/versions.yaml" "${OUTPUT_DIR}"
79+
cp "${OPERATOR_BASE_DIR}/data/versions.yaml" "${OUTPUT_DIR}"
8080
}
8181

8282
copy_installer_charts

version/version.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ import (
1818
goversion "github.com/hashicorp/go-version"
1919

2020
pkgversion "istio.io/operator/pkg/version"
21+
buildversion "istio.io/pkg/version"
2122
)
2223

2324
const (
2425
// OperatorVersionString is the version string of this operator binary.
25-
OperatorVersionString = "1.4.0"
26+
OperatorVersionString = "1.4.3"
2627
)
2728

2829
var (
@@ -34,11 +35,17 @@ var (
3435

3536
func init() {
3637
var err error
37-
OperatorBinaryGoVersion, err = goversion.NewVersion(OperatorVersionString)
38+
operatorVer := OperatorVersionString
39+
// If dockerinfo has a tag (e.g., specified by LDFlags), we will use it as the version of operator
40+
tag := buildversion.DockerInfo.Tag
41+
if tag != "" && tag != "unknown" {
42+
operatorVer = tag
43+
}
44+
OperatorBinaryGoVersion, err = goversion.NewVersion(operatorVer)
3845
if err != nil {
3946
panic(err)
4047
}
41-
v, err := pkgversion.NewVersionFromString(OperatorVersionString)
48+
v, err := pkgversion.NewVersionFromString(operatorVer)
4249
if err != nil {
4350
panic(err)
4451
}

version/versions.yaml

-36
This file was deleted.

0 commit comments

Comments
 (0)