pulumi/sdk/go/common/resource
Will Jones ec1e3dded1
Centralize resource state dependency traversal (#17320)
Resources can depend on others in a number of ways -- provider
references, parent-child relationships, dependencies and property
dependencies, and deleted-with relationships. With all these linkages to
keep track of, it's easy for one to be missed and bugs to be introduced,
and indeed this has happened on numerous occasions. This commit attempts
to make it harder to introduce bugs where dependencies are missed by
adding a new `GetAllDependencies` method to `resource.State`. The idea
is not that this will make all traversals of dependencies shorter and
neater (though in many cases it does), but that it will force iterations
over a resource's dependency set to account for all possible relations
appropriately, and discard any that are not important explicitly.

> [!NOTE]
> In some cases the use of `GetAllDependencies` means that algorithms
> which previously mutated an existing set of properties are
> easier/cleaner to express by building up a new set of dependencies and
> mutating after the loop's completion. This does mean a change of
> performance characteristics in some places but I don't think these are
> significant and for the most part they are off hot paths -- `state
move`
> and `state rename` are the most obvious examples.

Fixes #16746
2024-09-23 08:37:34 +00:00
..
archive Prepare golangci-lint upgrade (#17065) 2024-08-28 07:57:38 +00:00
asset Add asset/archive to conformance tests and fix engine working dir issues (#16100) 2024-05-02 11:32:54 +00:00
config Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
plugin Have `Host.Provider` accept a `PackageDescriptor` (#17244) 2024-09-12 13:17:30 +00:00
sig Move assets and archives to their own package (#15157) 2024-01-25 20:39:31 +00:00
testing Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
urn rewrite the URN when resources are being moved between projects (#16523) 2024-07-01 17:36:11 +00:00
alias.go Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
asset.go Add asset archive test to conformance tests (#16455) 2024-06-24 14:23:18 +00:00
asset_test.go Deserialize Assets with their Sig (#16073) 2024-04-26 19:05:50 +00:00
custom_timeouts.go Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
errors.go [breaking] Changing the version of go.mod in sdk / pkg to be v3 2021-04-14 19:32:18 +01:00
mapper_test.go Move assets and archives to their own package (#15157) 2024-01-25 20:39:31 +00:00
properties.go Flow PropertyValues through NewPropertyMapFromMap (#16894) 2024-08-07 06:50:58 +00:00
properties_diff.go A property.Value implementation to replace resource.PropertyValue (#15145) 2024-03-14 19:58:59 +00:00
properties_diff_test.go Move assets and archives to their own package (#15157) 2024-01-25 20:39:31 +00:00
properties_path.go Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
properties_path_test.go Enable goheader rule and add missing license headers (#15473) 2024-09-09 12:05:45 +00:00
properties_test.go Flow PropertyValues through NewPropertyMapFromMap (#16894) 2024-08-07 06:50:58 +00:00
property_compatibility.go Property map keys are just strings (#15767) 2024-03-25 17:26:41 +00:00
property_compatibility_test.go A property.Value implementation to replace resource.PropertyValue (#15145) 2024-03-14 19:58:59 +00:00
resource_goal.go Allow anything in resource names (#14107) 2023-11-20 08:59:00 +00:00
resource_id.go Remove unused resource.NewUniqueHexV2 (#17067) 2024-08-26 10:48:25 +00:00
resource_id_test.go Remove unused resource.NewUniqueHexV2 (#17067) 2024-08-26 10:48:25 +00:00
resource_operation.go move pkg/resource -> sdk/go/common/resource, but leave nested resource packages 2020-03-18 13:36:19 -07:00
resource_state.go Centralize resource state dependency traversal (#17320) 2024-09-23 08:37:34 +00:00
resource_state_test.go Centralize resource state dependency traversal (#17320) 2024-09-23 08:37:34 +00:00
stack.go Move resource.URN to urn.URN (#15689) 2024-03-14 15:28:32 +00:00
status.go move pkg/resource -> sdk/go/common/resource, but leave nested resource packages 2020-03-18 13:36:19 -07:00
urn.go Move resource.URN to urn.URN (#15689) 2024-03-14 15:28:32 +00:00