Skip to content

Commit

Permalink
Merge pull request #358 from sergenyalcin/fix-statefunc-call
Browse files Browse the repository at this point in the history
Removing the applying of StateFuncs to parameters
  • Loading branch information
sergenyalcin authored Mar 6, 2024
2 parents 05703b5 + 956c7d4 commit 363f66c
Showing 1 changed file with 8 additions and 18 deletions.
26 changes: 8 additions & 18 deletions pkg/controller/external_tfpluginsdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,25 +158,25 @@ func getExtendedParameters(ctx context.Context, tr resource.Terraformed, externa
return params, nil
}

func (c *TerraformPluginSDKConnector) processParamsWithStateFunc(schemaMap map[string]*schema.Schema, params map[string]any) map[string]any {
func (c *TerraformPluginSDKConnector) processParamsWithHCLParser(schemaMap map[string]*schema.Schema, params map[string]any) map[string]any {
if params == nil {
return params
}
for key, param := range params {
if sc, ok := schemaMap[key]; ok {
params[key] = c.applyStateFuncToParam(sc, param)
params[key] = c.applyHCLParserToParam(sc, param)
} else {
params[key] = param
}
}
return params
}

func (c *TerraformPluginSDKConnector) applyStateFuncToParam(sc *schema.Schema, param any) any { //nolint:gocyclo
func (c *TerraformPluginSDKConnector) applyHCLParserToParam(sc *schema.Schema, param any) any { //nolint:gocyclo
if param == nil {
return param
}
switch sc.Type {
switch sc.Type { //nolint:exhaustive
case schema.TypeMap:
if sc.Elem == nil {
return param
Expand All @@ -185,7 +185,7 @@ func (c *TerraformPluginSDKConnector) applyStateFuncToParam(sc *schema.Schema, p
// TypeMap only supports schema in Elem
if mapSchema, ok := sc.Elem.(*schema.Schema); ok && okParam {
for pk, pv := range pmap {
pmap[pk] = c.applyStateFuncToParam(mapSchema, pv)
pmap[pk] = c.applyHCLParserToParam(mapSchema, pv)
}
return pmap
}
Expand All @@ -196,13 +196,13 @@ func (c *TerraformPluginSDKConnector) applyStateFuncToParam(sc *schema.Schema, p
pArray, okParam := param.([]any)
if setSchema, ok := sc.Elem.(*schema.Schema); ok && okParam {
for i, p := range pArray {
pArray[i] = c.applyStateFuncToParam(setSchema, p)
pArray[i] = c.applyHCLParserToParam(setSchema, p)
}
return pArray
} else if setResource, ok := sc.Elem.(*schema.Resource); ok {
for i, p := range pArray {
if resParam, okRParam := p.(map[string]any); okRParam {
pArray[i] = c.processParamsWithStateFunc(setResource.Schema, resParam)
pArray[i] = c.processParamsWithHCLParser(setResource.Schema, resParam)
}
}
}
Expand All @@ -216,16 +216,6 @@ func (c *TerraformPluginSDKConnector) applyStateFuncToParam(sc *schema.Schema, p
param = hclProccessedParam
}
}
if sc.StateFunc != nil {
return sc.StateFunc(param)
}
return param
case schema.TypeBool, schema.TypeInt, schema.TypeFloat:
if sc.StateFunc != nil {
return sc.StateFunc(param)
}
return param
case schema.TypeInvalid:
return param
default:
return param
Expand All @@ -252,7 +242,7 @@ func (c *TerraformPluginSDKConnector) Connect(ctx context.Context, mg xpresource
if err != nil {
return nil, errors.Wrapf(err, "failed to get the extended parameters for resource %q", mg.GetName())
}
params = c.processParamsWithStateFunc(c.config.TerraformResource.Schema, params)
params = c.processParamsWithHCLParser(c.config.TerraformResource.Schema, params)

schemaBlock := c.config.TerraformResource.CoreConfigSchema()
rawConfig, err := schema.JSONMapToStateValue(params, schemaBlock)
Expand Down

0 comments on commit 363f66c

Please sign in to comment.