From 1078b1d31bfdd020583a29ad75f2fc18243ffd4b Mon Sep 17 00:00:00 2001 From: Nicholas Thomson Date: Thu, 29 Jul 2021 13:29:42 -0700 Subject: [PATCH 1/3] Expose `SetSDKForStruct` in templates --- pkg/generate/ack/apis.go | 4 +++- pkg/generate/ack/controller.go | 6 ++++++ pkg/generate/code/set_sdk.go | 6 +++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pkg/generate/ack/apis.go b/pkg/generate/ack/apis.go index 59342254..b3df9156 100644 --- a/pkg/generate/ack/apis.go +++ b/pkg/generate/ack/apis.go @@ -84,6 +84,7 @@ func APIs( crdFileName := strcase.ToSnake(crd.Kind) + ".go" crdVars := &templateCRDVars{ metaVars, + m.SDKAPI, crd, } if err = ts.Add(crdFileName, "apis/crd.go.tpl", crdVars); err != nil { @@ -105,5 +106,6 @@ type templateAPIVars struct { // code for a single top-level resource's API definition type templateCRDVars struct { templateset.MetaVars - CRD *ackmodel.CRD + SDKAPI *ackmodel.SDKAPI + CRD *ackmodel.CRD } diff --git a/pkg/generate/ack/controller.go b/pkg/generate/ack/controller.go index 158ada65..efccbcab 100644 --- a/pkg/generate/ack/controller.go +++ b/pkg/generate/ack/controller.go @@ -22,6 +22,7 @@ import ( ackgenconfig "github.com/aws-controllers-k8s/code-generator/pkg/generate/config" "github.com/aws-controllers-k8s/code-generator/pkg/generate/templateset" ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" + awssdkmodel "github.com/aws/aws-sdk-go/private/model/api" ) var ( @@ -93,6 +94,9 @@ var ( "GoCodeSetDeleteInput": func(r *ackmodel.CRD, sourceVarName string, targetVarName string, indentLevel int) string { return code.SetSDK(r.Config(), r, ackmodel.OpTypeDelete, sourceVarName, targetVarName, indentLevel) }, + "GoCodeSetOperationStruct": func(r *ackmodel.CRD, targetFieldName string, targetVarName string, targetShapeRef *awssdkmodel.ShapeRef, sourceFieldPath string, sourceVarName string, indentLevel int) string { + return code.SetSDKForStruct(r.Config(), r, targetFieldName, targetVarName, targetShapeRef, sourceFieldPath, sourceVarName, indentLevel) + }, "GoCodeCompare": func(r *ackmodel.CRD, deltaVarName string, sourceVarName string, targetVarName string, indentLevel int) string { return code.CompareResource(r.Config(), r, deltaVarName, sourceVarName, targetVarName, indentLevel) }, @@ -132,6 +136,7 @@ func Controller( controllerFuncMap["Hook"] = func(r *ackmodel.CRD, hookID string) string { crdVars := &templateCRDVars{ metaVars, + m.SDKAPI, r, } code, err := ResourceHookCode(templateBasePaths, r, hookID, crdVars, controllerFuncMap) @@ -165,6 +170,7 @@ func Controller( tplPath := filepath.Join("pkg/resource", target) crdVars := &templateCRDVars{ metaVars, + m.SDKAPI, crd, } if err = ts.Add(outPath, tplPath, crdVars); err != nil { diff --git a/pkg/generate/code/set_sdk.go b/pkg/generate/code/set_sdk.go index 200eda3f..89c34a3f 100644 --- a/pkg/generate/code/set_sdk.go +++ b/pkg/generate/code/set_sdk.go @@ -739,7 +739,7 @@ func setSDKForContainer( ) string { switch targetShapeRef.Shape.Type { case "structure": - return setSDKForStruct( + return SetSDKForStruct( cfg, r, targetFieldName, targetVarName, @@ -874,9 +874,9 @@ func setSDKForSecret( return out } -// setSDKForStruct returns a string of Go code that sets a target variable +// SetSDKForStruct returns a string of Go code that sets a target variable // value to a source variable when the type of the source variable is a struct. -func setSDKForStruct( +func SetSDKForStruct( cfg *ackgenconfig.Config, r *model.CRD, // The name of the CR field we're outputting for From f8a7d50f82b5ceff0be644d87265a8190b269735 Mon Sep 17 00:00:00 2001 From: Nicholas Thomson Date: Thu, 29 Jul 2021 16:48:45 -0700 Subject: [PATCH 2/3] Expose SetResourceForStruct --- pkg/generate/ack/controller.go | 3 +++ pkg/generate/code/set_resource.go | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/generate/ack/controller.go b/pkg/generate/ack/controller.go index efccbcab..5efc2a09 100644 --- a/pkg/generate/ack/controller.go +++ b/pkg/generate/ack/controller.go @@ -97,6 +97,9 @@ var ( "GoCodeSetOperationStruct": func(r *ackmodel.CRD, targetFieldName string, targetVarName string, targetShapeRef *awssdkmodel.ShapeRef, sourceFieldPath string, sourceVarName string, indentLevel int) string { return code.SetSDKForStruct(r.Config(), r, targetFieldName, targetVarName, targetShapeRef, sourceFieldPath, sourceVarName, indentLevel) }, + "GoCodeSetResourceStruct": func(r *ackmodel.CRD, targetFieldName string, targetVarName string, targetShapeRef *awssdkmodel.ShapeRef, sourceVarName string, sourceShapeRef *awssdkmodel.ShapeRef, indentLevel int) string { + return code.SetResourceForStruct(r.Config(), r, targetFieldName, targetVarName, targetShapeRef, sourceVarName, sourceShapeRef, indentLevel) + }, "GoCodeCompare": func(r *ackmodel.CRD, deltaVarName string, sourceVarName string, targetVarName string, indentLevel int) string { return code.CompareResource(r.Config(), r, deltaVarName, sourceVarName, targetVarName, indentLevel) }, diff --git a/pkg/generate/code/set_resource.go b/pkg/generate/code/set_resource.go index a0ebedbd..3b0f3db1 100644 --- a/pkg/generate/code/set_resource.go +++ b/pkg/generate/code/set_resource.go @@ -990,7 +990,7 @@ func setResourceForContainer( ) string { switch sourceShapeRef.Shape.Type { case "structure": - return setResourceForStruct( + return SetResourceForStruct( cfg, r, targetFieldName, targetVarName, @@ -1031,9 +1031,9 @@ func setResourceForContainer( } } -// setResourceForStruct returns a string of Go code that sets a target variable +// SetResourceForStruct returns a string of Go code that sets a target variable // value to a source variable when the type of the source variable is a struct. -func setResourceForStruct( +func SetResourceForStruct( cfg *ackgenconfig.Config, r *model.CRD, // The name of the CR field we're outputting for From 585a17697d1c469f01f391e88ec80de450a65e9a Mon Sep 17 00:00:00 2001 From: Nicholas Thomson Date: Mon, 2 Aug 2021 09:52:20 -0700 Subject: [PATCH 3/3] Rename template to method names --- pkg/generate/ack/controller.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/generate/ack/controller.go b/pkg/generate/ack/controller.go index 5efc2a09..3c600374 100644 --- a/pkg/generate/ack/controller.go +++ b/pkg/generate/ack/controller.go @@ -94,10 +94,10 @@ var ( "GoCodeSetDeleteInput": func(r *ackmodel.CRD, sourceVarName string, targetVarName string, indentLevel int) string { return code.SetSDK(r.Config(), r, ackmodel.OpTypeDelete, sourceVarName, targetVarName, indentLevel) }, - "GoCodeSetOperationStruct": func(r *ackmodel.CRD, targetFieldName string, targetVarName string, targetShapeRef *awssdkmodel.ShapeRef, sourceFieldPath string, sourceVarName string, indentLevel int) string { + "GoCodeSetSDKForStruct": func(r *ackmodel.CRD, targetFieldName string, targetVarName string, targetShapeRef *awssdkmodel.ShapeRef, sourceFieldPath string, sourceVarName string, indentLevel int) string { return code.SetSDKForStruct(r.Config(), r, targetFieldName, targetVarName, targetShapeRef, sourceFieldPath, sourceVarName, indentLevel) }, - "GoCodeSetResourceStruct": func(r *ackmodel.CRD, targetFieldName string, targetVarName string, targetShapeRef *awssdkmodel.ShapeRef, sourceVarName string, sourceShapeRef *awssdkmodel.ShapeRef, indentLevel int) string { + "GoCodeSetResourceForStruct": func(r *ackmodel.CRD, targetFieldName string, targetVarName string, targetShapeRef *awssdkmodel.ShapeRef, sourceVarName string, sourceShapeRef *awssdkmodel.ShapeRef, indentLevel int) string { return code.SetResourceForStruct(r.Config(), r, targetFieldName, targetVarName, targetShapeRef, sourceVarName, sourceShapeRef, indentLevel) }, "GoCodeCompare": func(r *ackmodel.CRD, deltaVarName string, sourceVarName string, targetVarName string, indentLevel int) string {