From cb62aedce45cd466946fbfd25004b54c45a7f3df Mon Sep 17 00:00:00 2001 From: Nathaniel McAuliffe Date: Tue, 5 Jul 2022 12:08:54 -0400 Subject: [PATCH 1/4] Support legacy `Application` tag key --- modules/runners/lambdas/runners/src/aws/runners.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/runners/lambdas/runners/src/aws/runners.test.ts b/modules/runners/lambdas/runners/src/aws/runners.test.ts index 8ff566296f..5fef309409 100644 --- a/modules/runners/lambdas/runners/src/aws/runners.test.ts +++ b/modules/runners/lambdas/runners/src/aws/runners.test.ts @@ -143,7 +143,7 @@ describe('list instances', () => { const noInstances: AWS.EC2.DescribeInstancesResult = { Reservations: undefined, }; - mockDescribeInstances.promise.mockReturnValue(noInstances); + mockDescribeInstances.promise.mockReturnValueOnce(noInstances).mockReturnValueOnce(noInstances); const resp = await listEC2Runners(); expect(resp.length).toBe(0); }); From f7ae5085b7a7c2c4a013e3c47a374aeaa659a091 Mon Sep 17 00:00:00 2001 From: Nathaniel McAuliffe Date: Fri, 18 Nov 2022 14:09:22 -0500 Subject: [PATCH 2/4] Reverting test --- modules/runners/lambdas/runners/src/aws/runners.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/runners/lambdas/runners/src/aws/runners.test.ts b/modules/runners/lambdas/runners/src/aws/runners.test.ts index 5fef309409..8ff566296f 100644 --- a/modules/runners/lambdas/runners/src/aws/runners.test.ts +++ b/modules/runners/lambdas/runners/src/aws/runners.test.ts @@ -143,7 +143,7 @@ describe('list instances', () => { const noInstances: AWS.EC2.DescribeInstancesResult = { Reservations: undefined, }; - mockDescribeInstances.promise.mockReturnValueOnce(noInstances).mockReturnValueOnce(noInstances); + mockDescribeInstances.promise.mockReturnValue(noInstances); const resp = await listEC2Runners(); expect(resp.length).toBe(0); }); From 91dc83ea9bc0c7ac7b3382b96d1b0449f4fdec1d Mon Sep 17 00:00:00 2001 From: Niek Palm Date: Wed, 30 Nov 2022 22:18:05 +0100 Subject: [PATCH 3/4] fix(runners): Remove legacy Application tag. --- .../lambdas/runners/src/aws/runners.test.ts | 52 +++---------------- .../lambdas/runners/src/aws/runners.ts | 5 +- 2 files changed, 9 insertions(+), 48 deletions(-) diff --git a/modules/runners/lambdas/runners/src/aws/runners.test.ts b/modules/runners/lambdas/runners/src/aws/runners.test.ts index 8ff566296f..95e6312815 100644 --- a/modules/runners/lambdas/runners/src/aws/runners.test.ts +++ b/modules/runners/lambdas/runners/src/aws/runners.test.ts @@ -35,23 +35,6 @@ const mockRunningInstances: AWS.EC2.DescribeInstancesResult = { }, ], }; -const mockRunningInstancesLegacy: AWS.EC2.DescribeInstancesResult = { - Reservations: [ - { - Instances: [ - { - LaunchTime: new Date('2020-10-11T14:48:00.000+09:00'), - InstanceId: 'i-5678', - Tags: [ - { Key: 'Owner', Value: REPO_NAME }, - { Key: 'Type', Value: 'Repo' }, - { Key: 'Application', Value: 'github-action-runner' }, - ], - }, - ], - }, - ], -}; describe('list instances', () => { beforeEach(() => { @@ -61,36 +44,27 @@ describe('list instances', () => { it('returns a list of instances', async () => { mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances) - .mockReturnValueOnce(mockRunningInstancesLegacy); + .mockReturnValue(mockRunningInstances); const resp = await listEC2Runners(); - expect(resp.length).toBe(2); + expect(resp.length).toBe(1); expect(resp).toContainEqual({ instanceId: 'i-1234', launchTime: new Date('2020-10-10T14:48:00.000+09:00'), type: 'Org', owner: 'CoderToCat', }); - expect(resp).toContainEqual({ - instanceId: 'i-5678', - launchTime: new Date('2020-10-11T14:48:00.000+09:00'), - type: 'Repo', - owner: REPO_NAME, - }); }); it('calls EC2 describe instances', async () => { mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances) - .mockReturnValueOnce(mockRunningInstancesLegacy); + .mockReturnValueOnce(mockRunningInstances); await listEC2Runners(); expect(mockEC2.describeInstances).toBeCalled(); }); it('filters instances on repo name', async () => { mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances) - .mockReturnValueOnce(mockRunningInstancesLegacy); + .mockReturnValueOnce(mockRunningInstances); await listEC2Runners({ runnerType: 'Repo', runnerOwner: REPO_NAME, environment: undefined }); expect(mockEC2.describeInstances).toBeCalledWith({ Filters: [ @@ -100,20 +74,11 @@ describe('list instances', () => { { Name: 'tag:ghr:Application', Values: ['github-action-runner'] }, ], }); - expect(mockEC2.describeInstances).toBeCalledWith({ - Filters: [ - { Name: 'instance-state-name', Values: ['running', 'pending'] }, - { Name: 'tag:Type', Values: ['Repo'] }, - { Name: 'tag:Owner', Values: [REPO_NAME] }, - { Name: 'tag:Application', Values: ['github-action-runner'] }, - ], - }); }); it('filters instances on org name', async () => { mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances) - .mockReturnValueOnce(mockRunningInstancesLegacy); + .mockReturnValueOnce(mockRunningInstances); await listEC2Runners({ runnerType: 'Org', runnerOwner: ORG_NAME, environment: undefined }); expect(mockEC2.describeInstances).toBeCalledWith({ Filters: [ @@ -127,8 +92,7 @@ describe('list instances', () => { it('filters instances on environment', async () => { mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances) - .mockReturnValueOnce(mockRunningInstancesLegacy); + .mockReturnValueOnce(mockRunningInstances); await listEC2Runners({ environment: ENVIRONMENT }); expect(mockEC2.describeInstances).toBeCalledWith({ Filters: [ @@ -156,7 +120,7 @@ describe('list instances', () => { }, ], }; - mockDescribeInstances.promise.mockReturnValueOnce(noInstances).mockReturnValueOnce(noInstances); + mockDescribeInstances.promise.mockReturnValueOnce(noInstances); const resp = await listEC2Runners(); expect(resp.length).toBe(0); }); @@ -175,7 +139,7 @@ describe('list instances', () => { }, ], }; - mockDescribeInstances.promise.mockReturnValueOnce(noInstances).mockReturnValue({}); + mockDescribeInstances.promise.mockReturnValueOnce(noInstances); const resp = await listEC2Runners(); expect(resp.length).toBe(1); }); diff --git a/modules/runners/lambdas/runners/src/aws/runners.ts b/modules/runners/lambdas/runners/src/aws/runners.ts index fb4154d073..395bdb9240 100644 --- a/modules/runners/lambdas/runners/src/aws/runners.ts +++ b/modules/runners/lambdas/runners/src/aws/runners.ts @@ -74,10 +74,7 @@ function constructFilters(filters?: ListRunnerFilters): Ec2Filter[][] { } } - // ***Deprecation Notice*** - // Support for legacy `Application` tag keys - // will be removed in next major release. - for (const key of ['tag:ghr:Application', 'tag:Application']) { + for (const key of ['tag:ghr:Application']) { const filter = [...ec2FiltersBase]; filter.push({ Name: key, Values: ['github-action-runner'] }); ec2Filters.push(filter); From e6d7dcb0855d2f89981ce47064ceac92cfeb5238 Mon Sep 17 00:00:00 2001 From: Niek Palm Date: Wed, 30 Nov 2022 22:21:41 +0100 Subject: [PATCH 4/4] fix formatter error --- .../lambdas/runners/src/aws/runners.test.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/modules/runners/lambdas/runners/src/aws/runners.test.ts b/modules/runners/lambdas/runners/src/aws/runners.test.ts index 95e6312815..966cc98d7d 100644 --- a/modules/runners/lambdas/runners/src/aws/runners.test.ts +++ b/modules/runners/lambdas/runners/src/aws/runners.test.ts @@ -43,8 +43,7 @@ describe('list instances', () => { }); it('returns a list of instances', async () => { - mockDescribeInstances.promise - .mockReturnValue(mockRunningInstances); + mockDescribeInstances.promise.mockReturnValue(mockRunningInstances); const resp = await listEC2Runners(); expect(resp.length).toBe(1); expect(resp).toContainEqual({ @@ -56,15 +55,13 @@ describe('list instances', () => { }); it('calls EC2 describe instances', async () => { - mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances); + mockDescribeInstances.promise.mockReturnValueOnce(mockRunningInstances); await listEC2Runners(); expect(mockEC2.describeInstances).toBeCalled(); }); it('filters instances on repo name', async () => { - mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances); + mockDescribeInstances.promise.mockReturnValueOnce(mockRunningInstances); await listEC2Runners({ runnerType: 'Repo', runnerOwner: REPO_NAME, environment: undefined }); expect(mockEC2.describeInstances).toBeCalledWith({ Filters: [ @@ -77,8 +74,7 @@ describe('list instances', () => { }); it('filters instances on org name', async () => { - mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances); + mockDescribeInstances.promise.mockReturnValueOnce(mockRunningInstances); await listEC2Runners({ runnerType: 'Org', runnerOwner: ORG_NAME, environment: undefined }); expect(mockEC2.describeInstances).toBeCalledWith({ Filters: [ @@ -91,8 +87,7 @@ describe('list instances', () => { }); it('filters instances on environment', async () => { - mockDescribeInstances.promise - .mockReturnValueOnce(mockRunningInstances); + mockDescribeInstances.promise.mockReturnValueOnce(mockRunningInstances); await listEC2Runners({ environment: ENVIRONMENT }); expect(mockEC2.describeInstances).toBeCalledWith({ Filters: [