GithubHelp home page GithubHelp logo

pseudo-dynamic / pseudodynamic.terraform.toolset Goto Github PK

View Code? Open in Web Editor NEW
12.0 2.0 0.0 511 KB

Implement Terraform provider plugins, including resources and data sources, in best C# manner.

License: MIT License

C# 97.51% HCL 2.49%
terraform terraform-provider csharp terraform-csharp terraform-plugin terraform-plugin-framework terraform-plugin-sdk

pseudodynamic.terraform.toolset's People

Contributors

teneko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pseudodynamic.terraform.toolset's Issues

Support import of resources

Implement the ability to import resources.

The problem: From only the string "Id", that can represent an identifier, JSON or whatever fits in a string, the protocol allows you to send more than one resources to send back.

I need to evaluate the import behaviour, whether more than one resources sending back results into the same amount of ReadResource calls.

Introduce an unit testing library

As the scenarios get more and more complex, we need a unit testing library for bootstrapping Terraform more easily. The requirement is to make it consumable by users of PseudoDynamic.Terraform.Plugin.Sdk.

Not only unit testing should be made possible but also integration tests*1 (see here) and acceptance tests*2 (see here).

*1 Integration tests are those tests where you create a plugin server instance inside the same process as the running test where you can mock parts of the plugin server.

*2 Acceptance tests are those tests where you create an process-indepdent plugin server instance and checks the reality after running Terraform against the plugin server.

TODO:

Allow to publish a Terraform provider to the official Terraform registry

Currently you can write Terraform providers in C#, but currently there exists no workflow to create artifacts that can can be recognized by Terraform registry.

What needs to be done:

  • Check rules and constraints for artifacts that get produced by Goreleaser, uploaded as GitHub artifacts and finally recognized by Terraform registry
  • Checkout .NET supported runtimes and identify what is not supported

References:

Support `Nullable<>` for indicating optional primitives

Currently you cannot use int? or other Nullable<>-wrappable primitives inside a schema. So you cannot use int? to indicate a block attribute or object attribute as optional.

Here are some facts that must be taken into account:

  • ITerraform<> can contain Nullable<>, but Nullable<> never ITerraform<>
  • Nullable<> can contain primitives and BigInteger
  • We have a to decode/encode ITerraform<Nullable<>> properly

Implement C# equivalent for Terraform tuple

Currently you are not able to represent Terraform tuples in C# schema classes.

What needs to be done:

  • Extend BlockBuilder by TupleDefinition
  • Introduce C# attributes for correctly annotating properties to reflect the position of tuple elements
  • Reflect new encoding and decoding behaviour in Trancoding/*.cs

What should be implemented first?

As you can see there exists many issues labeled as enhancement. By giving a thump up ๐Ÿ‘ you can help to prioritize one issue over the other.

If you cannot wait any longer, pleas let me know if you want to grab an issue by writing to that issue, so I can get back to you and clarify questions if you have any.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.