Skip to content

Commit 2db5bbf

Browse files
committed
feat: Annotate CRDs with Controller version
1 parent 4b0b0e3 commit 2db5bbf

File tree

6 files changed

+23
-8
lines changed

6 files changed

+23
-8
lines changed

cmd/ack-generate/command/apis.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,12 @@ func saveGeneratedMetadata(cmd *cobra.Command, args []string) error {
8585
// generateAPIs generates the Go files for each resource in the AWS service
8686
// API.
8787
func generateAPIs(cmd *cobra.Command, args []string) error {
88-
if len(args) != 1 {
88+
if len(args) < 1 {
8989
return fmt.Errorf("please specify the service alias for the AWS service API to generate")
9090
}
9191
svcAlias := strings.ToLower(args[0])
92+
releaseVersion := strings.ToLower(args[1])
93+
releaseVersion = strings.TrimPrefix(releaseVersion, "v")
9294
if optOutputPath == "" {
9395
optOutputPath = filepath.Join(optServicesDir, svcAlias)
9496
}
@@ -107,7 +109,7 @@ func generateAPIs(cmd *cobra.Command, args []string) error {
107109
if err != nil {
108110
return err
109111
}
110-
ts, err := ackgenerate.APIs(m, optTemplateDirs)
112+
ts, err := ackgenerate.APIs(m, optTemplateDirs, releaseVersion)
111113
if err != nil {
112114
return err
113115
}

cmd/ack-generate/command/controller.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,12 @@ func init() {
4545

4646
// generateController generates the Go files for a service controller
4747
func generateController(cmd *cobra.Command, args []string) error {
48-
if len(args) != 1 {
49-
return fmt.Errorf("please specify the service alias for the AWS service API to generate")
48+
if len(args) < 1 {
49+
return fmt.Errorf("please specify the service alias for the AWS service API to generate: controller")
5050
}
5151
svcAlias := strings.ToLower(args[0])
52+
releaseVersion := strings.ToLower(args[1])
53+
releaseVersion = strings.TrimPrefix(releaseVersion, "v")
5254
if optOutputPath == "" {
5355
optOutputPath = filepath.Join(optServicesDir, svcAlias)
5456
}
@@ -72,7 +74,7 @@ func generateController(cmd *cobra.Command, args []string) error {
7274
if err != nil {
7375
return err
7476
}
75-
ts, err := ackgenerate.Controller(m, optTemplateDirs, serviceAccountName)
77+
ts, err := ackgenerate.Controller(m, optTemplateDirs, serviceAccountName, releaseVersion)
7678
if err != nil {
7779
return err
7880
}

pkg/generate/ack/apis.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ var (
4646
func APIs(
4747
m *ackmodel.Model,
4848
templateBasePaths []string,
49+
releaseVersion string,
4950
) (*templateset.TemplateSet, error) {
5051
enumDefs, err := m.GetEnumDefs()
5152
if err != nil {
@@ -86,6 +87,7 @@ func APIs(
8687
metaVars,
8788
m.SDKAPI,
8889
crd,
90+
releaseVersion,
8991
}
9092
if err = ts.Add(crdFileName, "apis/crd.go.tpl", crdVars); err != nil {
9193
return nil, err
@@ -106,6 +108,7 @@ type templateAPIVars struct {
106108
// code for a single top-level resource's API definition
107109
type templateCRDVars struct {
108110
templateset.MetaVars
109-
SDKAPI *ackmodel.SDKAPI
110-
CRD *ackmodel.CRD
111+
SDKAPI *ackmodel.SDKAPI
112+
CRD *ackmodel.CRD
113+
ReleaseVersion string
111114
}

pkg/generate/ack/controller.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ func Controller(
219219
templateBasePaths []string,
220220
// serviceAccountName is the name of the ServiceAccount used in the Helm chart
221221
serviceAccountName string,
222+
releaseVersion string,
222223
) (*templateset.TemplateSet, error) {
223224
crds, err := m.GetCRDs()
224225
if err != nil {
@@ -234,6 +235,7 @@ func Controller(
234235
metaVars,
235236
m.SDKAPI,
236237
r,
238+
releaseVersion,
237239
}
238240
code, err := ResourceHookCode(templateBasePaths, r, hookID, crdVars, controllerFuncMap)
239241
if err != nil {
@@ -274,6 +276,7 @@ func Controller(
274276
metaVars,
275277
m.SDKAPI,
276278
crd,
279+
releaseVersion,
277280
}
278281
if err = ts.Add(outPath, tplPath, crdVars); err != nil {
279282
return nil, err

scripts/build-controller.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ if [[ ! -d $SERVICE_CONTROLLER_SOURCE_PATH ]]; then
111111
exit 1
112112
fi
113113

114+
pushd "$SERVICE_CONTROLLER_SOURCE_PATH" 1>/dev/null
115+
RELEASE_VERSION=${RELEASE_VERSION:-$(git describe --tags --abbrev=0 2>/dev/null || echo $NON_RELEASE_VERSION)}
116+
popd 1>/dev/null
117+
114118
BOILERPLATE_TXT_PATH="$ROOT_DIR/templates/boilerplate.txt"
115119
DEFAULT_TEMPLATE_DIRS="$ROOT_DIR/templates"
116120
# If the service controller source repository has a templates/ directory, add
@@ -165,7 +169,7 @@ if [ -z "$ACK_DOCUMENTATION_CONFIG_PATH" ]; then
165169
fi
166170
fi
167171

168-
ag_args=("$SERVICE" -o "$SERVICE_CONTROLLER_SOURCE_PATH" --template-dirs "$TEMPLATE_DIRS")
172+
ag_args=("$SERVICE" "$RELEASE_VERSION" -o "$SERVICE_CONTROLLER_SOURCE_PATH" --template-dirs "$TEMPLATE_DIRS")
169173
if [ -n "$ACK_GENERATE_CACHE_DIR" ]; then
170174
ag_args=("${ag_args[@]}" --cache-dir "$ACK_GENERATE_CACHE_DIR")
171175
fi

templates/apis/crd.go.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ type {{ .CRD.Kind }}Status struct {
5757
// {{ .CRD.Kind }} is the Schema for the {{ .CRD.Plural }} API
5858
// +kubebuilder:object:root=true
5959
// +kubebuilder:subresource:status
60+
// +kubebuilder:metadata:annotations="controller-version={{ .ReleaseVersion }}"
6061
{{- range $column := .CRD.AdditionalPrinterColumns }}
6162
// +kubebuilder:printcolumn:name="{{$column.Name}}",type={{$column.Type}},priority={{$column.Priority}},JSONPath=`{{$column.JSONPath}}`
6263
{{- end }}

0 commit comments

Comments
 (0)