pulumi/pkg/resource
joeduffy fbfca58a3f Implement components
This change implements core support for "components" in the Pulumi
Fabric.  This work is described further in pulumi/pulumi#340, where
we are still discussing some of the finer points.

In a nutshell, resources no longer imply external providers.  It's
entirely possible to have a resource that logically represents
something but without having a physical manifestation that needs to
be tracked and managed by our typical CRUD operations.

For example, the aws/serverless/Function helper is one such type.
It aggregates Lambda-related resources and exposes a nice interface.
All of the Pulumi Cloud Framework resources are also examples.

To indicate that a resource does participate in the usual CRUD resource
provider, it simply derives from ExternalResource instead of Resource.

All resources now have the ability to adopt children.  This is purely
a metadata/tagging thing, and will help us roll up displays, provide
attribution to the developer, and even hide aspects of the resource
graph as appropriate (e.g., when they are implementation details).

Our use of this capability is ultra limited right now; in fact, the
only place we display children is in the CLI output.  For instance:

    + aws:serverless:Function: (create)
      [urn=urn:pulumi:demo::serverless::aws:serverless:Function::mylambda]
      => urn:pulumi:demo::serverless::aws:iam/role:Role::mylambda-iamrole
      => urn:pulumi:demo::serverless::aws:iam/rolePolicyAttachment:RolePolicyAttachment::mylambda-iampolicy-0
      => urn:pulumi:demo::serverless::aws:lambda/function:Function::mylambda

The bit indicating whether a resource is external or not is tracked
in the resulting checkpoint file, along with any of its children.
2017-10-14 18:30:59 -07:00
..
deploy Implement components 2017-10-14 18:30:59 -07:00
environment Implement components 2017-10-14 18:30:59 -07:00
idl Bring LUMIDL up to code 2017-09-11 16:58:25 -07:00
plugin Add a notion of stable properties 2017-10-04 08:22:21 -04:00
provider Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00
asset.go Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00
asset_test.go Add some more asset serialization round-tripping tests 2017-07-17 11:30:10 -07:00
errors.go Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00
properties.go Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00
properties_diff.go Add diffing logic for assets/archives 2017-07-17 12:11:15 -07:00
properties_diff_test.go Add diffing logic for assets/archives 2017-07-17 12:11:15 -07:00
properties_test.go Tolerate computed and output properties 2017-08-03 11:01:38 -07:00
resource_goal.go Implement components 2017-10-14 18:30:59 -07:00
resource_id.go Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00
resource_id_test.go Permit -1 for randlen and maxlen 2017-07-15 09:59:44 -07:00
resource_state.go Implement components 2017-10-14 18:30:59 -07:00
status.go Wire up Lumi to the new runtime strategy 2017-09-04 11:35:21 -07:00
urn.go Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00
urn_test.go Rename pulumi-fabric to pulumi 2017-09-21 19:18:21 -07:00