Skip to content

Commit c80615e

Browse files
committed
Rename scale-runners to scale-up
1 parent 6af4656 commit c80615e

File tree

7 files changed

+40
-60
lines changed

7 files changed

+40
-60
lines changed

modules/runners/lambdas/scale-runners/src/lambda.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { handle } from './scale-runners/handler';
1+
import { scaleUp } from './scale-runners/scale-up';
22
import { scaleDown } from './scale-runners/scale-down';
33
import { SQSEvent } from 'aws-lambda';
44

55
module.exports.handler = async (event: SQSEvent, context: any, callback: any) => {
66
console.log(event);
77
try {
88
for (const e of event.Records) {
9-
await handle(e.eventSource, JSON.parse(e.body));
9+
await scaleUp(e.eventSource, JSON.parse(e.body));
1010
}
1111
return callback(null);
1212
} catch (e) {

modules/runners/lambdas/scale-runners/src/scale-runners/handler.test.ts renamed to modules/runners/lambdas/scale-runners/src/scale-runners/scale-up.test.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { mocked } from 'ts-jest/utils';
2-
import { ActionRequestMessage, handle } from './handler';
2+
import { ActionRequestMessage, scaleUp } from './scale-up';
33

44
import { createAppAuth } from '@octokit/auth-app';
55
import { Octokit } from '@octokit/rest';
@@ -30,7 +30,7 @@ const TEST_DATA: ActionRequestMessage = {
3030
installationId: 2,
3131
};
3232

33-
describe('handler', () => {
33+
describe('scaleUp', () => {
3434
beforeEach(() => {
3535
process.env.GITHUB_APP_KEY_BASE64 = 'TEST_CERTIFICATE_DATA';
3636
process.env.GITHUB_APP_ID = '1337';
@@ -64,11 +64,11 @@ describe('handler', () => {
6464

6565
it('ignores non-sqs events', async () => {
6666
expect.assertions(1);
67-
expect(handle('aws:s3', TEST_DATA)).rejects.toEqual(Error('Cannot handle non-SQS events!'));
67+
expect(scaleUp('aws:s3', TEST_DATA)).rejects.toEqual(Error('Cannot handle non-SQS events!'));
6868
});
6969

7070
it('checks queued workflows', async () => {
71-
await handle('aws:sqs', TEST_DATA);
71+
await scaleUp('aws:sqs', TEST_DATA);
7272
expect(mockOctokit.actions.listRepoWorkflowRuns).toBeCalledWith({
7373
owner: TEST_DATA.repositoryOwner,
7474
repo: TEST_DATA.repositoryName,
@@ -80,7 +80,7 @@ describe('handler', () => {
8080
mockOctokit.actions.listRepoWorkflowRuns.mockImplementation(() => ({
8181
data: { total_count: 0, runners: [] },
8282
}));
83-
await handle('aws:sqs', TEST_DATA);
83+
await scaleUp('aws:sqs', TEST_DATA);
8484
expect(listRunners).not.toBeCalled();
8585
});
8686

@@ -90,7 +90,7 @@ describe('handler', () => {
9090
});
9191

9292
it('gets the current org level runners', async () => {
93-
await handle('aws:sqs', TEST_DATA);
93+
await scaleUp('aws:sqs', TEST_DATA);
9494
expect(listRunners).toBeCalledWith({
9595
environment: 'unit-test-environment',
9696
repoName: undefined,
@@ -99,20 +99,20 @@ describe('handler', () => {
9999

100100
it('does not create a token when maximum runners has been reached', async () => {
101101
process.env.RUNNERS_MAXIMUM_COUNT = '1';
102-
await handle('aws:sqs', TEST_DATA);
102+
await scaleUp('aws:sqs', TEST_DATA);
103103
expect(mockOctokit.actions.createRegistrationTokenForOrg).not.toBeCalled();
104104
});
105105

106106
it('creates a token when maximum runners has not been reached', async () => {
107-
await handle('aws:sqs', TEST_DATA);
107+
await scaleUp('aws:sqs', TEST_DATA);
108108
expect(mockOctokit.actions.createRegistrationTokenForOrg).toBeCalled();
109109
expect(mockOctokit.actions.createRegistrationTokenForOrg).toBeCalledWith({
110110
org: TEST_DATA.repositoryOwner,
111111
});
112112
});
113113

114114
it('creates a runner with correct config', async () => {
115-
await handle('aws:sqs', TEST_DATA);
115+
await scaleUp('aws:sqs', TEST_DATA);
116116
expect(createRunner).toBeCalledWith({
117117
environment: 'unit-test-environment',
118118
runnerConfig: `--url https://github.com/${TEST_DATA.repositoryOwner} --token 1234abcd`,
@@ -128,7 +128,7 @@ describe('handler', () => {
128128
});
129129

130130
it('gets the current repo level runners', async () => {
131-
await handle('aws:sqs', TEST_DATA);
131+
await scaleUp('aws:sqs', TEST_DATA);
132132
expect(listRunners).toBeCalledWith({
133133
environment: 'unit-test-environment',
134134
repoName: `${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName}`,
@@ -137,20 +137,20 @@ describe('handler', () => {
137137

138138
it('does not create a token when maximum runners has been reached', async () => {
139139
process.env.RUNNERS_MAXIMUM_COUNT = '1';
140-
await handle('aws:sqs', TEST_DATA);
140+
await scaleUp('aws:sqs', TEST_DATA);
141141
expect(mockOctokit.actions.createRegistrationTokenForRepo).not.toBeCalled();
142142
});
143143

144144
it('creates a token when maximum runners has not been reached', async () => {
145-
await handle('aws:sqs', TEST_DATA);
145+
await scaleUp('aws:sqs', TEST_DATA);
146146
expect(mockOctokit.actions.createRegistrationTokenForRepo).toBeCalledWith({
147147
owner: TEST_DATA.repositoryOwner,
148148
repo: TEST_DATA.repositoryName,
149149
});
150150
});
151151

152152
it('creates a runner with correct config', async () => {
153-
await handle('aws:sqs', TEST_DATA);
153+
await scaleUp('aws:sqs', TEST_DATA);
154154
expect(createRunner).toBeCalledWith({
155155
environment: 'unit-test-environment',
156156
runnerConfig: `--url https://github.com/${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName} --token 1234abcd`,

modules/runners/lambdas/scale-runners/src/scale-runners/handler.ts renamed to modules/runners/lambdas/scale-runners/src/scale-runners/scale-up.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ async function createInstallationClient(githubAppAuth: AppAuth): Promise<Octokit
3232
return new Octokit({ auth: auth.token });
3333
}
3434

35-
export const handle = async (eventSource: string, payload: ActionRequestMessage): Promise<void> => {
35+
export const scaleUp = async (eventSource: string, payload: ActionRequestMessage): Promise<void> => {
3636
if (eventSource !== 'aws:sqs') throw Error('Cannot handle non-SQS events!');
3737
const enableOrgLevel = yn(process.env.ENABLE_ORGANIZATION_RUNNERS, { default: true });
3838
const maximumRunners = parseInt(process.env.RUNNERS_MAXIMUM_COUNT || '3');

modules/runners/policies-lambda-common.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ resource "aws_iam_policy" "lambda_logging" {
1818

1919
resource "aws_iam_policy_attachment" "lambda_logging" {
2020
name = "${var.environment}-lambda-logging"
21-
roles = [aws_iam_role.scale_down.name, aws_iam_role.scale_runners_lambda.name]
21+
roles = [aws_iam_role.scale_down.name, aws_iam_role.scale_up.name]
2222
policy_arn = aws_iam_policy.lambda_logging.arn
2323
}

modules/runners/policies/lambda-scale-runners.json

Lines changed: 0 additions & 14 deletions
This file was deleted.

modules/runners/policies/lambda-scale-up.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@
2020
"Effect": "Allow",
2121
"Action": ["ssm:PutParameter"],
2222
"Resource": "*"
23+
},
24+
{
25+
"Effect": "Allow",
26+
"Action": [
27+
"sqs:ReceiveMessage",
28+
"sqs:GetQueueAttributes",
29+
"sqs:DeleteMessage"
30+
],
31+
"Resource": "${sqs_arn}"
2332
}
2433
]
2534
}
Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
resource "aws_lambda_function" "scale_runners_lambda" {
1+
resource "aws_lambda_function" "scale_up" {
22
filename = "${path.module}/lambdas/scale-runners/scale-runners.zip"
33
source_code_hash = filebase64sha256("${path.module}/lambdas/scale-runners/scale-runners.zip")
4-
function_name = "${var.environment}-scale-runners"
5-
role = aws_iam_role.scale_runners_lambda.arn
6-
handler = "index.handler"
4+
function_name = "${var.environment}-scale-up"
5+
role = aws_iam_role.scale_up.arn
6+
handler = "index.scaleUp"
77
runtime = "nodejs12.x"
88
timeout = 60
99

@@ -22,52 +22,37 @@ resource "aws_lambda_function" "scale_runners_lambda" {
2222
}
2323
}
2424

25-
resource "aws_lambda_event_source_mapping" "scale_runners_lambda" {
25+
resource "aws_lambda_event_source_mapping" "scale_up" {
2626
event_source_arn = var.sqs.arn
27-
function_name = aws_lambda_function.scale_runners_lambda.arn
27+
function_name = aws_lambda_function.scale_up.arn
2828
}
2929

3030
resource "aws_lambda_permission" "scale_runners_lambda" {
3131
statement_id = "AllowExecutionFromSQS"
3232
action = "lambda:InvokeFunction"
33-
function_name = aws_lambda_function.scale_runners_lambda.function_name
33+
function_name = aws_lambda_function.scale_up.function_name
3434
principal = "sqs.amazonaws.com"
3535
source_arn = var.sqs.arn
3636
}
3737

38-
resource "aws_iam_role" "scale_runners_lambda" {
39-
name = "${var.environment}-action-scale-runners-lambda-role"
38+
resource "aws_iam_role" "scale_up" {
39+
name = "${var.environment}-action-scale-up-lambda-role"
4040
assume_role_policy = data.aws_iam_policy_document.lambda_assume_role_policy.json
4141
}
4242

43-
resource "aws_iam_policy" "scale_runners_lambda_sqs" {
44-
name = "${var.environment}-lambda-scale-runners-sqs-receive-policy"
45-
description = "Lambda scale up sqs policy"
46-
47-
policy = templatefile("${path.module}/policies/lambda-scale-runners.json", {
48-
sqs_arn = var.sqs.arn
49-
})
50-
}
51-
52-
resource "aws_iam_policy_attachment" "scale_runners_lambda_sqs" {
53-
name = "${var.environment}-scale-up-sqs"
54-
roles = [aws_iam_role.scale_runners_lambda.name]
55-
policy_arn = aws_iam_policy.scale_runners_lambda_sqs.arn
56-
}
57-
58-
59-
resource "aws_iam_policy" "scale_runners_lambda" {
43+
resource "aws_iam_policy" "scale_up" {
6044
name = "${var.environment}-lambda-scale-up-policy"
6145
description = "Lambda scale up policy"
6246

6347
policy = templatefile("${path.module}/policies/lambda-scale-up.json", {
6448
arn_runner_instance_role = aws_iam_role.runner.arn
49+
sqs_arn = var.sqs.arn
6550
})
6651
}
6752

68-
resource "aws_iam_policy_attachment" "scale_runners_lambda" {
53+
resource "aws_iam_policy_attachment" "scale_up" {
6954
name = "${var.environment}-scale-up"
70-
roles = [aws_iam_role.scale_runners_lambda.name]
71-
policy_arn = aws_iam_policy.scale_runners_lambda.arn
55+
roles = [aws_iam_role.scale_up.name]
56+
policy_arn = aws_iam_policy.scale_up.arn
7257
}
7358

0 commit comments

Comments
 (0)