Skip to content

Commit ba3fd92

Browse files
committed
fix: Fixed bug where certain parameters are not passed to stateful parameters
1 parent a247e4f commit ba3fd92

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codify-plugin-lib",
3-
"version": "1.0.147",
3+
"version": "1.0.149",
44
"description": "Library plugin library",
55
"main": "dist/index.js",
66
"typings": "dist/index.d.ts",

src/resource/resource-controller.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)