Skip to content
This repository was archived by the owner on Dec 16, 2025. It is now read-only.

Commit c6a4caf

Browse files
authored
Add hash mode compatibility (#108)
Signed-off-by: Matej Feder <[email protected]>
1 parent 1d01a75 commit c6a4caf

File tree

2 files changed

+43
-14
lines changed

2 files changed

+43
-14
lines changed

internal/controller/openstackclusterstackrelease_controller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,10 @@ func getNodeImagesFromLocal(localDownloadPath string) (*NodeImages, error) {
341341

342342
// cutOpenStackClusterStackReleaseVersionFromReleaseTag returns a release tag without version,
343343
// e.g. from `openstack-ferrol-1-27-v2` returns `openstack-ferrol-1-27`.
344+
// e.g. from `openstack-ferrol-1-27-v0-sha-a3baa3a` returns `openstack-ferrol-1-27`.
344345
func cutOpenStackClusterStackReleaseVersionFromReleaseTag(releaseTag string) (string, error) {
345346
v := strings.Split(releaseTag, "-")
346-
if len(v) != 5 && len(v) != 6 {
347+
if len(v) != 5 && len(v) != 7 {
347348
return "", fmt.Errorf("invalid release tag %s", releaseTag)
348349
}
349350
return fmt.Sprintf("%s-%s-%s-%s", v[0], v[1], v[2], v[3]), nil

internal/controller/openstackclusterstackrelease_controller_test.go

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,20 +46,48 @@ const (
4646
)
4747

4848
func TestCutOpenStackClusterStackReleaseVersionFromReleaseTag(t *testing.T) {
49-
// correct release tag
50-
releaseTag := "openstack-ferrol-1-27-v2"
51-
nameWithoutVersion, err := cutOpenStackClusterStackReleaseVersionFromReleaseTag(releaseTag)
52-
53-
assert.NoError(t, err)
54-
assert.Equal(t, nameWithoutVersion, "openstack-ferrol-1-27")
55-
56-
// incorrect release tag
57-
releaseTag = "openstack-ferrol-1-27"
58-
nameWithoutVersion, err = cutOpenStackClusterStackReleaseVersionFromReleaseTag(releaseTag)
49+
tests := []struct {
50+
releaseTag string
51+
expected string
52+
incorrect bool
53+
}{
54+
{
55+
"openstack-ferrol-1-27-v2", // stable channel
56+
"openstack-ferrol-1-27",
57+
false,
58+
},
59+
{
60+
"openstack-ferrol-1-27-v0-sha-a3baa3a", // custom channel (hash mode)
61+
"openstack-ferrol-1-27",
62+
false,
63+
},
64+
{
65+
"docker-ferrol-1-26-v1-alpha-0", // alpha channel
66+
"docker-ferrol-1-26",
67+
false,
68+
},
69+
{
70+
"openstack-ferrol-1-27", // incorrect tag
71+
"",
72+
true,
73+
},
74+
{
75+
"docker-ferrol-1.26", // incorrect tag
76+
"",
77+
true,
78+
},
79+
}
80+
for _, test := range tests {
81+
nameWithoutVersion, err := cutOpenStackClusterStackReleaseVersionFromReleaseTag(test.releaseTag)
82+
if test.incorrect {
83+
assert.Error(t, err)
84+
assert.EqualError(t, err, fmt.Sprintf("invalid release tag %s", test.releaseTag))
85+
} else {
86+
assert.NoError(t, err)
87+
}
5988

60-
assert.Error(t, err)
61-
assert.EqualError(t, err, fmt.Sprintf("invalid release tag %s", releaseTag))
62-
assert.Empty(t, nameWithoutVersion)
89+
assert.Equal(t, nameWithoutVersion, test.expected)
90+
}
6391
}
6492

6593
func TestGenerateOwnerReference(t *testing.T) {

0 commit comments

Comments
 (0)