Skip to content

Commit 5706cfa

Browse files
committed
Fix pullrequest environment deletes in api
1 parent 8a05f35 commit 5706cfa

File tree

4 files changed

+34
-81
lines changed

4 files changed

+34
-81
lines changed

services/api/src/resources/environment/resolvers.js

+30-4
Original file line numberDiff line numberDiff line change
@@ -530,16 +530,42 @@ const deleteEnvironment = async (
530530
return 'success';
531531
}
532532

533-
const data = {
533+
let data = {
534534
projectName: project.name,
535-
branch: name,
536535
type: environment.deployType,
537536
forceDeleteProductionEnvironment: role === 'admin',
538537
};
539538

539+
const meta = {
540+
projectName: data.projectName,
541+
environmentName: environment.name,
542+
};
543+
544+
switch (environment.deployType) {
545+
case 'branch':
546+
data = {
547+
...data,
548+
branch: name,
549+
};
550+
break;
551+
552+
case 'pullrequest':
553+
data = {
554+
...data,
555+
pullrequestNumber: environment.name.replace('pr-', ''),
556+
};
557+
break;
558+
559+
default:
560+
sendToLagoonLogs('error', data.projectName, '', 'api:deleteEnvironment:error', meta,
561+
`*[${data.projectName}]* Unknown deploy type ${environment.deployType} \`${environment.name}\``
562+
);
563+
return `Error: unknown deploy type ${environment.deployType}`;
564+
}
565+
540566
await createRemoveTask(data);
541-
sendToLagoonLogs('info', data.projectName, '', 'api:deleteEnvironment', {},
542-
`*[${data.projectName}]* Deleting environment \`${data.branch}\``
567+
sendToLagoonLogs('info', data.projectName, '', 'api:deleteEnvironment', meta,
568+
`*[${data.projectName}]* Deleting environment \`${environment.name}\``
543569
);
544570

545571
return 'success';

services/rest2tasks/src/index.js

-66
Original file line numberDiff line numberDiff line change
@@ -143,72 +143,6 @@ app.post('/pullrequest/deploy', async (req, res) => {
143143

144144
})
145145

146-
147-
app.post('/pullrequest/remove', async (req, res) => {
148-
149-
req.checkBody({
150-
'projectName': {
151-
notEmpty: true,
152-
matches: {
153-
options: [/^[a-zA-Z0-9-_]+$/],
154-
errorMessage: 'projectName must be defined and must only contain alphanumeric, dashes and underline'
155-
},
156-
},
157-
'pullrequestNumber': {
158-
notEmpty: true,
159-
isInt: {},
160-
matches: {
161-
errorMessage: 'pullrequestNumber must be defined and a number'
162-
},
163-
}
164-
});
165-
166-
const result = await req.getValidationResult()
167-
168-
if (!result.isEmpty()) {
169-
res.status(400).send('There have been validation errors: ' + util.inspect(result.mapped()));
170-
return;
171-
}
172-
173-
const data = {
174-
projectName: req.body.projectName,
175-
pullrequestNumber: req.body.pullrequestNumber,
176-
type: 'pullrequest'
177-
}
178-
179-
const meta = {
180-
projectName: data.projectName,
181-
pullrequestNumber: data.pullrequestNumber
182-
}
183-
184-
try {
185-
const taskResult = await createRemoveTask(data);
186-
187-
sendToLagoonLogs('info', data.projectName, '', `rest:pullrequest:remove`, meta,
188-
`*[${data.projectName}]* REST remove trigger \`${data.pullrequestNumber}\``
189-
)
190-
191-
res.status(200).type('json').send({ "ok": "true", "message": taskResult})
192-
return;
193-
} catch (error) {
194-
switch (error.name) {
195-
case "ProjectNotFound":
196-
case "ActiveSystemsNotFound":
197-
case "UnknownActiveSystem":
198-
res.status(404).type('json').send({ "ok": "false", "message": error.message})
199-
return;
200-
break;
201-
202-
default:
203-
logger.error(error)
204-
res.status(500).type('json').send({ "ok": "false", "message": `Internal Error: ${error}`})
205-
return;
206-
break;
207-
}
208-
}
209-
210-
})
211-
212146
app.post('/deploy', async (req, res) => {
213147

214148
req.checkBody({

tests/tasks/rest/pullrequest-remove.yaml

-8
This file was deleted.

tests/tests/rest/pullrequest.yaml

+4-3
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,14 @@
107107
expected_pr_head_sha: "{{ pr_2nd_commit_hash }}"
108108
expected_pr_title: "PR Title - UPDATE"
109109

110-
- name: "{{ testname }} - rest pull request delete"
110+
- name: "{{ testname }} - api deleteEnvironment on {{ project }}, which should remove all resources"
111111
hosts: localhost
112112
serial: 1
113113
vars:
114-
git_pr_number: "1"
114+
project: "{{ project }}"
115+
branch: "pr-1"
115116
tasks:
116-
- include: ../../tasks/rest/pullrequest-remove.yaml
117+
- include: ../../tasks/api/remove.yaml
117118

118119
- name: "{{ testname }} - check if site for project does not exist anymore"
119120
hosts: localhost

0 commit comments

Comments
 (0)