Skip to content

Commit ffaefbb

Browse files
committed
patch(fix): octo-aws-cdk resource diffs must not call super().
- Calling super() could lead to issues where DELETE and UPDATE diffs are generated together.
1 parent 50cdb8f commit ffaefbb

File tree

4 files changed

+40
-4
lines changed

4 files changed

+40
-4
lines changed

packages/octo-aws-cdk/src/resources/iam/iam-role.resource.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,16 @@ export class IamRole extends AResource<IamRole> {
1616
}
1717

1818
override async diff(previous?: IamRole): Promise<Diff[]> {
19-
const diffs = await super.diff(previous);
19+
const diffs: Diff[] = [];
20+
21+
if (this.isMarkedDeleted()) {
22+
diffs.push(new Diff(previous || this, DiffAction.DELETE, 'resourceId', this.resourceId));
23+
return diffs;
24+
}
25+
26+
if (!previous) {
27+
diffs.push(new Diff(this, DiffAction.ADD, 'resourceId', this.resourceId));
28+
}
2029

2130
if (this.policyDiff && Object.keys(this.policyDiff).length > 0) {
2231
for (const key of Object.keys(this.policyDiff)) {

packages/octo-aws-cdk/src/resources/iam/iam-user.resource.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,16 @@ export class IamUser extends AResource<IamUser> {
1616
}
1717

1818
override async diff(previous?: IamUser): Promise<Diff[]> {
19-
const diffs = await super.diff(previous);
19+
const diffs: Diff[] = [];
20+
21+
if (this.isMarkedDeleted()) {
22+
diffs.push(new Diff(previous || this, DiffAction.DELETE, 'resourceId', this.resourceId));
23+
return diffs;
24+
}
25+
26+
if (!previous) {
27+
diffs.push(new Diff(this, DiffAction.ADD, 'resourceId', this.resourceId));
28+
}
2029

2130
if (this.policyDiff && Object.keys(this.policyDiff).length > 0) {
2231
for (const key of Object.keys(this.policyDiff)) {

packages/octo-aws-cdk/src/resources/s3/storage/s3-storage.resource.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,16 @@ export class S3Storage extends AResource<S3Storage> {
1212
}
1313

1414
override async diff(previous?: S3Storage): Promise<Diff[]> {
15-
const diffs = await super.diff(previous);
15+
const diffs: Diff[] = [];
16+
17+
if (this.isMarkedDeleted()) {
18+
diffs.push(new Diff(previous || this, DiffAction.DELETE, 'resourceId', this.resourceId));
19+
return diffs;
20+
}
21+
22+
if (!previous) {
23+
diffs.push(new Diff(this, DiffAction.ADD, 'resourceId', this.resourceId));
24+
}
1625

1726
if (this.manifestDiff && Object.keys(this.manifestDiff).length > 0) {
1827
diffs.push(new Diff(this, DiffAction.UPDATE, 'update-source-paths', this.manifestDiff));

packages/octo-aws-cdk/src/resources/s3/website/s3-website.resource.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,16 @@ export class S3Website extends AResource<S3Website> {
1212
}
1313

1414
override async diff(previous?: S3Website): Promise<Diff[]> {
15-
const diffs = await super.diff(previous);
15+
const diffs: Diff[] = [];
16+
17+
if (this.isMarkedDeleted()) {
18+
diffs.push(new Diff(previous || this, DiffAction.DELETE, 'resourceId', this.resourceId));
19+
return diffs;
20+
}
21+
22+
if (!previous) {
23+
diffs.push(new Diff(this, DiffAction.ADD, 'resourceId', this.resourceId));
24+
}
1625

1726
if (this.manifestDiff && Object.keys(this.manifestDiff).length > 0) {
1827
diffs.push(new Diff(this, DiffAction.UPDATE, 'update-source-paths', this.manifestDiff));

0 commit comments

Comments
 (0)