diff --git a/cmd/ack-generate/command/apis.go b/cmd/ack-generate/command/apis.go index 9a7b5dbb..4916d220 100644 --- a/cmd/ack-generate/command/apis.go +++ b/cmd/ack-generate/command/apis.go @@ -21,9 +21,8 @@ import ( "github.com/spf13/cobra" - generate "github.com/aws-controllers-k8s/code-generator/pkg/generate" ackgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/ack" - "github.com/aws-controllers-k8s/code-generator/pkg/model" + ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" "github.com/aws-controllers-k8s/code-generator/pkg/util" ) @@ -94,7 +93,7 @@ func generateAPIs(cmd *cobra.Command, args []string) error { if err := ensureSDKRepo(optCacheDir, optRefreshCache); err != nil { return err } - sdkHelper := model.NewSDKHelper(sdkDir) + sdkHelper := ackmodel.NewSDKHelper(sdkDir) sdkAPI, err := sdkHelper.API(svcAlias) if err != nil { newSvcAlias, err := FallBackFindServiceID(sdkDir, svcAlias) @@ -106,13 +105,13 @@ func generateAPIs(cmd *cobra.Command, args []string) error { return fmt.Errorf("service %s not found", svcAlias) } } - g, err := generate.New( + model, err := ackmodel.New( sdkAPI, optGenVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig, ) if err != nil { return err } - ts, err := ackgenerate.APIs(g, optTemplateDirs) + ts, err := ackgenerate.APIs(model, optTemplateDirs) if err != nil { return err } diff --git a/cmd/ack-generate/command/controller.go b/cmd/ack-generate/command/controller.go index 513de487..016c98a5 100644 --- a/cmd/ack-generate/command/controller.go +++ b/cmd/ack-generate/command/controller.go @@ -26,7 +26,6 @@ import ( "github.com/spf13/cobra" k8sversion "k8s.io/apimachinery/pkg/version" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" ackgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/ack" ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" ) @@ -76,13 +75,13 @@ func generateController(cmd *cobra.Command, args []string) error { if err != nil { return err } - g, err := generate.New( + m, err := ackmodel.New( sdkAPI, latestAPIVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig, ) if err != nil { return err } - ts, err := ackgenerate.Controller(g, optTemplateDirs) + ts, err := ackgenerate.Controller(m, optTemplateDirs) if err != nil { return err } diff --git a/cmd/ack-generate/command/crossplane.go b/cmd/ack-generate/command/crossplane.go index 63316f01..f1f5131c 100644 --- a/cmd/ack-generate/command/crossplane.go +++ b/cmd/ack-generate/command/crossplane.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" cpgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/crossplane" "github.com/aws-controllers-k8s/code-generator/pkg/model" + ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" ) // crossplaneCmd is the command that generates Crossplane API types @@ -74,14 +74,14 @@ func generateCrossplane(_ *cobra.Command, args []string) error { if os.IsNotExist(err) { cfgPath = "" } - g, err := generate.New( + m, err := ackmodel.New( sdkAPI, optGenVersion, cfgPath, cpgenerate.DefaultConfig, ) if err != nil { return err } - ts, err := cpgenerate.Crossplane(g, optTemplateDirs) + ts, err := cpgenerate.Crossplane(m, optTemplateDirs) if err != nil { return err } diff --git a/cmd/ack-generate/command/olm.go b/cmd/ack-generate/command/olm.go index c871276b..56322f2b 100644 --- a/cmd/ack-generate/command/olm.go +++ b/cmd/ack-generate/command/olm.go @@ -22,7 +22,6 @@ import ( "github.com/ghodss/yaml" "github.com/spf13/cobra" - generate "github.com/aws-controllers-k8s/code-generator/pkg/generate" ackgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/ack" olmgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/olm" ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" @@ -101,7 +100,7 @@ func generateOLMAssets(cmd *cobra.Command, args []string) error { if err != nil { return err } - g, err := generate.New( + m, err := ackmodel.New( sdkAPI, latestAPIVersion, optGeneratorConfigPath, ackgenerate.DefaultConfig, ) if err != nil { @@ -138,7 +137,7 @@ func generateOLMAssets(cmd *cobra.Command, args []string) error { } // generate templates - ts, err := olmgenerate.BundleAssets(g, commonMeta, svcConf, version, optTemplateDirs) + ts, err := olmgenerate.BundleAssets(m, commonMeta, svcConf, version, optTemplateDirs) if err != nil { return err } diff --git a/cmd/ack-generate/command/release.go b/cmd/ack-generate/command/release.go index bde6069b..12609bd0 100644 --- a/cmd/ack-generate/command/release.go +++ b/cmd/ack-generate/command/release.go @@ -21,7 +21,6 @@ import ( "github.com/spf13/cobra" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" ackgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/ack" ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" ) @@ -80,14 +79,14 @@ func generateRelease(cmd *cobra.Command, args []string) error { return fmt.Errorf("service %s not found", svcAlias) } } - g, err := generate.New( + m, err := ackmodel.New( sdkAPI, "", optGeneratorConfigPath, ackgenerate.DefaultConfig, ) if err != nil { return err } ts, err := ackgenerate.Release( - g, optTemplateDirs, + m, optTemplateDirs, releaseVersion, optImageRepository, optServiceAccountName, ) if err != nil { diff --git a/pkg/generate/ack/apis.go b/pkg/generate/ack/apis.go index 765a3efc..59342254 100644 --- a/pkg/generate/ack/apis.go +++ b/pkg/generate/ack/apis.go @@ -18,7 +18,6 @@ import ( "strings" ttpl "text/template" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" "github.com/aws-controllers-k8s/code-generator/pkg/generate/templateset" ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" "github.com/iancoleman/strcase" @@ -45,18 +44,18 @@ var ( // APIs returns a pointer to a TemplateSet containing all the templates for // generating ACK service controller's apis/ contents func APIs( - g *generate.Generator, + m *ackmodel.Model, templateBasePaths []string, ) (*templateset.TemplateSet, error) { - enumDefs, err := g.GetEnumDefs() + enumDefs, err := m.GetEnumDefs() if err != nil { return nil, err } - typeDefs, err := g.GetTypeDefs() + typeDefs, err := m.GetTypeDefs() if err != nil { return nil, err } - crds, err := g.GetCRDs() + crds, err := m.GetCRDs() if err != nil { return nil, err } @@ -68,7 +67,7 @@ func APIs( apisFuncMap, ) - metaVars := g.MetaVars() + metaVars := m.MetaVars() apiVars := &templateAPIVars{ metaVars, enumDefs, diff --git a/pkg/generate/ack/controller.go b/pkg/generate/ack/controller.go index 90d3c2b2..823105e2 100644 --- a/pkg/generate/ack/controller.go +++ b/pkg/generate/ack/controller.go @@ -18,7 +18,6 @@ import ( "strings" ttpl "text/template" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" "github.com/aws-controllers-k8s/code-generator/pkg/generate/code" ackgenconfig "github.com/aws-controllers-k8s/code-generator/pkg/generate/config" "github.com/aws-controllers-k8s/code-generator/pkg/generate/templateset" @@ -118,15 +117,15 @@ var ( // Controller returns a pointer to a TemplateSet containing all the templates // for generating ACK service controller implementations func Controller( - g *generate.Generator, + m *ackmodel.Model, templateBasePaths []string, ) (*templateset.TemplateSet, error) { - crds, err := g.GetCRDs() + crds, err := m.GetCRDs() if err != nil { return nil, err } - metaVars := g.MetaVars() + metaVars := m.MetaVars() // Hook code can reference a template path, and we can look up the template // in any of our base paths... @@ -176,7 +175,7 @@ func Controller( configVars := &templateConfigVars{ metaVars, - g.GetConfig(), + m.GetConfig(), } if err = ts.Add("pkg/resource/registry.go", "pkg/resource/registry.go.tpl", configVars); err != nil { return nil, err diff --git a/pkg/generate/ack/hook_test.go b/pkg/generate/ack/hook_test.go index 9b42ce27..1aa02fb3 100644 --- a/pkg/generate/ack/hook_test.go +++ b/pkg/generate/ack/hook_test.go @@ -31,7 +31,7 @@ func TestResourceHookCodeInline(t *testing.T) { basePaths := []string{} hookID := "sdk_update_pre_build_request" - g := testutil.NewGeneratorForService(t, "mq") + g := testutil.NewModelForService(t, "mq") crd := testutil.GetCRDByName(t, g, "Broker") require.NotNil(crd) @@ -52,7 +52,7 @@ func TestResourceHookCodeTemplatePath(t *testing.T) { } hookID := "sdk_delete_pre_build_request" - g := testutil.NewGeneratorForService(t, "mq") + g := testutil.NewModelForService(t, "mq") crd := testutil.GetCRDByName(t, g, "Broker") require.NotNil(crd) diff --git a/pkg/generate/ack/release.go b/pkg/generate/ack/release.go index 8725a14f..34ea0606 100644 --- a/pkg/generate/ack/release.go +++ b/pkg/generate/ack/release.go @@ -17,8 +17,8 @@ import ( "strings" ttpl "text/template" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" "github.com/aws-controllers-k8s/code-generator/pkg/generate/templateset" + ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" ) var ( @@ -47,7 +47,7 @@ var ( // Release returns a pointer to a TemplateSet containing all the templates for // generating an ACK service controller release (Helm artifacts, etc) func Release( - g *generate.Generator, + m *ackmodel.Model, templateBasePaths []string, // releaseVersion is the SemVer string describing the release that the Helm // chart will install @@ -66,7 +66,7 @@ func Release( releaseFuncMap, ) - metaVars := g.MetaVars() + metaVars := m.MetaVars() releaseVars := &templateReleaseVars{ metaVars, releaseVersion, diff --git a/pkg/generate/code/check_test.go b/pkg/generate/code/check_test.go index 85a19ff3..3e5936f6 100644 --- a/pkg/generate/code/check_test.go +++ b/pkg/generate/code/check_test.go @@ -29,7 +29,7 @@ func TestCheckRequiredFields_Attributes_ARNField(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sns") + g := testutil.NewModelForService(t, "sns") crd := testutil.GetCRDByName(t, g, "Topic") require.NotNil(crd) @@ -57,7 +57,7 @@ func TestCheckRequiredFields_Attributes_StatusField(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sqs") + g := testutil.NewModelForService(t, "sqs") crd := testutil.GetCRDByName(t, g, "Queue") require.NotNil(crd) @@ -78,7 +78,7 @@ func TestCheckRequiredFields_Attributes_StatusAndSpecField(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") crd := testutil.GetCRDByName(t, g, "Route") require.NotNil(crd) @@ -99,7 +99,7 @@ func TestCheckRequiredFields_RenamedSpecField(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "eks") + g := testutil.NewModelForService(t, "eks") crd := testutil.GetCRDByName(t, g, "FargateProfile") require.NotNil(crd) diff --git a/pkg/generate/code/compare_test.go b/pkg/generate/code/compare_test.go index 4433060a..c9b7918a 100644 --- a/pkg/generate/code/compare_test.go +++ b/pkg/generate/code/compare_test.go @@ -27,7 +27,7 @@ func TestCompareResource_S3_Bucket(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "s3") + g := testutil.NewModelForService(t, "s3") crd := testutil.GetCRDByName(t, g, "Bucket") require.NotNil(crd) @@ -108,7 +108,7 @@ func TestCompareResource_Lambda_CodeSigningConfig(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "lambda") + g := testutil.NewModelForService(t, "lambda") crd := testutil.GetCRDByName(t, g, "CodeSigningConfig") require.NotNil(crd) diff --git a/pkg/generate/code/set_resource_test.go b/pkg/generate/code/set_resource_test.go index 398717f2..4911d781 100644 --- a/pkg/generate/code/set_resource_test.go +++ b/pkg/generate/code/set_resource_test.go @@ -30,7 +30,7 @@ func TestSetResource_APIGWv2_Route_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") crd := testutil.GetCRDByName(t, g, "Route") require.NotNil(crd) @@ -57,7 +57,7 @@ func TestSetResource_APIGWv2_Route_ReadOne(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") crd := testutil.GetCRDByName(t, g, "Route") require.NotNil(crd) @@ -159,7 +159,7 @@ func TestSetResource_DynamoDB_Backup_ReadOne(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "dynamodb") + g := testutil.NewModelForService(t, "dynamodb") crd := testutil.GetCRDByName(t, g, "Backup") require.NotNil(crd) @@ -213,7 +213,7 @@ func TestSetResource_CodeDeploy_Deployment_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "codedeploy") + g := testutil.NewModelForService(t, "codedeploy") crd := testutil.GetCRDByName(t, g, "Deployment") require.NotNil(crd) @@ -239,7 +239,7 @@ func TestSetResource_DynamoDB_Table_ReadOne(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "dynamodb") + g := testutil.NewModelForService(t, "dynamodb") crd := testutil.GetCRDByName(t, g, "Table") require.NotNil(crd) @@ -587,7 +587,7 @@ func TestSetResource_EC2_LaunchTemplate_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "ec2") + g := testutil.NewModelForService(t, "ec2") crd := testutil.GetCRDByName(t, g, "LaunchTemplate") require.NotNil(crd) @@ -648,7 +648,7 @@ func TestSetResource_ECR_Repository_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "ecr") + g := testutil.NewModelForService(t, "ecr") crd := testutil.GetCRDByName(t, g, "Repository") require.NotNil(crd) @@ -690,7 +690,7 @@ func TestSetResource_ECR_Repository_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "ecr") + g := testutil.NewModelForService(t, "ecr") crd := testutil.GetCRDByName(t, g, "Repository") require.NotNil(crd) @@ -766,7 +766,7 @@ func TestSetResource_Elasticache_ReplicationGroup_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) @@ -1031,7 +1031,7 @@ func TestSetResource_Elasticache_ReplicationGroup_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) @@ -1387,7 +1387,7 @@ func TestSetResource_RDS_DBInstance_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "rds") + g := testutil.NewModelForService(t, "rds") crd := testutil.GetCRDByName(t, g, "DBInstance") require.NotNil(crd) @@ -1770,7 +1770,7 @@ func TestSetResource_RDS_DBInstance_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "rds") + g := testutil.NewModelForService(t, "rds") crd := testutil.GetCRDByName(t, g, "DBInstance") require.NotNil(crd) @@ -2335,7 +2335,7 @@ func TestSetResource_S3_Bucket_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "s3") + g := testutil.NewModelForService(t, "s3") crd := testutil.GetCRDByName(t, g, "Bucket") require.NotNil(crd) @@ -2357,7 +2357,7 @@ func TestSetResource_S3_Bucket_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "s3") + g := testutil.NewModelForService(t, "s3") crd := testutil.GetCRDByName(t, g, "Bucket") require.NotNil(crd) @@ -2392,7 +2392,7 @@ func TestSetResource_SNS_Topic_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sns") + g := testutil.NewModelForService(t, "sns") crd := testutil.GetCRDByName(t, g, "Topic") require.NotNil(crd) @@ -2422,7 +2422,7 @@ func TestSetResource_SNS_Topic_GetAttributes(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sns") + g := testutil.NewModelForService(t, "sns") crd := testutil.GetCRDByName(t, g, "Topic") require.NotNil(crd) @@ -2452,7 +2452,7 @@ func TestSetResource_SQS_Queue_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sqs") + g := testutil.NewModelForService(t, "sqs") crd := testutil.GetCRDByName(t, g, "Queue") require.NotNil(crd) @@ -2476,7 +2476,7 @@ func TestSetResource_SQS_Queue_GetAttributes(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sqs") + g := testutil.NewModelForService(t, "sqs") crd := testutil.GetCRDByName(t, g, "Queue") require.NotNil(crd) @@ -2505,7 +2505,7 @@ func TestSetResource_RDS_DBSubnetGroup_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "rds") + g := testutil.NewModelForService(t, "rds") crd := testutil.GetCRDByName(t, g, "DBSubnetGroup") require.NotNil(crd) @@ -2591,7 +2591,7 @@ func TestGetWrapperOutputShape(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "dynamodb") + g := testutil.NewModelForService(t, "dynamodb") crd := testutil.GetCRDByName(t, g, "Backup") require.NotNil(crd) @@ -2650,7 +2650,7 @@ func TestSetResource_MQ_Broker_SetResourceIdentifiers(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "mq") + g := testutil.NewModelForService(t, "mq") crd := testutil.GetCRDByName(t, g, "Broker") require.NotNil(crd) @@ -2672,7 +2672,7 @@ func TestSetResource_RDS_DBInstances_SetResourceIdentifiers(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "rds") + g := testutil.NewModelForService(t, "rds") crd := testutil.GetCRDByName(t, g, "DBInstance") require.NotNil(crd) @@ -2694,7 +2694,7 @@ func TestSetResource_RDS_DBSubnetGroup_SetResourceIdentifiers(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "rds") + g := testutil.NewModelForService(t, "rds") crd := testutil.GetCRDByName(t, g, "DBSubnetGroup") require.NotNil(crd) @@ -2718,7 +2718,7 @@ func TestSetResource_APIGWV2_ApiMapping_SetResourceIdentifiers(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") crd := testutil.GetCRDByName(t, g, "ApiMapping") require.NotNil(crd) diff --git a/pkg/generate/code/set_sdk_test.go b/pkg/generate/code/set_sdk_test.go index 862564af..601ccd1b 100644 --- a/pkg/generate/code/set_sdk_test.go +++ b/pkg/generate/code/set_sdk_test.go @@ -28,7 +28,7 @@ func TestSetSDK_APIGWv2_Route_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") crd := testutil.GetCRDByName(t, g, "Route") require.NotNil(crd) @@ -101,7 +101,7 @@ func TestSetSDK_DynamoDB_Table_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "dynamodb") + g := testutil.NewModelForService(t, "dynamodb") crd := testutil.GetCRDByName(t, g, "Table") require.NotNil(crd) @@ -291,7 +291,7 @@ func TestSetSDK_EC2_LaunchTemplate_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "ec2") + g := testutil.NewModelForService(t, "ec2") crd := testutil.GetCRDByName(t, g, "LaunchTemplate") require.NotNil(crd) @@ -695,7 +695,7 @@ func TestSetSDK_ECR_Repository_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "ecr") + g := testutil.NewModelForService(t, "ecr") crd := testutil.GetCRDByName(t, g, "Repository") require.NotNil(crd) @@ -743,7 +743,7 @@ func TestSetSDK_Elasticache_ReplicationGroup_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) @@ -976,7 +976,7 @@ func TestSetSDK_Elasticache_ReplicationGroup_ReadMany(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) @@ -1000,7 +1000,7 @@ func TestSetSDK_Elasticache_ReplicationGroup_Update_Override_Values(t *testing.T assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crd := testutil.GetCRDByName(t, g, "ReplicationGroup") require.NotNil(crd) @@ -1113,7 +1113,7 @@ func TestSetSDK_Elasticache_User_Create_Override_Values(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crd := testutil.GetCRDByName(t, g, "User") require.NotNil(crd) @@ -1156,7 +1156,7 @@ func TestSetSDK_RDS_DBInstance_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "rds") + g := testutil.NewModelForService(t, "rds") crd := testutil.GetCRDByName(t, g, "DBInstance") require.NotNil(crd) @@ -1351,7 +1351,7 @@ func TestSetSDK_S3_Bucket_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "s3") + g := testutil.NewModelForService(t, "s3") crd := testutil.GetCRDByName(t, g, "Bucket") require.NotNil(crd) @@ -1399,7 +1399,7 @@ func TestSetSDK_S3_Bucket_Delete(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "s3") + g := testutil.NewModelForService(t, "s3") crd := testutil.GetCRDByName(t, g, "Bucket") require.NotNil(crd) @@ -1419,7 +1419,7 @@ func TestSetSDK_SNS_Topic_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sns") + g := testutil.NewModelForService(t, "sns") crd := testutil.GetCRDByName(t, g, "Topic") require.NotNil(crd) @@ -1471,7 +1471,7 @@ func TestSetSDK_SNS_Topic_GetAttributes(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sns") + g := testutil.NewModelForService(t, "sns") crd := testutil.GetCRDByName(t, g, "Topic") require.NotNil(crd) @@ -1497,7 +1497,7 @@ func TestSetSDK_SQS_Queue_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sqs") + g := testutil.NewModelForService(t, "sqs") crd := testutil.GetCRDByName(t, g, "Queue") require.NotNil(crd) @@ -1561,7 +1561,7 @@ func TestSetSDK_SQS_Queue_GetAttributes(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sqs") + g := testutil.NewModelForService(t, "sqs") crd := testutil.GetCRDByName(t, g, "Queue") require.NotNil(crd) @@ -1591,7 +1591,7 @@ func TestSetSDK_MQ_Broker_Create(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "mq") + g := testutil.NewModelForService(t, "mq") crd := testutil.GetCRDByName(t, g, "Broker") require.NotNil(crd) diff --git a/pkg/generate/crossplane/crossplane.go b/pkg/generate/crossplane/crossplane.go index e0ea81ab..206b7316 100644 --- a/pkg/generate/crossplane/crossplane.go +++ b/pkg/generate/crossplane/crossplane.go @@ -18,7 +18,6 @@ import ( "strings" ttpl "text/template" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" "github.com/aws-controllers-k8s/code-generator/pkg/generate/code" "github.com/aws-controllers-k8s/code-generator/pkg/generate/templateset" ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" @@ -112,18 +111,18 @@ type templateCRDVars struct { // Crossplane returns a pointer to a TemplateSet containing all the templates for // generating Crossplane API types and controller code for an AWS service API func Crossplane( - g *generate.Generator, + m *ackmodel.Model, templateBasePaths []string, ) (*templateset.TemplateSet, error) { - enumDefs, err := g.GetEnumDefs() + enumDefs, err := m.GetEnumDefs() if err != nil { return nil, err } - typeDefs, err := g.GetTypeDefs() + typeDefs, err := m.GetTypeDefs() if err != nil { return nil, err } - crds, err := g.GetCRDs() + crds, err := m.GetCRDs() if err != nil { return nil, err } @@ -135,7 +134,7 @@ func Crossplane( funcMap, ) - metaVars := g.MetaVars() + metaVars := m.MetaVars() // First add all the CRDs and API types apiVars := &templateAPIVars{ diff --git a/pkg/generate/error.go b/pkg/generate/error.go deleted file mode 100644 index 81f41fa4..00000000 --- a/pkg/generate/error.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"). You may -// not use this file except in compliance with the License. A copy of the -// License is located at -// -// http://aws.amazon.com/apache2.0/ -// -// or in the "license" file accompanying this file. This file is distributed -// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -// express or implied. See the License for the specific language governing -// permissions and limitations under the License. - -package generate - -import "errors" - -var ( - // ErrNilShapePointer indicates an unexpected nil Shape pointer - ErrNilShapePointer = errors.New("found nil Shape pointer") -) diff --git a/pkg/generate/olm/olm.go b/pkg/generate/olm/olm.go index c2c3d953..c7cc9cae 100644 --- a/pkg/generate/olm/olm.go +++ b/pkg/generate/olm/olm.go @@ -6,7 +6,6 @@ import ( ttpl "text/template" "time" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" "github.com/aws-controllers-k8s/code-generator/pkg/generate/templateset" ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" opsv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1" @@ -39,7 +38,7 @@ var ( // BundleAssets generates the assets necessary to generate // a bundle used for deploying a service via OLM. func BundleAssets( - g *generate.Generator, + m *ackmodel.Model, commonMeta CommonMetadata, serviceConfig ServiceConfig, vers string, @@ -53,7 +52,7 @@ func BundleAssets( csvFuncMap, ) - crds, err := g.GetCRDs() + crds, err := m.GetCRDs() if err != nil { return nil, err } @@ -61,7 +60,7 @@ func BundleAssets( olmVars := templateOLMVars{ vers, time.Now().Format("2006-01-02 15:04:05"), - g.MetaVars(), + m.MetaVars(), commonMeta, serviceConfig, crds, @@ -80,7 +79,7 @@ func BundleAssets( csvBaseOutPath := fmt.Sprintf( "config/manifests/bases/ack-%s-controller.clusterserviceversion.yaml", - g.MetaVars().ServiceIDClean) + m.MetaVars().ServiceIDClean) if err := ts.Add(csvBaseOutPath, "config/manifests/bases/clusterserviceversion.yaml.tpl", olmVars); err != nil { return nil, err } diff --git a/pkg/generate/enum_def_test.go b/pkg/model/enum_def_test.go similarity index 96% rename from pkg/generate/enum_def_test.go rename to pkg/model/enum_def_test.go index f366ff4c..6460ffa8 100644 --- a/pkg/generate/enum_def_test.go +++ b/pkg/model/enum_def_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "sort" @@ -95,7 +95,7 @@ func TestEnumDefs(t *testing.T) { }, } for _, test := range tests { - g := testutil.NewGeneratorForService(t, test.service) + g := testutil.NewModelForService(t, test.service) edefs, err := g.GetEnumDefs() require.Nil(err) diff --git a/pkg/generate/generator.go b/pkg/model/model.go similarity index 73% rename from pkg/generate/generator.go rename to pkg/model/model.go index 3e977cbd..5f956d20 100644 --- a/pkg/generate/generator.go +++ b/pkg/model/model.go @@ -11,28 +11,33 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate +package model import ( + "errors" "fmt" "sort" "strings" 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" "github.com/aws-controllers-k8s/code-generator/pkg/names" "github.com/aws-controllers-k8s/code-generator/pkg/util" ) -// Generator contains the ACK model for the generator to process and apply -// templates against -type Generator struct { - SDKAPI *ackmodel.SDKAPI +var ( + // ErrNilShapePointer indicates an unexpected nil Shape pointer + ErrNilShapePointer = errors.New("found nil Shape pointer") +) + +// Model contains the ACK model for the generator to process and apply +// templates against. +type Model struct { + SDKAPI *SDKAPI serviceAlias string apiVersion string - crds []*ackmodel.CRD - typeDefs []*ackmodel.TypeDef + crds []*CRD + typeDefs []*TypeDef typeImports map[string]string typeRenames map[string]string // Instructions to the code generator how to handle the API and its @@ -42,23 +47,23 @@ type Generator struct { // MetaVars returns a MetaVars struct populated with metadata about the AWS // service API -func (g *Generator) MetaVars() templateset.MetaVars { +func (m *Model) MetaVars() templateset.MetaVars { return templateset.MetaVars{ - ServiceAlias: g.serviceAlias, - ServiceID: g.SDKAPI.ServiceID(), - ServiceIDClean: g.SDKAPI.ServiceIDClean(), - APIGroup: g.SDKAPI.APIGroup(), - APIVersion: g.apiVersion, - SDKAPIInterfaceTypeName: g.SDKAPI.SDKAPIInterfaceTypeName(), - CRDNames: g.crdNames(), + ServiceAlias: m.serviceAlias, + ServiceID: m.SDKAPI.ServiceID(), + ServiceIDClean: m.SDKAPI.ServiceIDClean(), + APIGroup: m.SDKAPI.APIGroup(), + APIVersion: m.apiVersion, + SDKAPIInterfaceTypeName: m.SDKAPI.SDKAPIInterfaceTypeName(), + CRDNames: m.crdNames(), } } // crdNames returns all crd names lowercased and in plural -func (g *Generator) crdNames() []string { +func (m *Model) crdNames() []string { var crdConfigs []string - crds, _ := g.GetCRDs() + crds, _ := m.GetCRDs() for _, crd := range crds { crdConfigs = append(crdConfigs, strings.ToLower(crd.Plural)) } @@ -66,30 +71,30 @@ func (g *Generator) crdNames() []string { return crdConfigs } -// GetCRDs returns a slice of `ackmodel.CRD` structs that describe the +// GetCRDs returns a slice of `CRD` structs that describe the // top-level resources discovered by the code generator for an AWS service API -func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { - if g.crds != nil { - return g.crds, nil +func (m *Model) GetCRDs() ([]*CRD, error) { + if m.crds != nil { + return m.crds, nil } - crds := []*ackmodel.CRD{} + crds := []*CRD{} - opMap := g.SDKAPI.GetOperationMap(g.cfg) + opMap := m.SDKAPI.GetOperationMap(m.cfg) - createOps := (*opMap)[ackmodel.OpTypeCreate] - readOneOps := (*opMap)[ackmodel.OpTypeGet] - readManyOps := (*opMap)[ackmodel.OpTypeList] - updateOps := (*opMap)[ackmodel.OpTypeUpdate] - deleteOps := (*opMap)[ackmodel.OpTypeDelete] - getAttributesOps := (*opMap)[ackmodel.OpTypeGetAttributes] - setAttributesOps := (*opMap)[ackmodel.OpTypeSetAttributes] + createOps := (*opMap)[OpTypeCreate] + readOneOps := (*opMap)[OpTypeGet] + readManyOps := (*opMap)[OpTypeList] + updateOps := (*opMap)[OpTypeUpdate] + deleteOps := (*opMap)[OpTypeDelete] + getAttributesOps := (*opMap)[OpTypeGetAttributes] + setAttributesOps := (*opMap)[OpTypeSetAttributes] for crdName, createOp := range createOps { - if g.cfg.IsIgnoredResource(crdName) { + if m.cfg.IsIgnoredResource(crdName) { continue } crdNames := names.New(crdName) - ops := ackmodel.Ops{ + ops := Ops{ Create: createOps[crdName], ReadOne: readOneOps[crdName], ReadMany: readManyOps[crdName], @@ -98,8 +103,8 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { GetAttributes: getAttributesOps[crdName], SetAttributes: setAttributesOps[crdName], } - g.RemoveIgnoredOperations(&ops) - crd := ackmodel.NewCRD(g.SDKAPI, g.cfg, crdNames, ops) + m.RemoveIgnoredOperations(&ops) + crd := NewCRD(m.SDKAPI, m.cfg, crdNames, ops) // OK, begin to gather the CRDFields that will go into the Spec struct. // These fields are those members of the Create operation's Input @@ -117,7 +122,7 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { ) memberNames := names.New(renamedName) memberNames.ModelOriginal = memberName - if memberName == "Attributes" && g.cfg.UnpacksAttributesMap(crdName) { + if memberName == "Attributes" && m.cfg.UnpacksAttributesMap(crdName) { crd.UnpackAttributes() continue } @@ -126,7 +131,7 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { // Now any additional Spec fields that are required from other API // operations. - for targetFieldName, fieldConfig := range g.cfg.ResourceFields(crdName) { + for targetFieldName, fieldConfig := range m.cfg.ResourceFields(crdName) { if fieldConfig.IsReadOnly { // It's a Status field... continue @@ -136,7 +141,7 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { continue } from := fieldConfig.From - memberShapeRef, found := g.SDKAPI.GetInputShapeRef( + memberShapeRef, found := m.SDKAPI.GetInputShapeRef( from.Operation, from.Path, ) if found { @@ -182,7 +187,7 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { // the Status struct continue } - if memberName == "Attributes" && g.cfg.UnpacksAttributesMap(crdName) { + if memberName == "Attributes" && m.cfg.UnpacksAttributesMap(crdName) { continue } if crd.IsPrimaryARNField(memberName) { @@ -195,7 +200,7 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { // Now add the additional Status fields that are required from other // API operations. - for targetFieldName, fieldConfig := range g.cfg.ResourceFields(crdName) { + for targetFieldName, fieldConfig := range m.cfg.ResourceFields(crdName) { if !fieldConfig.IsReadOnly { // It's a Spec field... continue @@ -205,7 +210,7 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { continue } from := fieldConfig.From - memberShapeRef, found := g.SDKAPI.GetOutputShapeRef( + memberShapeRef, found := m.SDKAPI.GetOutputShapeRef( from.Operation, from.Path, ) if found { @@ -229,42 +234,42 @@ func (g *Generator) GetCRDs() ([]*ackmodel.CRD, error) { // This is the place that we build out the CRD.Fields map with // `pkg/model.Field` objects that represent the non-top-level Spec and // Status fields. - g.processNestedFields(crds) - g.crds = crds + m.processNestedFields(crds) + m.crds = crds return crds, nil } // RemoveIgnoredOperations updates Ops argument by setting those // operations to nil that are configured to be ignored in generator config for // the AWS service -func (g *Generator) RemoveIgnoredOperations(ops *ackmodel.Ops) { - if g.cfg.IsIgnoredOperation(ops.Create) { +func (m *Model) RemoveIgnoredOperations(ops *Ops) { + if m.cfg.IsIgnoredOperation(ops.Create) { ops.Create = nil } - if g.cfg.IsIgnoredOperation(ops.ReadOne) { + if m.cfg.IsIgnoredOperation(ops.ReadOne) { ops.ReadOne = nil } - if g.cfg.IsIgnoredOperation(ops.ReadMany) { + if m.cfg.IsIgnoredOperation(ops.ReadMany) { ops.ReadMany = nil } - if g.cfg.IsIgnoredOperation(ops.Update) { + if m.cfg.IsIgnoredOperation(ops.Update) { ops.Update = nil } - if g.cfg.IsIgnoredOperation(ops.Delete) { + if m.cfg.IsIgnoredOperation(ops.Delete) { ops.Delete = nil } - if g.cfg.IsIgnoredOperation(ops.GetAttributes) { + if m.cfg.IsIgnoredOperation(ops.GetAttributes) { ops.GetAttributes = nil } - if g.cfg.IsIgnoredOperation(ops.SetAttributes) { + if m.cfg.IsIgnoredOperation(ops.SetAttributes) { ops.SetAttributes = nil } } // IsShapeUsedInCRDs returns true if the supplied shape name is a member of amy // CRD's payloads or those payloads sub-member shapes -func (g *Generator) IsShapeUsedInCRDs(shapeName string) bool { - crds, _ := g.GetCRDs() +func (m *Model) IsShapeUsedInCRDs(shapeName string) bool { + crds, _ := m.GetCRDs() for _, crd := range crds { if crd.HasShapeAsMember(shapeName) { return true @@ -273,20 +278,20 @@ func (g *Generator) IsShapeUsedInCRDs(shapeName string) bool { return false } -// GetTypeDefs returns a slice of `ackmodel.TypeDef` pointers -func (g *Generator) GetTypeDefs() ([]*ackmodel.TypeDef, error) { - if g.typeDefs != nil { - return g.typeDefs, nil +// GetTypeDefs returns a slice of `TypeDef` pointers +func (m *Model) GetTypeDefs() ([]*TypeDef, error) { + if m.typeDefs != nil { + return m.typeDefs, nil } - tdefs := []*ackmodel.TypeDef{} + tdefs := []*TypeDef{} // Map, keyed by original Shape GoTypeElem(), with the values being a // renamed type name (due to conflicting names) trenames := map[string]string{} - payloads := g.SDKAPI.GetPayloads() + payloads := m.SDKAPI.GetPayloads() - for shapeName, shape := range g.SDKAPI.API.Shapes { + for shapeName, shape := range m.SDKAPI.API.Shapes { if util.InStrings(shapeName, payloads) { // Payloads are not type defs continue @@ -299,16 +304,16 @@ func (g *Generator) GetTypeDefs() ([]*ackmodel.TypeDef, error) { continue } tdefNames := names.New(shapeName) - if g.SDKAPI.HasConflictingTypeName(shapeName, g.cfg) { - tdefNames.Camel += ackmodel.ConflictingNameSuffix + if m.SDKAPI.HasConflictingTypeName(shapeName, m.cfg) { + tdefNames.Camel += ConflictingNameSuffix trenames[shapeName] = tdefNames.Camel } - attrs := map[string]*ackmodel.Attr{} + attrs := map[string]*Attr{} for memberName, memberRef := range shape.MemberRefs { memberNames := names.New(memberName) memberShape := memberRef.Shape - if !g.IsShapeUsedInCRDs(memberShape.ShapeName) { + if !m.IsShapeUsedInCRDs(memberShape.ShapeName) { continue } // There are shapes that are called things like DBProxyStatus that are @@ -318,8 +323,8 @@ func (g *Generator) GetTypeDefs() ([]*ackmodel.TypeDef, error) { gt := memberShape.GoType() if memberShape.Type == "structure" { typeNames := names.New(memberShape.ShapeName) - if g.SDKAPI.HasConflictingTypeName(memberShape.ShapeName, g.cfg) { - typeNames.Camel += ackmodel.ConflictingNameSuffix + if m.SDKAPI.HasConflictingTypeName(memberShape.ShapeName, m.cfg) { + typeNames.Camel += ConflictingNameSuffix } gt = "*" + typeNames.Camel } else if memberShape.Type == "list" { @@ -328,8 +333,8 @@ func (g *Generator) GetTypeDefs() ([]*ackmodel.TypeDef, error) { if memberShape.MemberRef.Shape.Type == "structure" { elemType := memberShape.MemberRef.Shape.GoTypeElem() typeNames := names.New(elemType) - if g.SDKAPI.HasConflictingTypeName(elemType, g.cfg) { - typeNames.Camel += ackmodel.ConflictingNameSuffix + if m.SDKAPI.HasConflictingTypeName(elemType, m.cfg) { + typeNames.Camel += ConflictingNameSuffix } gt = "[]*" + typeNames.Camel } @@ -339,8 +344,8 @@ func (g *Generator) GetTypeDefs() ([]*ackmodel.TypeDef, error) { if memberShape.ValueRef.Shape.Type == "structure" { valType := memberShape.ValueRef.Shape.GoTypeElem() typeNames := names.New(valType) - if g.SDKAPI.HasConflictingTypeName(valType, g.cfg) { - typeNames.Camel += ackmodel.ConflictingNameSuffix + if m.SDKAPI.HasConflictingTypeName(valType, m.cfg) { + typeNames.Camel += ConflictingNameSuffix } gt = "[]map[string]*" + typeNames.Camel } @@ -349,13 +354,13 @@ func (g *Generator) GetTypeDefs() ([]*ackmodel.TypeDef, error) { // otherwise there is no DeepCopy support gt = "*metav1.Time" } - attrs[memberName] = ackmodel.NewAttr(memberNames, gt, memberShape) + attrs[memberName] = NewAttr(memberNames, gt, memberShape) } if len(attrs) == 0 { // Just ignore these... continue } - tdefs = append(tdefs, &ackmodel.TypeDef{ + tdefs = append(tdefs, &TypeDef{ Shape: shape, Names: tdefNames, Attrs: attrs, @@ -364,19 +369,19 @@ func (g *Generator) GetTypeDefs() ([]*ackmodel.TypeDef, error) { sort.Slice(tdefs, func(i, j int) bool { return tdefs[i].Names.Camel < tdefs[j].Names.Camel }) - g.processNestedFieldTypeDefs(tdefs) - g.typeDefs = tdefs - g.typeRenames = trenames + m.processNestedFieldTypeDefs(tdefs) + m.typeDefs = tdefs + m.typeRenames = trenames return tdefs, nil } // processNestedFieldTypeDefs updates the supplied TypeDef structs' if a nested // field has been configured with a type overriding FieldConfig -- such as // FieldConfig.IsSecret. -func (g *Generator) processNestedFieldTypeDefs( - tdefs []*ackmodel.TypeDef, +func (m *Model) processNestedFieldTypeDefs( + tdefs []*TypeDef, ) { - crds, _ := g.GetCRDs() + crds, _ := m.GetCRDs() for _, crd := range crds { for fieldPath, field := range crd.Fields { if !strings.Contains(fieldPath, ".") { @@ -405,15 +410,15 @@ func (g *Generator) processNestedFieldTypeDefs( } } -// replaceSecretAttrGoType replaces a nested field ackmodel.Attr's GoType with +// replaceSecretAttrGoType replaces a nested field Attr's GoType with // `*ackv1alpha1.SecretKeyReference`. func replaceSecretAttrGoType( - crd *ackmodel.CRD, - field *ackmodel.Field, - tdefs []*ackmodel.TypeDef, + crd *CRD, + field *Field, + tdefs []*TypeDef, ) { fieldPath := field.Path - parentFieldPath := ackmodel.ParentFieldPath(field.Path) + parentFieldPath := ParentFieldPath(field.Path) parentField, ok := crd.Fields[parentFieldPath] if !ok { msg := fmt.Sprintf( @@ -456,7 +461,7 @@ func replaceSecretAttrGoType( } parentFieldShapeName = parentField.ShapeRef.Shape.ValueRef.ShapeName } - var parentTypeDef *ackmodel.TypeDef + var parentTypeDef *TypeDef for _, tdef := range tdefs { if tdef.Names.Original == parentFieldShapeName { parentTypeDef = tdef @@ -491,22 +496,22 @@ func replaceSecretAttrGoType( // nested fields along with that `Field`'s `Config` object that allows us to // determine if the TypeDef associated with that nested field should have its // data type overridden (e.g. for SecretKeyReferences) -func (g *Generator) processNestedFields(crds []*ackmodel.CRD) { +func (m *Model) processNestedFields(crds []*CRD) { for _, crd := range crds { for _, field := range crd.SpecFields { - g.processNestedField(crd, field) + m.processNestedField(crd, field) } for _, field := range crd.StatusFields { - g.processNestedField(crd, field) + m.processNestedField(crd, field) } } } // processNestedField processes any nested fields (non-scalar fields associated // with the Spec and Status objects) -func (g *Generator) processNestedField( - crd *ackmodel.CRD, - field *ackmodel.Field, +func (m *Model) processNestedField( + crd *CRD, + field *Field, ) { if field.ShapeRef == nil && (field.FieldConfig == nil || !field.FieldConfig.IsAttribute) { fmt.Printf( @@ -521,21 +526,21 @@ func (g *Generator) processNestedField( fieldType := fieldShape.Type switch fieldType { case "structure": - g.processNestedStructField(crd, field.Path+".", field) + m.processNestedStructField(crd, field.Path+".", field) case "list": - g.processNestedListField(crd, field.Path+"..", field) + m.processNestedListField(crd, field.Path+"..", field) case "map": - g.processNestedMapField(crd, field.Path+"..", field) + m.processNestedMapField(crd, field.Path+"..", field) } } } // processNestedStructField recurses through the members of a nested field that // is a struct type and adds any Field objects to the supplied CRD. -func (g *Generator) processNestedStructField( - crd *ackmodel.CRD, +func (m *Model) processNestedStructField( + crd *CRD, baseFieldPath string, - baseField *ackmodel.Field, + baseField *Field, ) { fieldConfigs := crd.Config().ResourceFields(crd.Names.Original) baseFieldShape := baseField.ShapeRef.Shape @@ -545,14 +550,14 @@ func (g *Generator) processNestedStructField( memberShapeType := memberShape.Type fieldPath := baseFieldPath + memberNames.Camel fieldConfig := fieldConfigs[fieldPath] - field := ackmodel.NewField(crd, fieldPath, memberNames, memberRef, fieldConfig) + field := NewField(crd, fieldPath, memberNames, memberRef, fieldConfig) switch memberShapeType { case "structure": - g.processNestedStructField(crd, fieldPath+".", field) + m.processNestedStructField(crd, fieldPath+".", field) case "list": - g.processNestedListField(crd, fieldPath+"..", field) + m.processNestedListField(crd, fieldPath+"..", field) case "map": - g.processNestedMapField(crd, fieldPath+"..", field) + m.processNestedMapField(crd, fieldPath+"..", field) } crd.Fields[fieldPath] = field } @@ -561,10 +566,10 @@ func (g *Generator) processNestedStructField( // processNestedListField recurses through the members of a nested field that // is a list type that has a struct element type and adds any Field objects to // the supplied CRD. -func (g *Generator) processNestedListField( - crd *ackmodel.CRD, +func (m *Model) processNestedListField( + crd *CRD, baseFieldPath string, - baseField *ackmodel.Field, + baseField *Field, ) { baseFieldShape := baseField.ShapeRef.Shape elementFieldShape := baseFieldShape.MemberRef.Shape @@ -578,14 +583,14 @@ func (g *Generator) processNestedListField( memberShapeType := memberShape.Type fieldPath := baseFieldPath + memberNames.Camel fieldConfig := fieldConfigs[fieldPath] - field := ackmodel.NewField(crd, fieldPath, memberNames, memberRef, fieldConfig) + field := NewField(crd, fieldPath, memberNames, memberRef, fieldConfig) switch memberShapeType { case "structure": - g.processNestedStructField(crd, fieldPath+".", field) + m.processNestedStructField(crd, fieldPath+".", field) case "list": - g.processNestedListField(crd, fieldPath+"..", field) + m.processNestedListField(crd, fieldPath+"..", field) case "map": - g.processNestedMapField(crd, fieldPath+"..", field) + m.processNestedMapField(crd, fieldPath+"..", field) } crd.Fields[fieldPath] = field } @@ -594,10 +599,10 @@ func (g *Generator) processNestedListField( // processNestedMapField recurses through the members of a nested field that // is a map type that has a struct value type and adds any Field objects to // the supplied CRD. -func (g *Generator) processNestedMapField( - crd *ackmodel.CRD, +func (m *Model) processNestedMapField( + crd *CRD, baseFieldPath string, - baseField *ackmodel.Field, + baseField *Field, ) { baseFieldShape := baseField.ShapeRef.Shape valueFieldShape := baseFieldShape.ValueRef.Shape @@ -611,36 +616,36 @@ func (g *Generator) processNestedMapField( memberShapeType := memberShape.Type fieldPath := baseFieldPath + memberNames.Camel fieldConfig := fieldConfigs[fieldPath] - field := ackmodel.NewField(crd, fieldPath, memberNames, memberRef, fieldConfig) + field := NewField(crd, fieldPath, memberNames, memberRef, fieldConfig) switch memberShapeType { case "structure": - g.processNestedStructField(crd, fieldPath+".", field) + m.processNestedStructField(crd, fieldPath+".", field) case "list": - g.processNestedListField(crd, fieldPath+"..", field) + m.processNestedListField(crd, fieldPath+"..", field) case "map": - g.processNestedMapField(crd, fieldPath+"..", field) + m.processNestedMapField(crd, fieldPath+"..", field) } crd.Fields[fieldPath] = field } } -// GetEnumDefs returns a slice of pointers to `ackmodel.EnumDef` structs which +// GetEnumDefs returns a slice of pointers to `EnumDef` structs which // represent string fields whose value is constrained to one or more specific // string values. -func (g *Generator) GetEnumDefs() ([]*ackmodel.EnumDef, error) { - edefs := []*ackmodel.EnumDef{} +func (m *Model) GetEnumDefs() ([]*EnumDef, error) { + edefs := []*EnumDef{} - for shapeName, shape := range g.SDKAPI.API.Shapes { + for shapeName, shape := range m.SDKAPI.API.Shapes { if !shape.IsEnum() { continue } enumNames := names.New(shapeName) // Handle name conflicts with top-level CRD.Spec or CRD.Status // types - if g.SDKAPI.HasConflictingTypeName(shapeName, g.cfg) { - enumNames.Camel += ackmodel.ConflictingNameSuffix + if m.SDKAPI.HasConflictingTypeName(shapeName, m.cfg) { + enumNames.Camel += ConflictingNameSuffix } - edef, err := ackmodel.NewEnumDef(enumNames, shape.Enum) + edef, err := NewEnumDef(enumNames, shape.Enum) if err != nil { return nil, err } @@ -654,12 +659,12 @@ func (g *Generator) GetEnumDefs() ([]*ackmodel.EnumDef, error) { // ApplyShapeIgnoreRules removes the ignored shapes and fields from the API object // so that they are not considered in any of the calculations of code generator. -func (g *Generator) ApplyShapeIgnoreRules() { - if g.cfg == nil || g.SDKAPI == nil { +func (m *Model) ApplyShapeIgnoreRules() { + if m.cfg == nil || m.SDKAPI == nil { return } - for sdkShapeID, shape := range g.SDKAPI.API.Shapes { - for _, fieldpath := range g.cfg.Ignore.FieldPaths { + for sdkShapeID, shape := range m.SDKAPI.API.Shapes { + for _, fieldpath := range m.cfg.Ignore.FieldPaths { sn := strings.Split(fieldpath, ".")[0] fn := strings.Split(fieldpath, ".")[1] if shape.ShapeName != sn { @@ -667,9 +672,9 @@ func (g *Generator) ApplyShapeIgnoreRules() { } delete(shape.MemberRefs, fn) } - for _, sn := range g.cfg.Ignore.ShapeNames { + for _, sn := range m.cfg.Ignore.ShapeNames { if shape.ShapeName == sn { - delete(g.SDKAPI.API.Shapes, sdkShapeID) + delete(m.SDKAPI.API.Shapes, sdkShapeID) continue } // NOTE(muvaf): We need to remove the usage of the shape as well. @@ -684,24 +689,24 @@ func (g *Generator) ApplyShapeIgnoreRules() { // GetConfig returns the configuration option used to define the current // generator. -func (g *Generator) GetConfig() *ackgenconfig.Config { - return g.cfg +func (m *Model) GetConfig() *ackgenconfig.Config { + return m.cfg } -// New returns a new Generator struct for a supplied API model. +// New returns a new Model struct for a supplied API model. // Optionally, pass a file path to a generator config file that can be used to // instruct the code generator how to handle the API properly func New( - SDKAPI *ackmodel.SDKAPI, + SDKAPI *SDKAPI, apiVersion string, configPath string, defaultConfig ackgenconfig.Config, -) (*Generator, error) { +) (*Model, error) { cfg, err := ackgenconfig.New(configPath, defaultConfig) if err != nil { return nil, err } - g := &Generator{ + m := &Model{ SDKAPI: SDKAPI, // TODO(jaypipes): Handle cases where service alias and service ID // don't match (Step Functions) @@ -709,6 +714,6 @@ func New( apiVersion: apiVersion, cfg: &cfg, } - g.ApplyShapeIgnoreRules() - return g, nil + m.ApplyShapeIgnoreRules() + return m, nil } diff --git a/pkg/generate/apigwv2_test.go b/pkg/model/model_apigwv2_test.go similarity index 96% rename from pkg/generate/apigwv2_test.go rename to pkg/model/model_apigwv2_test.go index dfcfedad..b4269914 100644 --- a/pkg/generate/apigwv2_test.go +++ b/pkg/model/model_apigwv2_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestAPIGatewayV2_GetTypeDefs(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") // There is an "Api" Shape that is a struct that is an element of the // GetApis Operation. Its name conflicts with the CRD called API and thus @@ -43,7 +43,7 @@ func TestAPIGatewayV2_Api(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") crds, err := g.GetCRDs() require.Nil(err) @@ -71,7 +71,7 @@ func TestAPIGatewayV2_Route(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "apigatewayv2") + g := testutil.NewModelForService(t, "apigatewayv2") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/codedeploy_test.go b/pkg/model/model_codedeploy_test.go similarity index 98% rename from pkg/generate/codedeploy_test.go rename to pkg/model/model_codedeploy_test.go index b6caf7bf..cd57d354 100644 --- a/pkg/generate/codedeploy_test.go +++ b/pkg/model/model_codedeploy_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestCodeDeploy_Deployment(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "codedeploy") + g := testutil.NewModelForService(t, "codedeploy") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/dynamodb_test.go b/pkg/model/model_dynamodb_test.go similarity index 97% rename from pkg/generate/dynamodb_test.go rename to pkg/model/model_dynamodb_test.go index a6cf30b2..db5e216a 100644 --- a/pkg/generate/dynamodb_test.go +++ b/pkg/model/model_dynamodb_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestDynamoDB_Table(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "dynamodb") + g := testutil.NewModelForService(t, "dynamodb") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/ec2_test.go b/pkg/model/model_ec2_test.go similarity index 98% rename from pkg/generate/ec2_test.go rename to pkg/model/model_ec2_test.go index fcfe4cf7..8a7059b9 100644 --- a/pkg/generate/ec2_test.go +++ b/pkg/model/model_ec2_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestEC2_LaunchTemplate(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "ec2") + g := testutil.NewModelForService(t, "ec2") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/ecr_test.go b/pkg/model/model_ecr_test.go similarity index 98% rename from pkg/generate/ecr_test.go rename to pkg/model/model_ecr_test.go index fedcc168..9c8fdde1 100644 --- a/pkg/generate/ecr_test.go +++ b/pkg/model/model_ecr_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestECRRepository(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "ecr") + g := testutil.NewModelForService(t, "ecr") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/elasticache_test.go b/pkg/model/model_elasticache_test.go similarity index 93% rename from pkg/generate/elasticache_test.go rename to pkg/model/model_elasticache_test.go index 7245c386..d86442e3 100644 --- a/pkg/generate/elasticache_test.go +++ b/pkg/model/model_elasticache_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestElasticache_ReplicationGroup(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -160,7 +160,7 @@ func TestElasticache_ReplicationGroup(t *testing.T) { func TestElasticache_Ignored_Resources(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -172,7 +172,7 @@ func TestElasticache_Ignored_Resources(t *testing.T) { func TestElasticache_Additional_Snapshot_Spec(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -187,7 +187,7 @@ func TestElasticache_Additional_Snapshot_Spec(t *testing.T) { func TestElasticache_Additional_CacheParameterGroup_Spec(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -202,7 +202,7 @@ func TestElasticache_Additional_CacheParameterGroup_Spec(t *testing.T) { func TestElasticache_Additional_CacheParameterGroup_Status(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -218,7 +218,7 @@ func TestElasticache_Additional_CacheParameterGroup_Status(t *testing.T) { func TestElasticache_Additional_ReplicationGroup_Status(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -233,7 +233,7 @@ func TestElasticache_Additional_ReplicationGroup_Status(t *testing.T) { func TestElasticache_Additional_CacheSubnetGroup_Status(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -248,7 +248,7 @@ func TestElasticache_Additional_CacheSubnetGroup_Status(t *testing.T) { func TestElasticache_Additional_ReplicationGroup_Status_RenameField(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -264,7 +264,7 @@ func TestElasticache_Additional_ReplicationGroup_Status_RenameField(t *testing.T func TestElasticache_ValidateAuthTokenIsSecret(t *testing.T) { require := require.New(t) - g := testutil.NewGeneratorForService(t, "elasticache") + g := testutil.NewModelForService(t, "elasticache") crds, err := g.GetCRDs() require.Nil(err) @@ -283,4 +283,4 @@ func TestElasticache_ValidateAuthTokenIsSecret(t *testing.T) { assert.Equal("[]*ackv1alpha1.SecretKeyReference", crd.SpecFields["Passwords"].GoType) assert.Equal("SecretKeyReference", crd.SpecFields["Passwords"].GoTypeElem) assert.Equal("[]*ackv1alpha1.SecretKeyReference", crd.SpecFields["Passwords"].GoTypeWithPkgName) -} \ No newline at end of file +} diff --git a/pkg/generate/lambda_test.go b/pkg/model/model_lambda_test.go similarity index 97% rename from pkg/generate/lambda_test.go rename to pkg/model/model_lambda_test.go index ab3b9a47..e107d263 100644 --- a/pkg/generate/lambda_test.go +++ b/pkg/model/model_lambda_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestLambda_Function(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "lambda") + g := testutil.NewModelForService(t, "lambda") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/mq_test.go b/pkg/model/model_mq_test.go similarity index 94% rename from pkg/generate/mq_test.go rename to pkg/model/model_mq_test.go index bf8c637c..71d3d3e5 100644 --- a/pkg/generate/mq_test.go +++ b/pkg/model/model_mq_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestMQ_Broker(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "mq") + g := testutil.NewModelForService(t, "mq") crd := testutil.GetCRDByName(t, g, "Broker") require.NotNil(crd) @@ -56,7 +56,7 @@ func TestMQ_GetOutputShapeGoType(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "mq") + g := testutil.NewModelForService(t, "mq") crd := testutil.GetCRDByName(t, g, "Broker") require.NotNil(crd) diff --git a/pkg/generate/rds_test.go b/pkg/model/model_rds_test.go similarity index 98% rename from pkg/generate/rds_test.go rename to pkg/model/model_rds_test.go index e0ad4ccb..995a02cb 100644 --- a/pkg/generate/rds_test.go +++ b/pkg/model/model_rds_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestRDS_DBInstance(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "rds") + g := testutil.NewModelForService(t, "rds") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/s3_test.go b/pkg/model/model_s3_test.go similarity index 97% rename from pkg/generate/s3_test.go rename to pkg/model/model_s3_test.go index f3d5b732..6a060c20 100644 --- a/pkg/generate/s3_test.go +++ b/pkg/model/model_s3_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestS3_Bucket(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "s3") + g := testutil.NewModelForService(t, "s3") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/sagemaker_test.go b/pkg/model/model_sagemaker_test.go similarity index 95% rename from pkg/generate/sagemaker_test.go rename to pkg/model/model_sagemaker_test.go index d4630e92..2be1014c 100644 --- a/pkg/generate/sagemaker_test.go +++ b/pkg/model/model_sagemaker_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -27,7 +27,7 @@ func TestSageMaker_ARN_Field_Override(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sagemaker") + g := testutil.NewModelForService(t, "sagemaker") crds, err := g.GetCRDs() require.Nil(err) @@ -72,7 +72,7 @@ func TestSageMaker_Error_Prefix_Message(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sagemaker") + g := testutil.NewModelForService(t, "sagemaker") crds, err := g.GetCRDs() require.Nil(err) @@ -110,7 +110,7 @@ func TestSageMaker_Error_Suffix_Message(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sagemaker") + g := testutil.NewModelForService(t, "sagemaker") crds, err := g.GetCRDs() require.Nil(err) @@ -145,7 +145,7 @@ func TestSageMaker_RequeueOnSuccessSeconds(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sagemaker") + g := testutil.NewModelForService(t, "sagemaker") crds, err := g.GetCRDs() require.Nil(err) @@ -178,7 +178,7 @@ func TestSageMaker_RequeueOnSuccessSeconds(t *testing.T) { // } // } // - // So, we expect that crd.ReconcileRequeuOnSuccessSeconds() returns the requeue + // So, we expect that crd.ReconcileRequeuOnSuccessSeconds() returns the requeue // duration specified in the config file assert.Equal(10, crd.ReconcileRequeuOnSuccessSeconds()) } @@ -187,7 +187,7 @@ func TestSageMaker_RequeueOnSuccessSeconds_Default(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sagemaker") + g := testutil.NewModelForService(t, "sagemaker") crds, err := g.GetCRDs() require.Nil(err) @@ -221,7 +221,7 @@ func TestSageMaker_RequeueOnSuccessSeconds_Default(t *testing.T) { // } // } // - // So, we expect that crd.ReconcileRequeuOnSuccessSeconds() returns the default + // So, we expect that crd.ReconcileRequeuOnSuccessSeconds() returns the default // requeue duration of 0 because it is not specified in the config file assert.Equal(0, crd.ReconcileRequeuOnSuccessSeconds()) diff --git a/pkg/generate/sns_test.go b/pkg/model/model_sns_test.go similarity index 98% rename from pkg/generate/sns_test.go rename to pkg/model/model_sns_test.go index 4d675f5c..235e8cc4 100644 --- a/pkg/generate/sns_test.go +++ b/pkg/model/model_sns_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestSNS_Topic(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sns") + g := testutil.NewModelForService(t, "sns") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/generate/sqs_test.go b/pkg/model/model_sqs_test.go similarity index 97% rename from pkg/generate/sqs_test.go rename to pkg/model/model_sqs_test.go index d1cb3950..4365fbe1 100644 --- a/pkg/generate/sqs_test.go +++ b/pkg/model/model_sqs_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "testing" @@ -26,7 +26,7 @@ func TestSQS_Queue(t *testing.T) { assert := assert.New(t) require := require.New(t) - g := testutil.NewGeneratorForService(t, "sqs") + g := testutil.NewModelForService(t, "sqs") crds, err := g.GetCRDs() require.Nil(err) diff --git a/pkg/model/sdk_helper_test.go b/pkg/model/sdk_helper_test.go index 5f4405e4..f6f4c72e 100644 --- a/pkg/model/sdk_helper_test.go +++ b/pkg/model/sdk_helper_test.go @@ -31,7 +31,7 @@ func lambdaSDKAPI(t *testing.T) *model.SDKAPI { if lambda != nil { return lambda } - path := filepath.Clean("../generate/testdata") + path := filepath.Clean("../testdata") sdkHelper := model.NewSDKHelper(path) lambda, err := sdkHelper.API("lambda") if err != nil { diff --git a/pkg/generate/util_test.go b/pkg/model/util_test.go similarity index 98% rename from pkg/generate/util_test.go rename to pkg/model/util_test.go index c1287e77..dd5e7951 100644 --- a/pkg/generate/util_test.go +++ b/pkg/model/util_test.go @@ -11,7 +11,7 @@ // express or implied. See the License for the specific language governing // permissions and limitations under the License. -package generate_test +package model_test import ( "sort" diff --git a/pkg/generate/testdata/models/apis/apigatewayv2/0000-00-00/api-2.json b/pkg/testdata/models/apis/apigatewayv2/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/apigatewayv2/0000-00-00/api-2.json rename to pkg/testdata/models/apis/apigatewayv2/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/apigatewayv2/0000-00-00/docs-2.json b/pkg/testdata/models/apis/apigatewayv2/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/apigatewayv2/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/apigatewayv2/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/apigatewayv2/0000-00-00/generator.yaml b/pkg/testdata/models/apis/apigatewayv2/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/apigatewayv2/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/apigatewayv2/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/codedeploy/0000-00-00/api-2.json b/pkg/testdata/models/apis/codedeploy/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/codedeploy/0000-00-00/api-2.json rename to pkg/testdata/models/apis/codedeploy/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/codedeploy/0000-00-00/docs-2.json b/pkg/testdata/models/apis/codedeploy/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/codedeploy/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/codedeploy/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/codedeploy/0000-00-00/generator.yaml b/pkg/testdata/models/apis/codedeploy/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/codedeploy/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/codedeploy/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/dynamodb/0000-00-00/api-2.json b/pkg/testdata/models/apis/dynamodb/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/dynamodb/0000-00-00/api-2.json rename to pkg/testdata/models/apis/dynamodb/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/dynamodb/0000-00-00/docs-2.json b/pkg/testdata/models/apis/dynamodb/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/dynamodb/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/dynamodb/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/dynamodb/0000-00-00/generator.yaml b/pkg/testdata/models/apis/dynamodb/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/dynamodb/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/dynamodb/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/ec2/0000-00-00/api-2.json b/pkg/testdata/models/apis/ec2/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/ec2/0000-00-00/api-2.json rename to pkg/testdata/models/apis/ec2/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/ec2/0000-00-00/docs-2.json b/pkg/testdata/models/apis/ec2/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/ec2/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/ec2/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/ecr/0000-00-00/api-2.json b/pkg/testdata/models/apis/ecr/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/ecr/0000-00-00/api-2.json rename to pkg/testdata/models/apis/ecr/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/ecr/0000-00-00/docs-2.json b/pkg/testdata/models/apis/ecr/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/ecr/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/ecr/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/ecr/0000-00-00/generator.yaml b/pkg/testdata/models/apis/ecr/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/ecr/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/ecr/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/eks/0000-00-00/api-2.json b/pkg/testdata/models/apis/eks/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/eks/0000-00-00/api-2.json rename to pkg/testdata/models/apis/eks/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/eks/0000-00-00/docs-2.json b/pkg/testdata/models/apis/eks/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/eks/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/eks/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/eks/0000-00-00/generator.yaml b/pkg/testdata/models/apis/eks/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/eks/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/eks/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/api-2.json b/pkg/testdata/models/apis/elasticache/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/elasticache/0000-00-00/api-2.json rename to pkg/testdata/models/apis/elasticache/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/docs-2.json b/pkg/testdata/models/apis/elasticache/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/elasticache/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/elasticache/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/elasticache/0000-00-00/generator.yaml b/pkg/testdata/models/apis/elasticache/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/elasticache/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/elasticache/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/lambda/0000-00-00/api-2.json b/pkg/testdata/models/apis/lambda/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/lambda/0000-00-00/api-2.json rename to pkg/testdata/models/apis/lambda/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/lambda/0000-00-00/docs-2.json b/pkg/testdata/models/apis/lambda/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/lambda/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/lambda/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/lambda/0000-00-00/generator.yaml b/pkg/testdata/models/apis/lambda/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/lambda/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/lambda/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/mq/0000-00-00/api-2.json b/pkg/testdata/models/apis/mq/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/mq/0000-00-00/api-2.json rename to pkg/testdata/models/apis/mq/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/mq/0000-00-00/docs-2.json b/pkg/testdata/models/apis/mq/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/mq/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/mq/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/mq/0000-00-00/generator.yaml b/pkg/testdata/models/apis/mq/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/mq/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/mq/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/rds/0000-00-00/api-2.json b/pkg/testdata/models/apis/rds/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/rds/0000-00-00/api-2.json rename to pkg/testdata/models/apis/rds/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/rds/0000-00-00/docs-2.json b/pkg/testdata/models/apis/rds/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/rds/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/rds/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/rds/0000-00-00/generator.yaml b/pkg/testdata/models/apis/rds/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/rds/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/rds/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/s3/0000-00-00/api-2.json b/pkg/testdata/models/apis/s3/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/s3/0000-00-00/api-2.json rename to pkg/testdata/models/apis/s3/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/s3/0000-00-00/docs-2.json b/pkg/testdata/models/apis/s3/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/s3/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/s3/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/s3/0000-00-00/generator.yaml b/pkg/testdata/models/apis/s3/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/s3/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/s3/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/sagemaker/0000-00-00/api-2.json b/pkg/testdata/models/apis/sagemaker/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/sagemaker/0000-00-00/api-2.json rename to pkg/testdata/models/apis/sagemaker/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/sagemaker/0000-00-00/docs-2.json b/pkg/testdata/models/apis/sagemaker/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/sagemaker/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/sagemaker/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/sagemaker/0000-00-00/generator.yaml b/pkg/testdata/models/apis/sagemaker/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/sagemaker/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/sagemaker/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/sns/0000-00-00/api-2.json b/pkg/testdata/models/apis/sns/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/sns/0000-00-00/api-2.json rename to pkg/testdata/models/apis/sns/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/sns/0000-00-00/docs-2.json b/pkg/testdata/models/apis/sns/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/sns/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/sns/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/sns/0000-00-00/generator.yaml b/pkg/testdata/models/apis/sns/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/sns/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/sns/0000-00-00/generator.yaml diff --git a/pkg/generate/testdata/models/apis/sqs/0000-00-00/api-2.json b/pkg/testdata/models/apis/sqs/0000-00-00/api-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/sqs/0000-00-00/api-2.json rename to pkg/testdata/models/apis/sqs/0000-00-00/api-2.json diff --git a/pkg/generate/testdata/models/apis/sqs/0000-00-00/docs-2.json b/pkg/testdata/models/apis/sqs/0000-00-00/docs-2.json similarity index 100% rename from pkg/generate/testdata/models/apis/sqs/0000-00-00/docs-2.json rename to pkg/testdata/models/apis/sqs/0000-00-00/docs-2.json diff --git a/pkg/generate/testdata/models/apis/sqs/0000-00-00/generator.yaml b/pkg/testdata/models/apis/sqs/0000-00-00/generator.yaml similarity index 100% rename from pkg/generate/testdata/models/apis/sqs/0000-00-00/generator.yaml rename to pkg/testdata/models/apis/sqs/0000-00-00/generator.yaml diff --git a/pkg/testutil/get.go b/pkg/testutil/get.go index 49aa96d5..52f9fc5b 100644 --- a/pkg/testutil/get.go +++ b/pkg/testutil/get.go @@ -18,19 +18,19 @@ import ( "github.com/stretchr/testify/require" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" "github.com/aws-controllers-k8s/code-generator/pkg/model" + ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" ) // GetCRDByName returns a CRD model with the supplied name func GetCRDByName( t *testing.T, - g *generate.Generator, + m *ackmodel.Model, name string, ) *model.CRD { require := require.New(t) - crds, err := g.GetCRDs() + crds, err := m.GetCRDs() require.Nil(err) for _, c := range crds { @@ -44,12 +44,12 @@ func GetCRDByName( // GetTypeDefByName returns a TypeDef model with the supplied name func GetTypeDefByName( t *testing.T, - g *generate.Generator, + m *ackmodel.Model, name string, ) *model.TypeDef { require := require.New(t) - tdefs, err := g.GetTypeDefs() + tdefs, err := m.GetTypeDefs() require.Nil(err) for _, tdef := range tdefs { diff --git a/pkg/testutil/schema_helper.go b/pkg/testutil/schema_helper.go index 41da8dca..fd918f25 100644 --- a/pkg/testutil/schema_helper.go +++ b/pkg/testutil/schema_helper.go @@ -19,21 +19,24 @@ import ( "strings" "testing" - "github.com/aws-controllers-k8s/code-generator/pkg/generate" ackgenerate "github.com/aws-controllers-k8s/code-generator/pkg/generate/ack" "github.com/aws-controllers-k8s/code-generator/pkg/model" + ackmodel "github.com/aws-controllers-k8s/code-generator/pkg/model" ) -func NewGeneratorForService(t *testing.T, serviceAlias string) *generate.Generator { - path, _ := filepath.Abs("testdata") - // We have subdirectories in pkg/generate that rely on the testdata in - // pkg/generate. This code simply detects if we're running from one of +func NewModelForService(t *testing.T, serviceAlias string) *ackmodel.Model { + path, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + // We have subdirectories in pkg/generate and pkg/model that rely on the testdata + // in pkg/generate. This code simply detects if we're running from one of // those subdirectories and if so, rebuilds the path to the API model files // in pkg/generate/testdata pathParts := strings.Split(path, "/") for x, pathPart := range pathParts { - if pathPart == "generate" { - path = filepath.Join(pathParts[0 : x+1]...) + if pathPart == "generate" || pathPart == "model" { + path = filepath.Join(pathParts[0:x]...) path = filepath.Join("/", path, "testdata") break } @@ -47,7 +50,7 @@ func NewGeneratorForService(t *testing.T, serviceAlias string) *generate.Generat if _, err := os.Stat(generatorConfigPath); os.IsNotExist(err) { generatorConfigPath = "" } - g, err := generate.New(sdkAPI, "v1alpha1", generatorConfigPath, ackgenerate.DefaultConfig) + g, err := ackmodel.New(sdkAPI, "v1alpha1", generatorConfigPath, ackgenerate.DefaultConfig) if err != nil { t.Fatal(err) }