Skip to content

Commit a536261

Browse files
authored
fix(engines): resolve identity blueprint vars and create variables (#115)
1 parent d915ba6 commit a536261

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

engines/terraform/deployment.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ type TerraformDeployment struct {
2424

2525
terraformResources map[string]cdktf.TerraformHclModule
2626
terraformInfraResources map[string]cdktf.TerraformHclModule
27+
terraformIdentityResources map[string]cdktf.TerraformHclModule
28+
identityBlueprints map[string]*ResourceBlueprint
2729
terraformVariables map[string]cdktf.TerraformVariable
2830
instancedTerraformVariables map[string]map[string]cdktf.TerraformVariable
2931
}
@@ -53,6 +55,8 @@ func NewTerraformDeployment(engine *TerraformEngine, stackName string) *Terrafor
5355
engine: engine,
5456
terraformResources: map[string]cdktf.TerraformHclModule{},
5557
terraformInfraResources: map[string]cdktf.TerraformHclModule{},
58+
terraformIdentityResources: map[string]cdktf.TerraformHclModule{},
59+
identityBlueprints: map[string]*ResourceBlueprint{},
5660
terraformVariables: map[string]cdktf.TerraformVariable{},
5761
instancedTerraformVariables: map[string]map[string]cdktf.TerraformVariable{},
5862
serviceIdentities: map[string]map[string]interface{}{},
@@ -219,16 +223,25 @@ func (td *TerraformDeployment) resolveService(name string, spec *app_spec_schema
219223
return nil, err
220224
}
221225

222-
idModule := cdktf.NewTerraformHclModule(td.stack, jsii.Sprintf("%s_%s_role", name, identityPlugin.Name), &cdktf.TerraformHclModuleConfig{
226+
identityModuleName := fmt.Sprintf("%s_%s_role", name, identityPlugin.Name)
227+
228+
// Create variables for the identity blueprint
229+
td.createVariablesForIntent(identityModuleName, &id)
230+
231+
idModule := cdktf.NewTerraformHclModule(td.stack, jsii.String(identityModuleName), &cdktf.TerraformHclModuleConfig{
223232
Source: jsii.String(identityPlugin.Deployment.Terraform),
224-
Variables: &id.Properties,
233+
Variables: &map[string]interface{}{},
225234
})
226235

227236
idModule.Set(jsii.String("suga"), map[string]interface{}{
228237
"name": jsii.String(name),
229238
"stack_id": td.stackId.Result(),
230239
})
231240

241+
// Store the identity module and blueprint for later token resolution
242+
td.terraformIdentityResources[identityModuleName] = idModule
243+
td.identityBlueprints[identityModuleName] = &id
244+
232245
identityModuleOutputs[identityPlugin.IdentityType] = idModule.Get(jsii.String("suga"))
233246
}
234247
}

engines/terraform/terraform.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,18 @@ func (e *TerraformEngine) Apply(appSpec *app_spec_schema.Application) (result st
219219
}
220220
}
221221

222+
// Resolve identity tokens
223+
for identityName, identityModule := range tfDeployment.terraformIdentityResources {
224+
identityBlueprint, ok := tfDeployment.identityBlueprints[identityName]
225+
if !ok {
226+
return "", fmt.Errorf("identity blueprint %s not found", identityName)
227+
}
228+
err := tfDeployment.resolveTokensForModule(identityName, identityBlueprint, identityModule)
229+
if err != nil {
230+
return "", err
231+
}
232+
}
233+
222234
tfDeployment.Synth()
223235

224236
return filepath.Join(e.outputDir, "stacks", appSpec.Name), nil

0 commit comments

Comments
 (0)