mirror of https://github.com/pulumi/pulumi.git
17b66dfc56
In order for PCL to serve as an authoritative intermediate language for Pulumi programs, it needs to be able to express all the concepts available to a Pulumi program written in a high-level programming language. Put another way, it must be capable of expressing all the functionality exposed by the `ResourceMonitor` interface. Presently, the ability to `Call` methods on component resources is not available in PCL. This change adds a new `call` intrinsic to fix that. `call` has three required arguments: the receiver (that will become the `__self__` argument under the hood), the method name (that must exist in the resource's `Methods` map in schema), and an object of arguments (whose specifications must appear in the corresponding `Function` in the schema). An example use of `call` might thus look as follows: ```hcl resource "c" "pkg:index:Callable" { ... } output "o" { value = call(c, "method", { x = 1, y = 2 }) } ``` In order to type check and applications of `call` when binding PCL programs, we use the recently powered-up annotations feature to look up the resource node of the receiver from its expression. With this, we are able to grab the schema and validate the method name and arguments. While we add unit tests for binding programs that use `call`, this change does not extend program generation or the conformance test suite. This will be done in a subsequent set of changes. Part of fixing pulumi/pulumi-java#262 |
||
---|---|---|
.. | ||
asset | ||
authhelpers | ||
backend | ||
channel | ||
cmd/pulumi | ||
codegen | ||
display | ||
engine | ||
graph | ||
importer | ||
operations | ||
resource | ||
secrets | ||
testing/integration | ||
util | ||
workspace | ||
README.md | ||
go.mod | ||
go.sum |
README.md
pulumi/pkg
While pulumi/sdk maintains strict backwards compatibility guarantees, code under pkg/ is handled more informally: while breaking changes are still discouraged they may happen when they make sense.