Skip to content

Terraform Resource Schema Traversal shared for multiple pipelines #9

@ulucinar

Description

@ulucinar

What problem are you facing?

For multiple code generation pipelines of upjet, we need to traverse the Terraform resource schema to extract information about the resources (to calculate field names, to generate references, etc.). The main site that does this object (schema) traversal as of now is the CRD generator pipeline's types.buildResource function. However, for generating example manifests with the pipeline being introduced with #4, we also need to extract information from the same object structure (schema). In #4, we have cached the information needed for the example generation pipeline with types.Transformation objects while traversing the schema for CRD generation, to further utilize it in the new pipeline being introduced.

Currently for implementing new pipelines, we need to either duplicate the schema traversal logic, or as stated above, cache the needed information extracted from an existing pipeline to utilize it in a new pipeline.

How could Terrajet help solve your problem?

We may consider implementing a pattern like the visitor pattern to abstract the schema object traversal from the pipeline implementation itself. This would allow us to share the recursive traversal logic currently implemented in types.buildResource and types.buildSchema functions between the pipelines by abstracting the schema traversal logic from the pipeline traversal logic.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions