codify-plugin-lib 1.0.51 → 1.0.52
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.
|
@@ -55,9 +55,9 @@ export class Resource {
|
|
|
55
55
|
parameterOptions: this.parameterOptions,
|
|
56
56
|
};
|
|
57
57
|
const parsedConfig = new ConfigParser(desiredConfig, this.statefulParameters, this.transformParameters);
|
|
58
|
-
const { parameters: desiredParameters, resourceMetadata, resourceParameters, statefulParameters } = parsedConfig;
|
|
58
|
+
const { parameters: desiredParameters, resourceMetadata, resourceParameters, statefulParameters, transformParameters, } = parsedConfig;
|
|
59
59
|
this.addDefaultValues(resourceParameters);
|
|
60
|
-
await this.applyTransformParameters(resourceParameters);
|
|
60
|
+
await this.applyTransformParameters(transformParameters, resourceParameters);
|
|
61
61
|
const currentParameters = await this.refreshResourceParameters(resourceParameters);
|
|
62
62
|
if (currentParameters == null) {
|
|
63
63
|
return Plan.create(desiredParameters, null, resourceMetadata, planOptions);
|
|
@@ -151,8 +151,8 @@ Missing: ${[...desiredKeys].filter((k) => !refreshKeys.has(k))};
|
|
|
151
151
|
Additional: ${[...refreshKeys].filter(k => !desiredKeys.has(k))};`);
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
async applyTransformParameters(desired) {
|
|
155
|
-
const orderedEntries = [...
|
|
154
|
+
async applyTransformParameters(transformParameters, desired) {
|
|
155
|
+
const orderedEntries = [...Object.entries(transformParameters)]
|
|
156
156
|
.sort(([keyA], [keyB]) => this.transformParameterOrder.get(keyA) - this.transformParameterOrder.get(keyB));
|
|
157
157
|
for (const [key, tp] of orderedEntries) {
|
|
158
158
|
if (desired[key] !== null) {
|
package/package.json
CHANGED
|
@@ -407,6 +407,43 @@ describe('Resource parameters tests', () => {
|
|
|
407
407
|
expect(plan.changeSet.operation).to.eq(ResourceOperation.NOOP);
|
|
408
408
|
})
|
|
409
409
|
|
|
410
|
+
it('Does not call transform parameters unless they are specified in the user config', async () => {
|
|
411
|
+
const transformParameter = spy(new class extends TransformParameter<TestConfig> {
|
|
412
|
+
async transform(value: any): Promise<Partial<TestConfig>> {
|
|
413
|
+
return {
|
|
414
|
+
propA: 'propA',
|
|
415
|
+
propB: 10,
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
})
|
|
419
|
+
|
|
420
|
+
const resource = spy(new class extends TestResource {
|
|
421
|
+
constructor() {
|
|
422
|
+
super({
|
|
423
|
+
type: 'resourceType',
|
|
424
|
+
parameterOptions: {
|
|
425
|
+
propC: { transformParameter }
|
|
426
|
+
},
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
async refresh(): Promise<Partial<TestConfig> | null> {
|
|
431
|
+
return {
|
|
432
|
+
propA: 'propA',
|
|
433
|
+
propB: 10,
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
const plan = await resource.plan({ type: 'resourceType', propA: 'propA', propB: 10 } as any);
|
|
439
|
+
|
|
440
|
+
expect(transformParameter.transform.called).to.be.false;
|
|
441
|
+
expect(resource.refresh.getCall(0).firstArg.has('propA')).to.be.true;
|
|
442
|
+
expect(resource.refresh.getCall(0).firstArg.has('propB')).to.be.true;
|
|
443
|
+
|
|
444
|
+
expect(plan.changeSet.operation).to.eq(ResourceOperation.NOOP);
|
|
445
|
+
})
|
|
446
|
+
|
|
410
447
|
it('Plans transform parameters in the order specified', async () => {
|
|
411
448
|
const transformParameterA = spy(new class extends TransformParameter<TestConfig> {
|
|
412
449
|
async transform(value: any): Promise<Partial<TestConfig>> {
|
package/src/entities/resource.ts
CHANGED
|
@@ -89,11 +89,12 @@ export abstract class Resource<T extends StringIndexedObject> {
|
|
|
89
89
|
parameters: desiredParameters,
|
|
90
90
|
resourceMetadata,
|
|
91
91
|
resourceParameters,
|
|
92
|
-
statefulParameters
|
|
92
|
+
statefulParameters,
|
|
93
|
+
transformParameters,
|
|
93
94
|
} = parsedConfig;
|
|
94
95
|
|
|
95
96
|
this.addDefaultValues(resourceParameters);
|
|
96
|
-
await this.applyTransformParameters(resourceParameters);
|
|
97
|
+
await this.applyTransformParameters(transformParameters, resourceParameters);
|
|
97
98
|
|
|
98
99
|
// Refresh resource parameters. This refreshes the parameters that configure the resource itself
|
|
99
100
|
const currentParameters = await this.refreshResourceParameters(resourceParameters);
|
|
@@ -223,8 +224,8 @@ Additional: ${[...refreshKeys].filter(k => !desiredKeys.has(k))};`
|
|
|
223
224
|
}
|
|
224
225
|
}
|
|
225
226
|
|
|
226
|
-
private async applyTransformParameters(desired: Partial<T>): Promise<void> {
|
|
227
|
-
const orderedEntries = [...
|
|
227
|
+
private async applyTransformParameters(transformParameters: Partial<T>, desired: Partial<T>): Promise<void> {
|
|
228
|
+
const orderedEntries = [...Object.entries(transformParameters)]
|
|
228
229
|
.sort(([keyA], [keyB]) => this.transformParameterOrder.get(keyA)! - this.transformParameterOrder.get(keyB)!)
|
|
229
230
|
|
|
230
231
|
for (const [key, tp] of orderedEntries) {
|