Skip to content

Commit d23093a

Browse files
authored
🌱 Enable integers lint of KAL (#11887)
* enable integers lint Signed-off-by: sivchari <[email protected]> * fix cmd/clusterctl Signed-off-by: sivchari <[email protected]> * add exclude rules Signed-off-by: sivchari <[email protected]> * move integers linter Signed-off-by: sivchari <[email protected]> --------- Signed-off-by: sivchari <[email protected]>
1 parent 2a01368 commit d23093a

File tree

6 files changed

+25
-15
lines changed

6 files changed

+25
-15
lines changed

.golangci-kal.yml

+9-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ linters-settings:
1717
linters:
1818
enable:
1919
- "conditions" # Ensure conditions have the correct json tags and markers.
20+
- "integers" # Ensure only int32 and int64 are used for integers.
2021

2122
# Per discussion in July 2024, we are keeping phase fields for now.
2223
# See https://github.com/kubernetes-sigs/cluster-api/pull/10897#discussion_r1685929508
@@ -25,7 +26,6 @@ linters-settings:
2526

2627
# Linters below this line are disabled, pending conversation on how and when to enable them.
2728
# - "commentstart" # Ensure comments start with the serialized version of the field name.
28-
# - "integers" # Ensure only int32 and int64 are used for integers.
2929
# - "jsontags" # Ensure every field has a json tag.
3030
# - "maxlength" # Ensure all strings and arrays have maximum lengths/maximum items.
3131
# - "nobools" # Bools do not evolve over time, should use enums instead.
@@ -65,3 +65,11 @@ issues:
6565
text: "Conditions field must be a slice of metav1.Condition"
6666
linters:
6767
- kal
68+
- path: "api/v1beta1/*"
69+
text: "type ClusterIPFamily should not use an int, int8 or int16. Use int32 or int64 depending on bounding requirements"
70+
linters:
71+
- kal
72+
- path: "exp/ipam/api/v1alpha1/*|exp/ipam/api/v1beta1/*"
73+
text: "field Prefix should not use an int, int8 or int16. Use int32 or int64 depending on bounding requirements"
74+
linters:
75+
- kal

cmd/clusterctl/api/v1alpha3/metadata_type.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ type Metadata struct {
3636
// ReleaseSeries maps a provider release series (major/minor) with a API Version of Cluster API (contract).
3737
type ReleaseSeries struct {
3838
// major version of the release series
39-
Major uint `json:"major,omitempty"`
39+
Major int32 `json:"major,omitempty"`
4040

4141
// minor version of the release series
42-
Minor uint `json:"minor,omitempty"`
42+
Minor int32 `json:"minor,omitempty"`
4343

4444
// contract defines the Cluster API contract supported by this series.
4545
//
@@ -60,7 +60,7 @@ func init() {
6060
// GetReleaseSeriesForVersion returns the release series for a given version.
6161
func (m *Metadata) GetReleaseSeriesForVersion(version *version.Version) *ReleaseSeries {
6262
for _, releaseSeries := range m.ReleaseSeries {
63-
if version.Major() == releaseSeries.Major && version.Minor() == releaseSeries.Minor {
63+
if version.Major() == uint(releaseSeries.Major) && version.Minor() == uint(releaseSeries.Minor) {
6464
return &releaseSeries
6565
}
6666
}

cmd/clusterctl/client/cluster/upgrader_info.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func (i *upgradeInfo) getContractsForUpgrade() []string {
153153
contractsForUpgrade := sets.Set[string]{}
154154
for _, releaseSeries := range i.metadata.ReleaseSeries {
155155
// Drop the release series if older than the current version, because not relevant for upgrade.
156-
if i.currentVersion.Major() > releaseSeries.Major || (i.currentVersion.Major() == releaseSeries.Major && i.currentVersion.Minor() > releaseSeries.Minor) {
156+
if i.currentVersion.Major() > uint(releaseSeries.Major) || (i.currentVersion.Major() == uint(releaseSeries.Major) && i.currentVersion.Minor() > uint(releaseSeries.Minor)) {
157157
continue
158158
}
159159
contractsForUpgrade.Insert(releaseSeries.Contract)
@@ -177,8 +177,8 @@ func (i *upgradeInfo) getLatestNextVersion(contract string) *version.Version {
177177

178178
// Drop the nextVersion version if not linked with the current
179179
// release series or if it is a pre-release.
180-
if nextVersion.Major() != releaseSeries.Major ||
181-
nextVersion.Minor() != releaseSeries.Minor ||
180+
if nextVersion.Major() != uint(releaseSeries.Major) ||
181+
nextVersion.Minor() != uint(releaseSeries.Minor) ||
182182
nextVersion.PreRelease() != "" {
183183
continue
184184
}

cmd/clusterctl/client/repository/repository_github_test.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -698,9 +698,9 @@ func Test_gitHubRepository_getLatestPatchRelease(t *testing.T) {
698698
fmt.Fprint(w, "apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3\nreleaseSeries:\n - major: 0\n minor: 4\n contract: v1alpha4\n - major: 0\n minor: 5\n contract: v1alpha4\n - major: 0\n minor: 3\n contract: v1alpha3\n")
699699
})
700700

701-
major0 := uint(0)
702-
minor3 := uint(3)
703-
minor4 := uint(4)
701+
major0 := int32(0)
702+
minor3 := int32(3)
703+
minor4 := int32(4)
704704

705705
configVariablesClient := test.NewFakeVariableClient()
706706

@@ -710,8 +710,8 @@ func Test_gitHubRepository_getLatestPatchRelease(t *testing.T) {
710710
tests := []struct {
711711
name string
712712
field field
713-
major *uint
714-
minor *uint
713+
major *int32
714+
minor *int32
715715
want string
716716
wantErr bool
717717
}{

cmd/clusterctl/client/repository/repository_versions.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func latestContractRelease(ctx context.Context, repo Repository, contract string
7171

7272
// If the Major or Minor version of the latest release doesn't match the release series for the current contract,
7373
// return the latest patch release of the desired Major/Minor version.
74-
if sv.Major() != releaseSeries.Major || sv.Minor() != releaseSeries.Minor {
74+
if sv.Major() != uint(releaseSeries.Major) || sv.Minor() != uint(releaseSeries.Minor) {
7575
return latestPatchRelease(ctx, repo, &releaseSeries.Major, &releaseSeries.Minor)
7676
}
7777
return latest, nil
@@ -84,7 +84,7 @@ func latestRelease(ctx context.Context, repo Repository) (string, error) {
8484
}
8585

8686
// latestPatchRelease returns the latest patch release for a given Major and Minor version.
87-
func latestPatchRelease(ctx context.Context, repo Repository, major, minor *uint) (string, error) {
87+
func latestPatchRelease(ctx context.Context, repo Repository, major, minor *int32) (string, error) {
8888
versions, err := repo.GetVersions(ctx)
8989
if err != nil {
9090
return "", errors.Wrapf(err, "failed to get repository versions")
@@ -101,7 +101,7 @@ func latestPatchRelease(ctx context.Context, repo Repository, major, minor *uint
101101
continue
102102
}
103103

104-
if (major != nil && sv.Major() != *major) || (minor != nil && sv.Minor() != *minor) {
104+
if (major != nil && sv.Major() != uint(*major)) || (minor != nil && sv.Minor() != uint(*minor)) {
105105
// skip versions that don't match the desired Major.Minor version.
106106
continue
107107
}

cmd/clusterctl/config/crd/bases/clusterctl.cluster.x-k8s.io_metadata.yaml

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

0 commit comments

Comments
 (0)