Back to Kubebuilder

A Brief Aside: What's the rest of this stuff?

docs/book/src/cronjob-tutorial/other-api-files.md

4.13.11.1 KB
Original Source

A Brief Aside: What's the rest of this stuff?

If you've taken a peek at the rest of the files in the api/v1/ directory, you might have noticed two additional files beyond cronjob_types.go: groupversion_info.go and zz_generated.deepcopy.go.

Neither of these files ever needs to be edited (the former stays the same and the latter is autogenerated), but it's useful to know what's in them.

groupversion_info.go

groupversion_info.go contains common metadata about the group-version:

{{#literatego ./testdata/project/api/v1/groupversion_info.go}}

zz_generated.deepcopy.go

zz_generated.deepcopy.go contains the autogenerated implementation of the aforementioned runtime.Object interface, which marks all of our root types as representing Kinds.

The core of the runtime.Object interface is a deep-copy method, DeepCopyObject.

The object generator in controller-tools also generates two other handy methods for each root type and all its sub-types: DeepCopy and DeepCopyInto.