@@ -119,6 +119,7 @@ export class ResourceController<T extends StringIndexedObject> {
119119 // Parse data from the user supplied config
120120 const parsedConfig = new ConfigParser ( desired , state , this . parsedSettings . statefulParameters )
121121 const {
122+ allParameters,
122123 allNonStatefulParameters,
123124 allStatefulParameters,
124125 } = parsedConfig ;
@@ -144,7 +145,7 @@ export class ResourceController<T extends StringIndexedObject> {
144145
145146 // Refresh stateful parameters. These parameters have state external to the resource. Each variation of the
146147 // current parameters (each array element) is passed into the stateful parameter refresh.
147- const statefulCurrentParameters = await this . refreshStatefulParameters ( allStatefulParameters , currentArray ) ;
148+ const statefulCurrentParameters = await this . refreshStatefulParameters ( allStatefulParameters , currentArray , allParameters ) ;
148149
149150 return Plan . calculate ( {
150151 desired,
@@ -239,6 +240,7 @@ export class ResourceController<T extends StringIndexedObject> {
239240 // Parse data from the user supplied config
240241 const parsedConfig = new ConfigParser ( parametersToRefresh , null , this . parsedSettings . statefulParameters )
241242 const {
243+ allParameters,
242244 allNonStatefulParameters,
243245 allStatefulParameters,
244246 } = parsedConfig ;
@@ -252,7 +254,7 @@ export class ResourceController<T extends StringIndexedObject> {
252254 return [ ] ;
253255 }
254256
255- const statefulCurrentParameters = await this . refreshStatefulParameters ( allStatefulParameters , currentParametersArray ) ;
257+ const statefulCurrentParameters = await this . refreshStatefulParameters ( allStatefulParameters , currentParametersArray , allParameters ) ;
256258 const resultParametersArray = currentParametersArray
257259 ?. map ( ( r , idx ) => ( { ...r , ...statefulCurrentParameters [ idx ] } ) )
258260
@@ -403,21 +405,25 @@ ${JSON.stringify(refresh, null, 2)}
403405
404406 // Refresh stateful parameters
405407 // This refreshes parameters that are stateful (they can be added, deleted separately from the resource)
406- private async refreshStatefulParameters ( statefulParametersConfig : Partial < T > , allParameters : Array < Partial < T > > ) : Promise < Array < Partial < T > > > {
407- const result : Array < Partial < T > > = Array . from ( { length : allParameters . length } , ( ) => ( { } ) )
408+ private async refreshStatefulParameters (
409+ statefulParametersConfig : Partial < T > ,
410+ currentArray : Array < Partial < T > > ,
411+ allParameters : Partial < T >
412+ ) : Promise < Array < Partial < T > > > {
413+ const result : Array < Partial < T > > = Array . from ( { length : currentArray . length } , ( ) => ( { } ) )
408414 const sortedEntries = Object . entries ( statefulParametersConfig )
409415 . sort (
410416 ( [ key1 ] , [ key2 ] ) => this . parsedSettings . statefulParameterOrder . get ( key1 ) ! - this . parsedSettings . statefulParameterOrder . get ( key2 ) !
411417 )
412418
413- for ( const [ idx , refreshedParams ] of allParameters . entries ( ) ) {
419+ for ( const [ idx , refreshedParams ] of currentArray . entries ( ) ) {
414420 await Promise . all ( sortedEntries . map ( async ( [ key , desiredValue ] ) => {
415421 const statefulParameter = this . parsedSettings . statefulParameters . get ( key ) ;
416422 if ( ! statefulParameter ) {
417423 throw new Error ( `Stateful parameter ${ key } was not found` ) ;
418424 }
419425
420- ( result [ idx ] [ key ] as T [ keyof T ] | null ) = await statefulParameter . refresh ( desiredValue ?? null , refreshedParams )
426+ ( result [ idx ] [ key ] as T [ keyof T ] | null ) = await statefulParameter . refresh ( desiredValue ?? null , { ... allParameters , ... refreshedParams } )
421427 } ) )
422428 }
423429
0 commit comments