codify-plugin-lib 1.0.148 → 1.0.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/plugin/plugin.js
CHANGED
|
@@ -121,12 +121,10 @@ export class Plugin {
|
|
|
121
121
|
return !controller.parsedSettings.allowMultiple && v > 1;
|
|
122
122
|
});
|
|
123
123
|
if (invalidMultipleConfigs.length > 0) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
isValid: false,
|
|
129
|
-
})));
|
|
124
|
+
throw new Error(`Multiples of the following configs were found but only 1 is allowed.
|
|
125
|
+
|
|
126
|
+
[${invalidMultipleConfigs.map(([k]) => k).join(', ')}]
|
|
127
|
+
`);
|
|
130
128
|
}
|
|
131
129
|
await this.crossValidateResources(data.configs);
|
|
132
130
|
return {
|
|
@@ -79,7 +79,7 @@ export class ResourceController {
|
|
|
79
79
|
await this.applyTransformParameters(state);
|
|
80
80
|
// Parse data from the user supplied config
|
|
81
81
|
const parsedConfig = new ConfigParser(desired, state, this.parsedSettings.statefulParameters);
|
|
82
|
-
const { allNonStatefulParameters, allStatefulParameters, } = parsedConfig;
|
|
82
|
+
const { allParameters, allNonStatefulParameters, allStatefulParameters, } = parsedConfig;
|
|
83
83
|
// Refresh resource parameters. This refreshes the parameters that configure the resource itself
|
|
84
84
|
const currentArray = await this.refreshNonStatefulParameters(allNonStatefulParameters);
|
|
85
85
|
// Short circuit here. If the resource is non-existent, there's no point checking stateful parameters
|
|
@@ -98,7 +98,7 @@ export class ResourceController {
|
|
|
98
98
|
}
|
|
99
99
|
// Refresh stateful parameters. These parameters have state external to the resource. Each variation of the
|
|
100
100
|
// current parameters (each array element) is passed into the stateful parameter refresh.
|
|
101
|
-
const statefulCurrentParameters = await this.refreshStatefulParameters(allStatefulParameters, currentArray);
|
|
101
|
+
const statefulCurrentParameters = await this.refreshStatefulParameters(allStatefulParameters, currentArray, allParameters);
|
|
102
102
|
return Plan.calculate({
|
|
103
103
|
desired,
|
|
104
104
|
currentArray: currentArray.map((c, idx) => ({ ...c, ...statefulCurrentParameters[idx] })),
|
|
@@ -165,14 +165,14 @@ export class ResourceController {
|
|
|
165
165
|
};
|
|
166
166
|
// Parse data from the user supplied config
|
|
167
167
|
const parsedConfig = new ConfigParser(parametersToRefresh, null, this.parsedSettings.statefulParameters);
|
|
168
|
-
const { allNonStatefulParameters, allStatefulParameters, } = parsedConfig;
|
|
168
|
+
const { allParameters, allNonStatefulParameters, allStatefulParameters, } = parsedConfig;
|
|
169
169
|
const currentParametersArray = await this.refreshNonStatefulParameters(allNonStatefulParameters);
|
|
170
170
|
if (currentParametersArray === null
|
|
171
171
|
|| currentParametersArray === undefined
|
|
172
172
|
|| currentParametersArray.filter(Boolean).length === 0) {
|
|
173
173
|
return [];
|
|
174
174
|
}
|
|
175
|
-
const statefulCurrentParameters = await this.refreshStatefulParameters(allStatefulParameters, currentParametersArray);
|
|
175
|
+
const statefulCurrentParameters = await this.refreshStatefulParameters(allStatefulParameters, currentParametersArray, allParameters);
|
|
176
176
|
const resultParametersArray = currentParametersArray
|
|
177
177
|
?.map((r, idx) => ({ ...r, ...statefulCurrentParameters[idx] }));
|
|
178
178
|
for (const result of resultParametersArray) {
|
|
@@ -291,17 +291,17 @@ ${JSON.stringify(refresh, null, 2)}
|
|
|
291
291
|
}
|
|
292
292
|
// Refresh stateful parameters
|
|
293
293
|
// This refreshes parameters that are stateful (they can be added, deleted separately from the resource)
|
|
294
|
-
async refreshStatefulParameters(statefulParametersConfig, allParameters) {
|
|
295
|
-
const result = Array.from({ length:
|
|
294
|
+
async refreshStatefulParameters(statefulParametersConfig, currentArray, allParameters) {
|
|
295
|
+
const result = Array.from({ length: currentArray.length }, () => ({}));
|
|
296
296
|
const sortedEntries = Object.entries(statefulParametersConfig)
|
|
297
297
|
.sort(([key1], [key2]) => this.parsedSettings.statefulParameterOrder.get(key1) - this.parsedSettings.statefulParameterOrder.get(key2));
|
|
298
|
-
for (const [idx, refreshedParams] of
|
|
298
|
+
for (const [idx, refreshedParams] of currentArray.entries()) {
|
|
299
299
|
await Promise.all(sortedEntries.map(async ([key, desiredValue]) => {
|
|
300
300
|
const statefulParameter = this.parsedSettings.statefulParameters.get(key);
|
|
301
301
|
if (!statefulParameter) {
|
|
302
302
|
throw new Error(`Stateful parameter ${key} was not found`);
|
|
303
303
|
}
|
|
304
|
-
result[idx][key] = await statefulParameter.refresh(desiredValue ?? null, refreshedParams);
|
|
304
|
+
result[idx][key] = await statefulParameter.refresh(desiredValue ?? null, { ...allParameters, ...refreshedParams });
|
|
305
305
|
}));
|
|
306
306
|
}
|
|
307
307
|
return result;
|
package/package.json
CHANGED
|
@@ -482,13 +482,12 @@ describe('Plugin tests', () => {
|
|
|
482
482
|
|
|
483
483
|
const testPlugin = Plugin.create('testPlugin', [resource as any]);
|
|
484
484
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
expect(validate1.resourceValidations.every((r) => r.isValid)).to.be.false;
|
|
485
|
+
await expect(() => testPlugin.validate({
|
|
486
|
+
configs: [{ core: { type: 'ssh-config' }, parameters: { propA: 'a' } }, {
|
|
487
|
+
core: { type: 'ssh-config' },
|
|
488
|
+
parameters: { propB: 'b' }
|
|
489
|
+
}]
|
|
490
|
+
})
|
|
491
|
+
).rejects.toThrowError();
|
|
493
492
|
})
|
|
494
493
|
});
|
package/src/plugin/plugin.ts
CHANGED
|
@@ -178,12 +178,11 @@ export class Plugin {
|
|
|
178
178
|
});
|
|
179
179
|
|
|
180
180
|
if (invalidMultipleConfigs.length > 0) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
})));
|
|
181
|
+
throw new Error(
|
|
182
|
+
`Multiples of the following configs were found but only 1 is allowed.
|
|
183
|
+
|
|
184
|
+
[${invalidMultipleConfigs.map(([k]) => k).join(', ')}]
|
|
185
|
+
`)
|
|
187
186
|
}
|
|
188
187
|
|
|
189
188
|
await this.crossValidateResources(data.configs);
|
|
@@ -119,6 +119,7 @@ export class ResourceController<T extends StringIndexedObject> {
|
|
|
119
119
|
// Parse data from the user supplied config
|
|
120
120
|
const parsedConfig = new ConfigParser(desired, state, this.parsedSettings.statefulParameters)
|
|
121
121
|
const {
|
|
122
|
+
allParameters,
|
|
122
123
|
allNonStatefulParameters,
|
|
123
124
|
allStatefulParameters,
|
|
124
125
|
} = parsedConfig;
|
|
@@ -144,7 +145,7 @@ export class ResourceController<T extends StringIndexedObject> {
|
|
|
144
145
|
|
|
145
146
|
// Refresh stateful parameters. These parameters have state external to the resource. Each variation of the
|
|
146
147
|
// 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);
|
|
148
149
|
|
|
149
150
|
return Plan.calculate({
|
|
150
151
|
desired,
|
|
@@ -239,6 +240,7 @@ export class ResourceController<T extends StringIndexedObject> {
|
|
|
239
240
|
// Parse data from the user supplied config
|
|
240
241
|
const parsedConfig = new ConfigParser(parametersToRefresh, null, this.parsedSettings.statefulParameters)
|
|
241
242
|
const {
|
|
243
|
+
allParameters,
|
|
242
244
|
allNonStatefulParameters,
|
|
243
245
|
allStatefulParameters,
|
|
244
246
|
} = parsedConfig;
|
|
@@ -252,7 +254,7 @@ export class ResourceController<T extends StringIndexedObject> {
|
|
|
252
254
|
return [];
|
|
253
255
|
}
|
|
254
256
|
|
|
255
|
-
const statefulCurrentParameters = await this.refreshStatefulParameters(allStatefulParameters, currentParametersArray);
|
|
257
|
+
const statefulCurrentParameters = await this.refreshStatefulParameters(allStatefulParameters, currentParametersArray, allParameters);
|
|
256
258
|
const resultParametersArray = currentParametersArray
|
|
257
259
|
?.map((r, idx) => ({ ...r, ...statefulCurrentParameters[idx] }))
|
|
258
260
|
|
|
@@ -403,21 +405,25 @@ ${JSON.stringify(refresh, null, 2)}
|
|
|
403
405
|
|
|
404
406
|
// Refresh stateful parameters
|
|
405
407
|
// This refreshes parameters that are stateful (they can be added, deleted separately from the resource)
|
|
406
|
-
private async refreshStatefulParameters(
|
|
407
|
-
|
|
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 }, () => ({}))
|
|
408
414
|
const sortedEntries = Object.entries(statefulParametersConfig)
|
|
409
415
|
.sort(
|
|
410
416
|
([key1], [key2]) => this.parsedSettings.statefulParameterOrder.get(key1)! - this.parsedSettings.statefulParameterOrder.get(key2)!
|
|
411
417
|
)
|
|
412
418
|
|
|
413
|
-
for (const [idx, refreshedParams] of
|
|
419
|
+
for (const [idx, refreshedParams] of currentArray.entries()) {
|
|
414
420
|
await Promise.all(sortedEntries.map(async ([key, desiredValue]) => {
|
|
415
421
|
const statefulParameter = this.parsedSettings.statefulParameters.get(key);
|
|
416
422
|
if (!statefulParameter) {
|
|
417
423
|
throw new Error(`Stateful parameter ${key} was not found`);
|
|
418
424
|
}
|
|
419
425
|
|
|
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 })
|
|
421
427
|
}))
|
|
422
428
|
}
|
|
423
429
|
|