Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor godocs for API fields to start with the serialised versions #11238

Open
chrischdi opened this issue Sep 30, 2024 · 24 comments
Open

Refactor godocs for API fields to start with the serialised versions #11238

chrischdi opened this issue Sep 30, 2024 · 24 comments
Assignees
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. priority/backlog Higher priority than priority/awaiting-more-evidence. triage/accepted Indicates an issue or PR is ready to be actively worked on.

Comments

@chrischdi
Copy link
Member

What would you like to be added (User Story)?

Godocs for api types in core k8s normally start with the serialised version for better readability in e.g. kubectl describe.

Example:

	// emptyDir represents a temporary directory that shares a pod's lifetime.
	// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
	// +optional
	EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" protobuf:"bytes,2,opt,name=emptyDir"`

Source: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L60-L63

This issue tracks refactoring all relevant godocs of our API types.

Maybe there could also be a linter to enforce this.

Detailed Description

I can't see it explicitly called out in the API conventions from upstream, but, take a look at the godoc across the core types (and I know the upstream API reviewers enforce this from experience), kubernetes/api@master/core/v1/types.go, all of the godocs on fields start with the json tag version of the field name, so that when docs are generated, they represent the serialised versions of the strings

[0]

Anything else you would like to add?

xref: Discussion at #11166 (comment)

Label(s) to be applied

/kind api

@k8s-ci-robot
Copy link
Contributor

@chrischdi: The label(s) kind/api cannot be applied, because the repository doesn't have them.

In response to this:

What would you like to be added (User Story)?

Godocs for api types in core k8s normally start with the serialised version for better readability in e.g. kubectl describe.

Example:

  // emptyDir represents a temporary directory that shares a pod's lifetime.
  // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
  // +optional
  EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" protobuf:"bytes,2,opt,name=emptyDir"`

Source: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L60-L63

This issue tracks refactoring all relevant godocs of our API types.

Maybe there could also be a linter to enforce this.

Detailed Description

I can't see it explicitly called out in the API conventions from upstream, but, take a look at the godoc across the core types (and I know the upstream API reviewers enforce this from experience), kubernetes/api@master/core/v1/types.go, all of the godocs on fields start with the json tag version of the field name, so that when docs are generated, they represent the serialised versions of the strings

[0]

Anything else you would like to add?

xref: Discussion at #11166 (comment)

Label(s) to be applied

/kind api

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added needs-priority Indicates an issue lacks a `priority/foo` label and requires one. needs-kind Indicates a PR lacks a `kind/foo` label and requires one. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Sep 30, 2024
@chrischdi chrischdi changed the title Refactor godocs to start with the serialised versions Refactor godocs for API fields to start with the serialised versions Sep 30, 2024
@sbueringer
Copy link
Member

Sounds good to me!

(cc @vincepri @fabriziopandini @JoelSpeed)

/kind cleanup
/priority backlog
/triage accepted
/help

@k8s-ci-robot
Copy link
Contributor

@sbueringer:
This request has been marked as needing help from a contributor.

Guidelines

Please ensure that the issue body includes answers to the following questions:

  • Why are we solving this issue?
  • To address this issue, are there any code changes? If there are code changes, what needs to be done in the code and what places can the assignee treat as reference points?
  • Does this issue have zero to low barrier of entry?
  • How can the assignee reach out to you for help?

For more details on the requirements of such an issue, please see here and ensure that they are met.

If this request no longer meets these requirements, the label can be removed
by commenting with the /remove-help command.

In response to this:

Sounds good to me!

(cc @vincepri @fabriziopandini @JoelSpeed)

/kind cleanup
/priority backlog
/triage accepted
/help

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@k8s-ci-robot k8s-ci-robot added kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. priority/backlog Higher priority than priority/awaiting-more-evidence. triage/accepted Indicates an issue or PR is ready to be actively worked on. and removed needs-kind Indicates a PR lacks a `kind/foo` label and requires one. needs-priority Indicates an issue lacks a `priority/foo` label and requires one. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Sep 30, 2024
@tsuzu
Copy link
Contributor

tsuzu commented Oct 3, 2024

/assign
I'd like to work on this issue.

@tsuzu
Copy link
Contributor

tsuzu commented Oct 3, 2024

I couldn't find an existing linter/formatter for this.
but It's too hard to fix all comments manually, so I'm implemting it.
https://github.com/tsuzu/cluster-api/blob/godocprefix/hack/tools/staticchecker/internal/analyzer/godocprefix.go

I'm not sure it can be maintained in cluster-api project or not.
If not, I'll send patches to fix just comments.

$ ./hack/tools/staticchecker/staticchecker ./api/... 2>&1 | wc -l
302

$ ./hack/tools/staticchecker/staticchecker -fix ./api/...
/workspace/cluster-api/api/v1beta1/cluster_types.go:47:2: godoc prefix of Paused should be 'paused '
/workspace/cluster-api/api/v1beta1/cluster_types.go:51:2: godoc prefix of ClusterNetwork should be 'clusterNetwork '
/workspace/cluster-api/api/v1beta1/cluster_types.go:55:2: godoc prefix of ControlPlaneEndpoint should be 'controlPlaneEndpoint '
/workspace/cluster-api/api/v1beta1/cluster_types.go:59:2: godoc prefix of ControlPlaneRef should be 'controlPlaneRef '
/workspace/cluster-api/api/v1beta1/cluster_types.go:64:2: godoc prefix of InfrastructureRef should be 'infrastructureRef '
/workspace/cluster-api/api/v1beta1/cluster_types.go:69:2: godoc prefix of Topology should be 'topology '
/workspace/cluster-api/api/v1beta1/cluster_types.go:79:2: godoc prefix of Class should be 'class '
/workspace/cluster-api/api/v1beta1/cluster_types.go:82:2: godoc prefix of Version should be 'version '
/workspace/cluster-api/api/v1beta1/cluster_types.go:85:2: godoc prefix of RolloutAfter should be 'rolloutAfter '
...

$ ./hack/tools/staticchecker/staticchecker ./api/... 2>&1 | wc -l
73

$ git diff | head -n 12
diff --git a/api/v1beta1/cluster_types.go b/api/v1beta1/cluster_types.go
index ccefcd694..bfdf3ae0e 100644
--- a/api/v1beta1/cluster_types.go
+++ b/api/v1beta1/cluster_types.go
@@ -44,7 +44,7 @@ const (

 // ClusterSpec defines the desired state of Cluster.
 type ClusterSpec struct {
-       // Paused can be used to prevent controllers from processing the Cluster and all its associated objects.
+       // paused can be used to prevent controllers from processing the Cluster and all its associated objects.
        // +optional
        Paused bool `json:"paused,omitempty"`

@fabriziopandini
Copy link
Member

q: is this something for the current API or it is part of the work for v1beta2 API?

@chrischdi
Copy link
Member Author

No strong opinion because its only about the godoc comment. I'd like to ensure we follow it for new fields, for old ones best-effort I'd say.

@tsuzu
Copy link
Contributor

tsuzu commented Oct 7, 2024

so should the linter be enforced to files only in api/v1beta2 directory?

@sbueringer
Copy link
Member

sbueringer commented Oct 8, 2024

Let's do it everywhere. Changing one character in a field description is not a breaking change in any way

The v1beta2 work is already so much that we have to scope it down because we can't get everything done in a release cycle. Let's not defer further work to v1beta2 if not strictly necessary

@tsuzu
Copy link
Contributor

tsuzu commented Oct 8, 2024

Let me clarity the scope of this issue.

Fields not starting with field names like below should be fixed?

// The Kubernetes version of the cluster.
Version string `json:"version"`

Then, I'll prepare to fix such godocs.

@neolit123
Copy link
Member

not a fan as i commented on the PR:

@sbueringer
Copy link
Member

cc @JoelSpeed ^^

@JoelSpeed
Copy link
Contributor

Left a comment on the PR in response to @neolit123

Some additional thoughts, changing and improving documentation is not a breaking change as has been mentioned.

We have docs that current don't even start with the field name, can we fix those as well?

We probably want all references to fields to use the serialised versions when in the godocs on the fields themselves (these are the ones that end up in the generated CRD), so this may also mean changing some instances mid sentence as well

@tsuzu
Copy link
Contributor

tsuzu commented Oct 14, 2024

Even after #11273, the number of missing or unnormalized comments is still over 400.

  • Tests (containing test in the path)
    • missing: 29
    • unnormalized: 18
  • Types (containing types in the path)
    • missing: 144
      • spec / status / items: 123
    • unnormalized: 214
      • spec / status / items: 14
  • Other
    • missing: 11
    • unnormalized: 1

An example of Other is:

Major string `json:"major,omitempty"`
Minor string `json:"minor,omitempty"`
GitVersion string `json:"gitVersion,omitempty"`
GitCommit string `json:"gitCommit,omitempty"`
GitTreeState string `json:"gitTreeState,omitempty"`
BuildDate string `json:"buildDate,omitempty"`
GoVersion string `json:"goVersion,omitempty"`
Compiler string `json:"compiler,omitempty"`
Platform string `json:"platform,omitempty"`

We need to fix Types at least because they'll appear in the descriptions of CRD.
There are many points to fix, but I think it's not too many to fix all.

Then, I'd like to start from spec / status / items.

Full list
/cluster-api/api/v1beta1/cluster_types.go:51:2: ClusterNetwork should have a comment starting with 'clusterNetwork '
/cluster-api/api/v1beta1/cluster_types.go:69:2: Topology should have a comment starting with 'topology '
/cluster-api/api/v1beta1/cluster_types.go:100:2: Class should have a comment starting with 'class '
/cluster-api/api/v1beta1/cluster_types.go:103:2: Version should have a comment starting with 'version '
/cluster-api/api/v1beta1/cluster_types.go:243:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/api/v1beta1/cluster_types.go:250:2: Strategy should have a comment starting with 'strategy '
/cluster-api/api/v1beta1/cluster_types.go:320:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/api/v1beta1/cluster_types.go:401:2: Services should have a comment starting with 'services '
/cluster-api/api/v1beta1/cluster_types.go:405:2: Pods should have a comment starting with 'pods '
/cluster-api/api/v1beta1/cluster_types.go:409:2: ServiceDomain should have a comment starting with 'serviceDomain '
/cluster-api/api/v1beta1/cluster_types.go:420:2: CIDRBlocks should have a comment starting with 'cidrBlocks ' (missing)
/cluster-api/api/v1beta1/cluster_types.go:578:2: Host should have a comment starting with 'host '
/cluster-api/api/v1beta1/cluster_types.go:581:2: Port should have a comment starting with 'port '
/cluster-api/api/v1beta1/cluster_types.go:616:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/api/v1beta1/cluster_types.go:617:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/api/v1beta1/cluster_types.go:747:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/api/v1beta1/clusterclass_types.go:42:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/api/v1beta1/clusterclass_types.go:43:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/api/v1beta1/clusterclass_types.go:210:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/api/v1beta1/clusterclass_types.go:217:2: Strategy should have a comment starting with 'strategy '
/cluster-api/api/v1beta1/clusterclass_types.go:263:2: MaxUnhealthy should have a comment starting with 'maxUnhealthy '
/cluster-api/api/v1beta1/clusterclass_types.go:268:2: UnhealthyRange should have a comment starting with 'unhealthyRange '
/cluster-api/api/v1beta1/clusterclass_types.go:344:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/api/v1beta1/clusterclass_types.go:419:2: Labels should have a comment starting with 'labels '
/cluster-api/api/v1beta1/clusterclass_types.go:639:2: Labels should have a comment starting with 'labels '
/cluster-api/api/v1beta1/clusterclass_types.go:1037:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/api/v1beta1/common_types.go:276:2: Type should have a comment starting with 'type '
/cluster-api/api/v1beta1/common_types.go:279:2: Address should have a comment starting with 'address '
/cluster-api/api/v1beta1/common_types.go:308:2: Labels should have a comment starting with 'labels '
/cluster-api/api/v1beta1/condition_types.go:70:2: LastTransitionTime should have a comment starting with 'lastTransitionTime '
/cluster-api/api/v1beta1/condition_types.go:75:2: Reason should have a comment starting with 'reason '
/cluster-api/api/v1beta1/condition_types.go:81:2: Message should have a comment starting with 'message '
/cluster-api/api/v1beta1/machine_types.go:373:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/api/v1beta1/machine_types.go:374:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/api/v1beta1/machine_types.go:409:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/api/v1beta1/machinedeployment_types.go:88:2: Replicas should have a comment starting with 'replicas '
/cluster-api/api/v1beta1/machinedeployment_types.go:117:2: Selector should have a comment starting with 'selector '
/cluster-api/api/v1beta1/machinedeployment_types.go:125:2: Strategy should have a comment starting with 'strategy '
/cluster-api/api/v1beta1/machinedeployment_types.go:135:2: RevisionHistoryLimit should have a comment starting with 'revisionHistoryLimit '
/cluster-api/api/v1beta1/machinedeployment_types.go:144:2: Paused should have a comment starting with 'paused '
/cluster-api/api/v1beta1/machinedeployment_types.go:148:2: ProgressDeadlineSeconds should have a comment starting with 'progressDeadlineSeconds '
/cluster-api/api/v1beta1/machinedeployment_types.go:170:2: RollingUpdate should have a comment starting with 'rollingUpdate '
/cluster-api/api/v1beta1/machinedeployment_types.go:187:2: MaxUnavailable should have a comment starting with 'maxUnavailable '
/cluster-api/api/v1beta1/machinedeployment_types.go:202:2: MaxSurge should have a comment starting with 'maxSurge '
/cluster-api/api/v1beta1/machinedeployment_types.go:257:2: ObservedGeneration should have a comment starting with 'observedGeneration '
/cluster-api/api/v1beta1/machinedeployment_types.go:267:2: Replicas should have a comment starting with 'replicas '
/cluster-api/api/v1beta1/machinedeployment_types.go:272:2: UpdatedReplicas should have a comment starting with 'updatedReplicas '
/cluster-api/api/v1beta1/machinedeployment_types.go:277:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/api/v1beta1/machinedeployment_types.go:281:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/api/v1beta1/machinedeployment_types.go:286:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/api/v1beta1/machinedeployment_types.go:393:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/api/v1beta1/machinedeployment_types.go:394:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/api/v1beta1/machinedeployment_types.go:403:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/api/v1beta1/machinehealthcheck_types.go:43:2: Selector should have a comment starting with 'selector '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:53:2: MaxUnhealthy should have a comment starting with 'maxUnhealthy '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:61:2: UnhealthyRange should have a comment starting with 'unhealthyRange '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:106:2: Type should have a comment starting with 'type '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:110:2: Status should have a comment starting with 'status '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:114:2: Timeout should have a comment starting with 'timeout ' (missing)
/cluster-api/api/v1beta1/machinehealthcheck_types.go:123:2: ExpectedMachines should have a comment starting with 'expectedMachines '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:128:2: CurrentHealthy should have a comment starting with 'currentHealthy '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:185:2: Spec should have a comment starting with 'spec '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:188:2: Status should have a comment starting with 'status '
/cluster-api/api/v1beta1/machinehealthcheck_types.go:224:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/api/v1beta1/machineset_types.go:101:2: Spec should have a comment starting with 'spec '
/cluster-api/api/v1beta1/machineset_types.go:150:2: FullyLabeledReplicas should have a comment starting with 'fullyLabeledReplicas '
/cluster-api/api/v1beta1/machineset_types.go:154:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/api/v1beta1/machineset_types.go:158:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/api/v1beta1/machineset_types.go:166:2: FailureReason should have a comment starting with 'failureReason '
/cluster-api/api/v1beta1/machineset_types.go:186:2: FailureMessage should have a comment starting with 'failureMessage '
/cluster-api/api/v1beta1/machineset_types.go:264:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/api/v1beta1/machineset_types.go:265:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/api/v1beta1/machineset_types.go:300:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/exp/api/v1beta1/machinepool_types.go:40:2: Replicas should have a comment starting with 'replicas '
/cluster-api/exp/api/v1beta1/machinepool_types.go:48:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/exp/api/v1beta1/machinepool_types.go:79:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/exp/api/v1beta1/machinepool_types.go:83:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/exp/api/v1beta1/machinepool_types.go:87:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/exp/api/v1beta1/machinepool_types.go:256:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/api/v1beta1/machinepool_types.go:257:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/exp/api/v1beta1/machinepool_types.go:292:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go:145:2: ClusterName should have a comment starting with 'clusterName '
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go:637:2: Args should have a comment starting with 'args '
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go:647:2: APIVersion should have a comment starting with 'apiVersion '
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go:665:2: Name should have a comment starting with 'name ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadm_types.go:666:2: Value should have a comment starting with 'value ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfig_types.go:474:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfig_types.go:475:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfig_types.go:510:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfigtemplate_types.go:27:2: Template should have a comment starting with 'template ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfigtemplate_types.go:32:2: ObjectMeta should have a comment starting with 'metadata '
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfigtemplate_types.go:37:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfigtemplate_types.go:50:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/bootstrap/kubeadm/api/v1beta1/kubeadmconfigtemplate_types.go:59:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/version/version.go:69:2: Major should have a comment starting with 'major ' (missing)
/cluster-api/version/version.go:70:2: Minor should have a comment starting with 'minor ' (missing)
/cluster-api/version/version.go:71:2: GitVersion should have a comment starting with 'gitVersion ' (missing)
/cluster-api/version/version.go:72:2: GitCommit should have a comment starting with 'gitCommit ' (missing)
/cluster-api/version/version.go:73:2: GitTreeState should have a comment starting with 'gitTreeState ' (missing)
/cluster-api/version/version.go:74:2: BuildDate should have a comment starting with 'buildDate ' (missing)
/cluster-api/version/version.go:75:2: GoVersion should have a comment starting with 'goVersion ' (missing)
/cluster-api/version/version.go:76:2: Compiler should have a comment starting with 'compiler ' (missing)
/cluster-api/version/version.go:77:2: Platform should have a comment starting with 'platform ' (missing)
/cluster-api/exp/runtime/api/v1alpha1/extensionconfig_types.go:173:2: Spec should have a comment starting with 'spec '
/cluster-api/exp/runtime/api/v1alpha1/extensionconfig_types.go:176:2: Status should have a comment starting with 'status '
/cluster-api/exp/runtime/api/v1alpha1/extensionconfig_types.go:196:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:81:2: Replicas should have a comment starting with 'replicas '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:117:2: RolloutStrategy should have a comment starting with 'rolloutStrategy '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:123:2: RemediationStrategy should have a comment starting with 'remediationStrategy '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:131:2: ObjectMeta should have a comment starting with 'metadata '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:175:2: RollingUpdate should have a comment starting with 'rollingUpdate '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:183:2: MaxSurge should have a comment starting with 'maxSurge '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:247:2: Replicas should have a comment starting with 'replicas '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:257:2: UpdatedReplicas should have a comment starting with 'updatedReplicas '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:262:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:266:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:293:2: FailureMessage should have a comment starting with 'failureMessage '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:376:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:377:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadm_control_plane_types.go:412:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:28:2: Template should have a comment starting with 'template ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:41:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:50:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:59:2: ObjectMeta should have a comment starting with 'metadata '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:64:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:95:2: RolloutStrategy should have a comment starting with 'rolloutStrategy '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:101:2: RemediationStrategy should have a comment starting with 'remediationStrategy '
/cluster-api/controlplane/kubeadm/api/v1beta1/kubeadmcontrolplanetemplate_types.go:113:2: ObjectMeta should have a comment starting with 'metadata '
/cluster-api/exp/runtime/hooks/api/v1alpha1/common_types.go:76:2: Message should have a comment starting with 'message '
/cluster-api/exp/runtime/hooks/api/v1alpha1/topologymutation_types.go:161:2: APIVersion should have a comment starting with 'apiVersion '
/cluster-api/exp/runtime/hooks/api/v1alpha1/topologymutation_variable_types.go:30:2: Cluster should have a comment starting with 'cluster ' (missing)
/cluster-api/exp/runtime/hooks/api/v1alpha1/topologymutation_variable_types.go:31:2: ControlPlane should have a comment starting with 'controlPlane ' (missing)
/cluster-api/exp/runtime/hooks/api/v1alpha1/topologymutation_variable_types.go:32:2: MachineDeployment should have a comment starting with 'machineDeployment ' (missing)
/cluster-api/exp/runtime/hooks/api/v1alpha1/topologymutation_variable_types.go:33:2: MachinePool should have a comment starting with 'machinePool ' (missing)
/cluster-api/exp/addons/api/v1beta1/clusterresourceset_types.go:38:2: ClusterSelector should have a comment starting with 'clusterSelector '
/cluster-api/exp/addons/api/v1beta1/clusterresourceset_types.go:161:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/addons/api/v1beta1/clusterresourceset_types.go:162:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/exp/addons/api/v1beta1/clusterresourceset_types.go:171:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/exp/addons/api/v1beta1/clusterresourcesetbinding_types.go:178:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/addons/api/v1beta1/clusterresourcesetbinding_types.go:203:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/exp/ipam/api/v1beta1/ipaddress_types.go:56:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/ipam/api/v1beta1/ipaddress_types.go:65:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/exp/ipam/api/v1beta1/ipaddressclaim_types.go:60:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/ipam/api/v1beta1/ipaddressclaim_types.go:61:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/exp/ipam/api/v1beta1/ipaddressclaim_types.go:80:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:45:2: ClusterNetwork should have a comment starting with 'clusterNetwork '
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:76:2: Services should have a comment starting with 'services '
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:80:2: Pods should have a comment starting with 'pods '
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:84:2: ServiceDomain should have a comment starting with 'serviceDomain '
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:95:2: CIDRBlocks should have a comment starting with 'cidrBlocks ' (missing)
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:178:2: Host should have a comment starting with 'host '
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:181:2: Port should have a comment starting with 'port '
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:214:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:215:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha3/cluster_types.go:234:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha3/common_types.go:94:2: Type should have a comment starting with 'type '
/cluster-api/internal/apis/core/v1alpha3/common_types.go:97:2: Address should have a comment starting with 'address '
/cluster-api/internal/apis/core/v1alpha3/common_types.go:170:2: Labels should have a comment starting with 'labels '
/cluster-api/internal/apis/core/v1alpha3/common_types.go:184:2: OwnerReferences should have a comment starting with 'ownerReferences '
/cluster-api/internal/apis/core/v1alpha3/condition_types.go:72:2: LastTransitionTime should have a comment starting with 'lastTransitionTime '
/cluster-api/internal/apis/core/v1alpha3/condition_types.go:78:2: Reason should have a comment starting with 'reason '
/cluster-api/internal/apis/core/v1alpha3/condition_types.go:84:2: Message should have a comment starting with 'message '
/cluster-api/internal/apis/core/v1alpha3/machine_types.go:256:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machine_types.go:257:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machine_types.go:278:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:54:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:58:2: Selector should have a comment starting with 'selector '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:66:2: Strategy should have a comment starting with 'strategy '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:71:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:78:2: RevisionHistoryLimit should have a comment starting with 'revisionHistoryLimit '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:84:2: Paused should have a comment starting with 'paused '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:88:2: ProgressDeadlineSeconds should have a comment starting with 'progressDeadlineSeconds '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:109:2: RollingUpdate should have a comment starting with 'rollingUpdate '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:121:2: MaxUnavailable should have a comment starting with 'maxUnavailable '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:136:2: MaxSurge should have a comment starting with 'maxSurge '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:159:2: ObservedGeneration should have a comment starting with 'observedGeneration '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:169:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:174:2: UpdatedReplicas should have a comment starting with 'updatedReplicas '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:179:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:183:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:188:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:262:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:263:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machinedeployment_types.go:274:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:33:2: Selector should have a comment starting with 'selector '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:43:2: MaxUnhealthy should have a comment starting with 'maxUnhealthy '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:48:2: NodeStartupTimeout should have a comment starting with 'nodeStartupTimeout '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:71:2: Type should have a comment starting with 'type '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:75:2: Status should have a comment starting with 'status '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:79:2: Timeout should have a comment starting with 'timeout ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:88:2: ExpectedMachines should have a comment starting with 'expectedMachines '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:92:2: CurrentHealthy should have a comment starting with 'currentHealthy '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:132:2: Spec should have a comment starting with 'spec '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:135:2: Status should have a comment starting with 'status '
/cluster-api/internal/apis/core/v1alpha3/machinehealthcheck_types.go:157:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:76:2: Spec should have a comment starting with 'spec '
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:122:2: FullyLabeledReplicas should have a comment starting with 'fullyLabeledReplicas '
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:126:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:130:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:138:2: FailureReason should have a comment starting with 'failureReason '
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:158:2: FailureMessage should have a comment starting with 'failureMessage '
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:204:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:205:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha3/machineset_types.go:216:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha3/clusterresourceset_types.go:38:2: ClusterSelector should have a comment starting with 'clusterSelector '
/cluster-api/internal/apis/core/exp/addons/v1alpha3/clusterresourceset_types.go:126:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha3/clusterresourceset_types.go:127:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha3/clusterresourceset_types.go:138:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha3/clusterresourcesetbinding_types.go:115:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha3/clusterresourcesetbinding_types.go:136:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:46:2: ClusterNetwork should have a comment starting with 'clusterNetwork '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:64:2: Topology should have a comment starting with 'topology '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:74:2: Class should have a comment starting with 'class '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:77:2: Version should have a comment starting with 'version '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:156:2: Services should have a comment starting with 'services '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:160:2: Pods should have a comment starting with 'pods '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:164:2: ServiceDomain should have a comment starting with 'serviceDomain '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:175:2: CIDRBlocks should have a comment starting with 'cidrBlocks ' (missing)
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:254:2: Host should have a comment starting with 'host '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:257:2: Port should have a comment starting with 'port '
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:293:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:294:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha4/cluster_types.go:399:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha4/clusterclass_types.go:37:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha4/clusterclass_types.go:72:2: MachineInfrastructure should have a comment starting with 'machineInfrastructure '
/cluster-api/internal/apis/core/v1alpha4/clusterclass_types.go:133:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha4/common_types.go:146:2: Type should have a comment starting with 'type '
/cluster-api/internal/apis/core/v1alpha4/common_types.go:149:2: Address should have a comment starting with 'address '
/cluster-api/internal/apis/core/v1alpha4/common_types.go:178:2: Labels should have a comment starting with 'labels '
/cluster-api/internal/apis/core/v1alpha4/condition_types.go:72:2: LastTransitionTime should have a comment starting with 'lastTransitionTime '
/cluster-api/internal/apis/core/v1alpha4/condition_types.go:78:2: Reason should have a comment starting with 'reason '
/cluster-api/internal/apis/core/v1alpha4/condition_types.go:84:2: Message should have a comment starting with 'message '
/cluster-api/internal/apis/core/v1alpha4/machine_types.go:255:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machine_types.go:256:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machine_types.go:277:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:70:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:76:2: Selector should have a comment starting with 'selector '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:84:2: Strategy should have a comment starting with 'strategy '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:89:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:96:2: RevisionHistoryLimit should have a comment starting with 'revisionHistoryLimit '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:102:2: Paused should have a comment starting with 'paused '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:106:2: ProgressDeadlineSeconds should have a comment starting with 'progressDeadlineSeconds '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:127:2: RollingUpdate should have a comment starting with 'rollingUpdate '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:139:2: MaxUnavailable should have a comment starting with 'maxUnavailable '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:154:2: MaxSurge should have a comment starting with 'maxSurge '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:184:2: ObservedGeneration should have a comment starting with 'observedGeneration '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:194:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:199:2: UpdatedReplicas should have a comment starting with 'updatedReplicas '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:204:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:208:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:213:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:293:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:294:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machinedeployment_types.go:305:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:33:2: Selector should have a comment starting with 'selector '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:43:2: MaxUnhealthy should have a comment starting with 'maxUnhealthy '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:48:2: UnhealthyRange should have a comment starting with 'unhealthyRange '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:57:2: NodeStartupTimeout should have a comment starting with 'nodeStartupTimeout '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:82:2: Type should have a comment starting with 'type '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:86:2: Status should have a comment starting with 'status '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:90:2: Timeout should have a comment starting with 'timeout ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:99:2: ExpectedMachines should have a comment starting with 'expectedMachines '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:103:2: CurrentHealthy should have a comment starting with 'currentHealthy '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:145:2: Spec should have a comment starting with 'spec '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:148:2: Status should have a comment starting with 'status '
/cluster-api/internal/apis/core/v1alpha4/machinehealthcheck_types.go:170:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:83:2: Spec should have a comment starting with 'spec '
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:129:2: FullyLabeledReplicas should have a comment starting with 'fullyLabeledReplicas '
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:133:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:137:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:145:2: FailureReason should have a comment starting with 'failureReason '
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:165:2: FailureMessage should have a comment starting with 'failureMessage '
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:216:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:217:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/v1alpha4/machineset_types.go:228:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha4/clusterresourceset_types.go:38:2: ClusterSelector should have a comment starting with 'clusterSelector '
/cluster-api/internal/apis/core/exp/addons/v1alpha4/clusterresourceset_types.go:128:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha4/clusterresourceset_types.go:129:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha4/clusterresourceset_types.go:140:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha4/clusterresourcesetbinding_types.go:116:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/exp/addons/v1alpha4/clusterresourcesetbinding_types.go:137:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:40:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:47:2: Strategy should have a comment starting with 'strategy '
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:52:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:82:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:86:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:90:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:224:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:225:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/exp/v1alpha3/machinepool_types.go:246:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:40:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:47:2: MinReadySeconds should have a comment starting with 'minReadySeconds '
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:77:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:81:2: AvailableReplicas should have a comment starting with 'availableReplicas '
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:85:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:220:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:221:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/core/exp/v1alpha4/machinepool_types.go:242:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/bootstrap/kubeadm/types/upstreamv1beta2/types.go:136:2: ClusterName should have a comment starting with 'clusterName '
/cluster-api/bootstrap/kubeadm/types/upstreamv1beta3/types.go:133:2: ClusterName should have a comment starting with 'clusterName '
/cluster-api/bootstrap/kubeadm/types/upstreamv1beta4/types.go:145:2: ClusterName should have a comment starting with 'clusterName '
/cluster-api/bootstrap/kubeadm/types/upstreamv1beta4/types.go:527:2: Name should have a comment starting with 'name ' (missing)
/cluster-api/bootstrap/kubeadm/types/upstreamv1beta4/types.go:528:2: Value should have a comment starting with 'value ' (missing)
/cluster-api/bootstrap/kubeadm/types/upstreamv1beta1/types.go:124:2: ClusterName should have a comment starting with 'clusterName '
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3/kubeadmconfig_types.go:147:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3/kubeadmconfig_types.go:148:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3/kubeadmconfig_types.go:169:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3/kubeadmconfigtemplate_types.go:25:2: Template should have a comment starting with 'template ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3/kubeadmconfigtemplate_types.go:30:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3/kubeadmconfigtemplate_types.go:45:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha3/kubeadmconfigtemplate_types.go:56:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadm_types.go:126:2: ClusterName should have a comment starting with 'clusterName '
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadmconfig_types.go:140:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadmconfig_types.go:141:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadmconfig_types.go:162:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadmconfigtemplate_types.go:25:2: Template should have a comment starting with 'template ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadmconfigtemplate_types.go:30:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadmconfigtemplate_types.go:46:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/bootstrap/kubeadm/v1alpha4/kubeadmconfigtemplate_types.go:57:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/api/v1alpha3/metadata_type.go:32:2: ReleaseSeries should have a comment starting with 'releaseSeries '
/cluster-api/cmd/clusterctl/api/v1alpha3/provider_type.go:169:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/cmd/version.go:32:2: ClientVersion should have a comment starting with 'clusterctl ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/bootstrap/generic_types.go:24:2: DataSecretName should have a comment starting with 'dataSecretName '
/cluster-api/cmd/clusterctl/internal/test/providers/bootstrap/generic_types.go:33:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/bootstrap/generic_types.go:41:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/bootstrap/generic_types.go:56:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/controlplane/generic_types.go:26:2: InfrastructureRef should have a comment starting with 'infrastructureRef ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/controlplane/generic_types.go:31:2: MachineTemplate should have a comment starting with 'machineTemplate ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/controlplane/generic_types.go:40:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/controlplane/generic_types.go:49:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/external/generic_types.go:36:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/external/generic_types.go:52:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/infrastructure/generic_types.go:35:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/infrastructure/generic_types.go:50:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/infrastructure/generic_types.go:65:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/cmd/clusterctl/internal/test/providers/infrastructure/generic_types.go:80:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:57:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:68:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:69:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:74:2: Foo should have a comment starting with 'foo '
/cluster-api/internal/test/builder/v1beta2_transition.go:80:2: Bar should have a comment starting with 'bar '
/cluster-api/internal/test/builder/v1beta2_transition.go:83:2: Conditions should have a comment starting with 'conditions '
/cluster-api/internal/test/builder/v1beta2_transition.go:102:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:113:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:114:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:119:2: Foo should have a comment starting with 'foo '
/cluster-api/internal/test/builder/v1beta2_transition.go:125:2: Bar should have a comment starting with 'bar '
/cluster-api/internal/test/builder/v1beta2_transition.go:128:2: Conditions should have a comment starting with 'conditions '
/cluster-api/internal/test/builder/v1beta2_transition.go:131:2: V1Beta2 should have a comment starting with 'v1beta2 '
/cluster-api/internal/test/builder/v1beta2_transition.go:138:2: Conditions should have a comment starting with 'conditions '
/cluster-api/internal/test/builder/v1beta2_transition.go:176:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:187:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:188:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:193:2: Foo should have a comment starting with 'foo '
/cluster-api/internal/test/builder/v1beta2_transition.go:199:2: Bar should have a comment starting with 'bar '
/cluster-api/internal/test/builder/v1beta2_transition.go:202:2: Conditions should have a comment starting with 'conditions '
/cluster-api/internal/test/builder/v1beta2_transition.go:208:2: Deprecated should have a comment starting with 'deprecated '
/cluster-api/internal/test/builder/v1beta2_transition.go:215:2: V1Beta1 should have a comment starting with 'v1beta1 '
/cluster-api/internal/test/builder/v1beta2_transition.go:222:2: Conditions should have a comment starting with 'conditions '
/cluster-api/internal/test/builder/v1beta2_transition.go:260:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:271:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:272:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/test/builder/v1beta2_transition.go:277:2: Foo should have a comment starting with 'foo '
/cluster-api/internal/test/builder/v1beta2_transition.go:283:2: Bar should have a comment starting with 'bar '
/cluster-api/internal/test/builder/v1beta2_transition.go:286:2: Conditions should have a comment starting with 'conditions '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:62:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:91:2: RolloutStrategy should have a comment starting with 'rolloutStrategy '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:106:2: RollingUpdate should have a comment starting with 'rollingUpdate '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:114:2: MaxSurge should have a comment starting with 'maxSurge '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:134:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:139:2: UpdatedReplicas should have a comment starting with 'updatedReplicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:144:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:148:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:172:2: FailureMessage should have a comment starting with 'failureMessage '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:207:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:208:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha3/kubeadm_control_plane_types.go:229:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:56:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:80:2: RolloutStrategy should have a comment starting with 'rolloutStrategy '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:90:2: ObjectMeta should have a comment starting with 'metadata '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:115:2: RollingUpdate should have a comment starting with 'rollingUpdate '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:123:2: MaxSurge should have a comment starting with 'maxSurge '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:143:2: Replicas should have a comment starting with 'replicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:153:2: UpdatedReplicas should have a comment starting with 'updatedReplicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:158:2: ReadyReplicas should have a comment starting with 'readyReplicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:162:2: UnavailableReplicas should have a comment starting with 'unavailableReplicas '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:186:2: FailureMessage should have a comment starting with 'failureMessage '
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:222:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:223:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadm_control_plane_types.go:244:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadmcontrolplanetemplate_types.go:25:2: Template should have a comment starting with 'template ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadmcontrolplanetemplate_types.go:41:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadmcontrolplanetemplate_types.go:52:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/internal/apis/controlplane/kubeadm/v1alpha4/kubeadmcontrolplanetemplate_types.go:61:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/ipam/api/v1alpha1/ipaddress_types.go:55:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/ipam/api/v1alpha1/ipaddress_types.go:64:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/exp/ipam/api/v1alpha1/ipaddressclaim_types.go:55:2: Spec should have a comment starting with 'spec ' (missing)
/cluster-api/exp/ipam/api/v1alpha1/ipaddressclaim_types.go:56:2: Status should have a comment starting with 'status ' (missing)
/cluster-api/exp/ipam/api/v1alpha1/ipaddressclaim_types.go:75:2: Items should have a comment starting with 'items ' (missing)
/cluster-api/exp/runtime/catalog/test/catalog_test.go:188:2: First should have a comment starting with 'first ' (missing)
/cluster-api/exp/runtime/catalog/test/catalog_test.go:199:2: First should have a comment starting with 'first ' (missing)
/cluster-api/exp/runtime/catalog/test/catalog_test.go:205:2: First should have a comment starting with 'first ' (missing)
/cluster-api/exp/runtime/catalog/test/catalog_test.go:216:2: First should have a comment starting with 'first ' (missing)

@JoelSpeed
Copy link
Contributor

We need to fix Types at least because they'll appear in the descriptions of CRD.

Do they? Are you meaning the definitions on the structs themselves? I didn't think they typically ended up in the generated schema. Especially for things like type aliases where we use a string alias to apply validation to items within a list, or as values for an enum

@tsuzu
Copy link
Contributor

tsuzu commented Oct 14, 2024

Do they? Are you meaning the definitions on the structs themselves? I didn't think they typically ended up in the generated schema. Especially for things like type aliases where we use a string alias to apply validation to items within a list, or as values for an enum

The numbers above are about fields of structs. Type aliases and enums aren't counted.
but I forgot to count the defitinions of structs. I'll fix it.

@sbueringer
Copy link
Member

@neolit123 Are you okay with making this change given comments above?

@neolit123
Copy link
Member

not exactly, but don't mind me as there seems to be agreement for a way forward.

there was a similar proposal coming from SIG docs about component config APIs (e.g. kubelet, kubeadm) but it was denied and the API field comments remained PascalCase.
so now the generator that produces https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/ converts PascalCase to camelCase.

@sbueringer
Copy link
Member

Hm that's actually an interesting alternative. I guess the limitation is that this works only well for the first word of the godoc comment? (not the ones mid-sentence)

@neolit123
Copy link
Member

Hm that's actually an interesting alternative. I guess the limitation is that this works only well for the first word of the godoc comment? (not the ones mid-sentence)

why? it can replace it as a pattern everywhere in a field comment.

@sbueringer
Copy link
Member

sbueringer commented Oct 15, 2024

So basically there is a search and replace over all comments of all fields which replace all field names with camelCase?

There are no accidental / unintentional replacements with this approach?

@neolit123
Copy link
Member

actually checking https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/ seems like the comments are not processed at all so there is the inconsistency of camelCase and PascalCase...so seems like i though it was added as a feature, probably due to prior discussions, but it's not.

the generator is at https://github.com/kubernetes-sigs/reference-docs/tree/91e1ff6d9599f32de2d748e7cd7ff7ffc1be8bb2/genref
owner is #sig-docs

@tsuzu
Copy link
Contributor

tsuzu commented Dec 16, 2024

I'm sorry for the delayed update. I'd like to make it clear what the scope and detailed tasks of this issue are.

  • [out-of-scope] Types from upstream projects
    • kubeadm
  • [out-of-scope] apiVersion/kind/metadata
  • [in scope] Types for custom resources and non-custom resources of /cmd/clusterctl and /version
  • [in scope if possible] Introduce a linter

Considering to introduce a linter, I think that it's better to have the common rule across the repository. so I'm fixing all comments even for non-custom resources.

@JoelSpeed
Copy link
Contributor

JoelSpeed commented Dec 16, 2024

I recently introduced a linter to openshifts API repos that enforces comments start with the serialised version of the name, and it also has an auto fix flag that can easily replace where the first word only differs by casing. Where it does not start with the same word, manual fixes are required.

I'm working on this linter in https://github.com/JoelSpeed/kal, and after discussion at the sig apimachinery call last week, plan to submit a KEP for inclusion of this project as a kubernetes-sigs repo in the future.

Before we write any more linters, perhaps let's try extend this one so we can help the wider community too?

We could try running this linter auto-fixing against Cluster API types if we think that's helpful? WDYT?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. priority/backlog Higher priority than priority/awaiting-more-evidence. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

No branches or pull requests

7 participants