@@ -13,7 +13,7 @@ import { Plan } from '../plan/plan.js';
1313import { CreatePlan , DestroyPlan , ModifyPlan } from '../plan/plan-types.js' ;
1414import { ConfigParser } from './config-parser.js' ;
1515import { ParsedResourceSettings } from './parsed-resource-settings.js' ;
16- import { Resource } from './resource.js' ;
16+ import { RefreshContext , Resource } from './resource.js' ;
1717import { ResourceSettings } from './resource-settings.js' ;
1818
1919export class ResourceController < T extends StringIndexedObject > {
@@ -151,6 +151,11 @@ export class ResourceController<T extends StringIndexedObject> {
151151 isStateful = false ,
152152 ) : Promise < Plan < T > > {
153153 this . validatePlanInputs ( core , desired , state , isStateful ) ;
154+ const context : RefreshContext < T > = {
155+ commandType : 'plan' ,
156+ isStateful,
157+ originalDesiredConfig : structuredClone ( desired ) ,
158+ } ;
154159
155160 this . addDefaultValues ( desired ) ;
156161 await this . applyTransformParameters ( desired ) ;
@@ -167,7 +172,7 @@ export class ResourceController<T extends StringIndexedObject> {
167172 } = parsedConfig ;
168173
169174 // Refresh resource parameters. This refreshes the parameters that configure the resource itself
170- const currentArray = await this . refreshNonStatefulParameters ( allNonStatefulParameters ) ;
175+ const currentArray = await this . refreshNonStatefulParameters ( allNonStatefulParameters , context ) ;
171176
172177 // Short circuit here. If the resource is non-existent, there's no point checking stateful parameters
173178 if ( currentArray === null
@@ -259,6 +264,12 @@ export class ResourceController<T extends StringIndexedObject> {
259264 throw new Error ( `Type: ${ this . typeId } cannot be imported` ) ;
260265 }
261266
267+ const context : RefreshContext < T > = {
268+ commandType : 'import' ,
269+ isStateful : true ,
270+ originalDesiredConfig : structuredClone ( parameters ) ,
271+ } ;
272+
262273 this . addDefaultValues ( parameters ) ;
263274 await this . applyTransformParameters ( parameters ) ;
264275
@@ -287,7 +298,7 @@ export class ResourceController<T extends StringIndexedObject> {
287298 allStatefulParameters,
288299 } = parsedConfig ;
289300
290- const currentParametersArray = await this . refreshNonStatefulParameters ( allNonStatefulParameters ) ;
301+ const currentParametersArray = await this . refreshNonStatefulParameters ( allNonStatefulParameters , context ) ;
291302
292303 if ( currentParametersArray === null
293304 || currentParametersArray === undefined
@@ -434,8 +445,8 @@ ${JSON.stringify(refresh, null, 2)}
434445
435446 }
436447
437- private async refreshNonStatefulParameters ( resourceParameters : Partial < T > ) : Promise < Array < Partial < T > > | null > {
438- const result = await this . resource . refresh ( resourceParameters ) ;
448+ private async refreshNonStatefulParameters ( resourceParameters : Partial < T > , context : RefreshContext < T > ) : Promise < Array < Partial < T > > | null > {
449+ const result = await this . resource . refresh ( resourceParameters , context ) ;
439450
440451 const currentParametersArray = Array . isArray ( result ) || result === null
441452 ? result
0 commit comments