Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 7 additions & 20 deletions pkg/generate/code/set_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -1383,11 +1383,10 @@ func PopulateResourceFromAnnotation(
memberPath, _ := findFieldInCR(cfg, r, primaryField.Names.Original)
primaryKeyOut += requiredFieldGuardContructor("primaryKey", sourceVarName, primaryField.Names.CamelLower, indentLevel)
targetVarPath := fmt.Sprintf("%s%s", targetVarName, memberPath)
primaryKeyOut += setResourceIdentifierPrimaryIdentifierAnn(cfg, r,
primaryKeyOut += setResourceIdentifierPrimaryIdentifierAnn(
"&primaryKey",
primaryField,
targetVarPath,
sourceVarName,
indentLevel,
)
} else {
Expand Down Expand Up @@ -1458,23 +1457,22 @@ func PopulateResourceFromAnnotation(
panic("primary identifier '" + targetField.Path + "' must be a scalar type since NameOrID is a string")
}

targetVarPath := fmt.Sprintf("%s%s", targetVarName, memberPath)
sourceVarPath := fmt.Sprintf("%s%s", targetVarName, memberPath)
if inputShape.IsRequired(memberName) || isPrimaryIdentifier {
requiredFieldVarName := fmt.Sprintf("f%d", memberIndex)
primaryKeyOut += requiredFieldGuardContructor(requiredFieldVarName, sourceVarName, targetField.Names.CamelLower, indentLevel)
primaryKeyOut += setResourceIdentifierPrimaryIdentifierAnn(cfg, r,
primaryKeyOut += setResourceIdentifierPrimaryIdentifierAnn(
fmt.Sprintf("&%s", requiredFieldVarName),
targetField,
targetVarPath,
sourceVarName,
sourceVarPath,
indentLevel,
)
} else {
additionalKeyOut += setResourceIdentifierAdditionalKeyAnn(
cfg, r,
memberIndex,
targetField,
targetVarPath,
sourceVarPath,
sourceVarName,
names.New(fieldName).CamelLower,
indentLevel,
Expand Down Expand Up @@ -1544,29 +1542,18 @@ func setResourceIdentifierPrimaryIdentifier(
//
// r.ko.Status.BrokerID = &identifier.NameOrID
func setResourceIdentifierPrimaryIdentifierAnn(
cfg *ackgenconfig.Config,
r *model.CRD,
// The variable used for required key
requiredFieldVarName string,
// The field that will be set on the target variable
targetField *model.Field,
// The variable name that we want to set a value to
targetVarName string,
// The struct or struct field that we access our source value from
sourceVarName string,
// Number of levels of indentation to use
indentLevel int,
) string {
qualifiedTargetVar := fmt.Sprintf("%s.%s", targetVarName, targetField.Path)

return setResourceForScalar(
qualifiedTargetVar,
requiredFieldVarName,
targetField.ShapeRef,
indentLevel,
false,
false,
)
indent := strings.Repeat("\t", indentLevel)
return fmt.Sprintf("%s%s = %s\n", indent, qualifiedTargetVar, requiredFieldVarName)
}

// setResourceIdentifierAdditionalKey returns a string of Go code that sets a
Expand Down
28 changes: 28 additions & 0 deletions pkg/generate/code/set_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1812,6 +1812,34 @@ func TestSetResource_EKS_Cluster_PopulateResourceFromAnnotation(t *testing.T) {
)
}

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

g := testutil.NewModelForService(t, "opensearchserverless")

crd := testutil.GetCRDByName(t, g, "SecurityPolicy")
require.NotNil(crd)

expected := `
f0, ok := fields["name"]
if !ok {
return ackerrors.NewTerminalError(fmt.Errorf("required field missing: name"))
}
r.ko.Spec.Name = &f0
f1, ok := fields["type_"]
if !ok {
return ackerrors.NewTerminalError(fmt.Errorf("required field missing: type_"))
}
r.ko.Spec.Type = &f1

`
assert.Equal(
expected,
code.PopulateResourceFromAnnotation(crd.Config(), crd, "fields", "r.ko", 1),
)
}

func TestSetResource_SageMaker_ModelPackage_PopulateResourceFromAnnotation(t *testing.T) {
assert := assert.New(t)
require := require.New(t)
Expand Down
Loading