Skip to content

Commit

Permalink
ARN field mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
surajkota committed Apr 15, 2021
1 parent b2c902d commit 99946f3
Show file tree
Hide file tree
Showing 6 changed files with 25,354 additions and 0 deletions.
5 changes: 5 additions & 0 deletions pkg/generate/config/field.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,11 @@ type FieldConfig struct {
// that owns the resource. This is a special field that we direct to
// storage in the common `Status.ACKResourceMetadata.OwnerAccountID` field.
IsOwnerAccountID bool `json:"is_owner_account_id"`
// IsARN indicates the field represents the ARN for the resource.
// This allows the generator config to override the
// default behaviour of considering a field called "Arn" or
// "{Resource}Arn" (case in-sensitive) as the "ARN field" for the resource.
IsARN bool `json:"is_arn"`
// IsSecret instructs the code generator that this field should be a
// SecretKeyReference.
IsSecret bool `json:"is_secret"`
Expand Down
68 changes: 68 additions & 0 deletions pkg/generate/sagemaker_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// 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_test

import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/aws-controllers-k8s/code-generator/pkg/testutil"
)

func TestSageMaker_ARN_Field_Override(t *testing.T) {
assert := assert.New(t)
require := require.New(t)

g := testutil.NewGeneratorForService(t, "sagemaker")

crds, err := g.GetCRDs()
require.Nil(err)

crd := getCRDByName("DataQualityJobDefinition", crds)
require.NotNil(crd)

// The CreateDataQualityJobDefinition has the following definition:
//
// "CreateDataQualityJobDefinition":{
// "name":"CreateDataQualityJobDefinition",
// "http":{
// "method":"POST",
// "requestUri":"/"
// },
// "input":{"shape":"CreateDataQualityJobDefinitionRequest"},
// "output":{"shape":"CreateDataQualityJobDefinitionResponse"},
// "errors":[
// {"shape":"ResourceLimitExceeded"},
// {"shape":"ResourceInUse"}
// ]
// }
//
// Where the CreateDataQualityJobDefinitionResponse shape looks like this:
//
// "CreateDataQualityJobDefinitionResponse":{
// "type":"structure",
// "required":["JobDefinitionArn"],
// "members":{
// "JobDefinitionArn":{"shape":"MonitoringJobDefinitionArn"}
// }
// }
//
// So, we expect that the logic in crd.IsPrimaryARNField() parses through
// field config and identifies the JobDefinitionArn as the primaryARNField
// for the resource
assert.Equal(true, crd.IsPrimaryARNField("JobDefinitionArn"))

}
Loading

0 comments on commit 99946f3

Please sign in to comment.