private void ReadResult(Type resType, Type resultType, object result, PlanResourceChange.Types.Response response) { var diagnostics = ((TFDiagnostics)resultType .GetProperty(nameof(response.Diagnostics)).GetValue(result)); var plannedPrivate = resultType .GetProperty(nameof(response.PlannedPrivate)).GetValue(result); var plannedState = resultType .GetProperty(nameof(response.PlannedState)).GetValue(result); var requiresReplace = resultType .GetProperty(nameof(response.RequiresReplace)).GetValue(result); if (diagnostics.Count() > 0) { response.Diagnostics.Add(diagnostics.All()); } if (plannedPrivate != null) { response.PlannedPrivate = ByteString.CopyFrom((byte[])plannedPrivate); } if (plannedState != null) { response.PlannedState = plannedState.MarshalToDynamicValue(resType, withUnknowns: true); } if (requiresReplace != null) { // Translates our internal representation of ValuePath to AttributePath var paths = (IEnumerable <TFSteps>)requiresReplace; response.RequiresReplace.Add(TFAttributePaths.ToPaths(paths)); } }
public PlanResourceChangeResult <RegistryKeyResource> PlanChange( PlanResourceChangeInput <RegistryKeyResource> input) { _log.LogDebug("{method}: ", nameof(PlanChange)); _log.LogTrace("->input = {@input}", input); _log.LogDebug(" * .....Config: " + JsonConvert.SerializeObject(input.Config, Formatting.Indented)); _log.LogDebug(" * ......Prior: " + JsonConvert.SerializeObject(input.PriorState, Formatting.Indented)); _log.LogDebug(" * ...Proposed: " + JsonConvert.SerializeObject(input.ProposedNewState, Formatting.Indented)); var result = new PlanResourceChangeResult <RegistryKeyResource>(); var replace = new TFAttributePaths(); result.RequiresReplace = ResolveRequiresReplace(input.PriorState, input.Config); result.PlannedState = input.ProposedNewState; result.PlannedPrivate = input.PriorPrivate; _log.LogTrace("<-result = {@result}", result); return(result); }