From 22e88d079c5bc282fea3036dd06e457105ce759b Mon Sep 17 00:00:00 2001 From: Radu Ciopraga <1442639+raduciopraga@users.noreply.github.com> Date: Tue, 26 Dec 2023 12:36:12 +0100 Subject: [PATCH] Added status and e-mail as labels to the AWS Account Resource Signed-off-by: Radu Ciopraga <1442639+raduciopraga@users.noreply.github.com> --- .changeset/stale-hairs-sparkle.md | 5 +++++ ...sOrganizationCloudAccountProcessor.test.ts | 22 ++++++++++++++----- .../AwsOrganizationCloudAccountProcessor.ts | 14 ++++++++++++ 3 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 .changeset/stale-hairs-sparkle.md diff --git a/.changeset/stale-hairs-sparkle.md b/.changeset/stale-hairs-sparkle.md new file mode 100644 index 0000000000..3db8e974ec --- /dev/null +++ b/.changeset/stale-hairs-sparkle.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-aws': patch +--- + +Added status and e-mail as labels to the AWS Account Resource diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.test.ts b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.test.ts index 458a1f3531..05b247720a 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.test.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.test.ts @@ -40,7 +40,9 @@ describe('AwsOrganizationCloudAccountProcessor', () => { Accounts: [ { Arn: 'arn:aws:organizations::192594491037:account/o-1vl18kc5a3/957140518395', - Name: 'testaccount', + Name: 'Test Account', + Email: 'aws-test-account@backstage.io', + Status: 'ACTIVE', }, ], NextToken: undefined, @@ -59,7 +61,12 @@ describe('AwsOrganizationCloudAccountProcessor', () => { 'amazonaws.com/account-id': '957140518395', 'amazonaws.com/organization-id': 'o-1vl18kc5a3', }, - name: 'testaccount', + labels: { + 'amazonaws.com/account-status': 'active', + 'amazonaws.com/account-email': 'aws-test-account@backstage.io', + }, + name: 'test-account', + title: 'Test Account', namespace: 'default', }, spec: { @@ -79,11 +86,11 @@ describe('AwsOrganizationCloudAccountProcessor', () => { Accounts: [ { Arn: 'arn:aws:organizations::192594491037:account/o-1vl18kc5a3/957140518395', - Name: 'testaccount', + Name: 'Test Account', }, { Arn: 'arn:aws:organizations::192594491037:account/o-zzzzzzzzz/957140518395', - Name: 'testaccount2', + Name: 'Test Account 2', }, ], NextToken: undefined, @@ -103,7 +110,12 @@ describe('AwsOrganizationCloudAccountProcessor', () => { 'amazonaws.com/account-id': '957140518395', 'amazonaws.com/organization-id': 'o-1vl18kc5a3', }, - name: 'testaccount', + labels: { + 'amazonaws.com/account-status': '', + 'amazonaws.com/account-email': '', + }, + name: 'test-account', + title: 'Test Account', namespace: 'default', }, spec: { diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts index 264fa7a50d..3e42fc79d2 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts @@ -41,6 +41,9 @@ const ACCOUNTID_ANNOTATION = 'amazonaws.com/account-id'; const ARN_ANNOTATION = 'amazonaws.com/arn'; const ORGANIZATION_ANNOTATION = 'amazonaws.com/organization-id'; +const ACCOUNT_STATUS_LABEL = 'amazonaws.com/account-status'; +const ACCOUNT_EMAIL_LABEL = 'amazonaws.com/account-email'; + /** * A processor for ingesting AWS Accounts from AWS Organizations. * @@ -123,6 +126,10 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { .replace(/[^a-zA-Z0-9\-]/g, '-'); } + private normalizeAccountStatus(name: string): string { + return name.toLocaleLowerCase('en-US'); + } + private extractInformationFromArn(arn: string): { accountId: string; organizationId: string; @@ -165,7 +172,14 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { [ARN_ANNOTATION]: account.Arn || '', [ORGANIZATION_ANNOTATION]: organizationId, }, + labels: { + [ACCOUNT_EMAIL_LABEL]: account.Email || '', + [ACCOUNT_STATUS_LABEL]: this.normalizeAccountStatus( + account.Status || '', + ), + }, name: this.normalizeName(account.Name || ''), + title: account.Name || '', namespace: 'default', }, spec: {