* Protobuf changes to record dependencies for read resources * Add a number of tests for read resources, especially around replacement * Place read resources in the snapshot with "external" bit set Fixes pulumi/pulumi#1521. This commit introduces two new step ops: Read and ReadReplacement. The engine generates Read and ReadReplacement steps when servicing ReadResource RPC calls from the language host. * Fix an omission of OpReadReplace from the step list * Rebase against master * Transition to use V2 Resources by default * Add a semantic "relinquish" operation to the engine If the engine observes that a resource is read and also that the resource exists in the snapshot as a non-external resource, it will not delete the resource if the IDs of the old and new resources match. * Typo fix * CR: add missing comments, DeserializeDeployment -> DeserializeDeploymentV2, ID check
31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
// Copyright 2016-2018, Pulumi Corporation.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
import { Resource } from "./resource";
|
|
|
|
const a = new Resource("a", { state: 42 }, { id: "existing-id"} );
|
|
|
|
// B must be replaced, but it is a DBR replacement.
|
|
const b = new Resource("b", { state: a.state.apply((b: any) => b + 2)});
|
|
|
|
// C depends on B, so it gets re-read. Before the read, it is removed from the
|
|
// snapshot due to the deletion of B.
|
|
const c = new Resource("c", { state: b.state }, { id: "another-existing-id" })
|
|
|
|
// The engine generates:
|
|
// A: Same
|
|
// C: DeleteReplacement (read)
|
|
// B: DeleteReplacement
|
|
// B: Create
|
|
// C: Read
|