Skip to content

Commit acee9e1

Browse files
authored
Merge pull request #118 from mcanoy/archived-projects
allow hooks to be updated after archive if needed
2 parents 7d4913c + a29c908 commit acee9e1

File tree

7 files changed

+54
-4
lines changed

7 files changed

+54
-4
lines changed

src/main/java/com/redhat/labs/lodestar/models/ConfigMap.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import java.nio.file.attribute.FileTime;
99
import java.util.Optional;
1010

11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
1114
import lombok.AllArgsConstructor;
1215
import lombok.Builder;
1316
import lombok.Data;
@@ -18,6 +21,7 @@
1821
@NoArgsConstructor
1922
@AllArgsConstructor
2023
public class ConfigMap {
24+
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigMap.class);
2125

2226
private Path path;
2327
private String filePath;
@@ -43,6 +47,7 @@ public boolean updateMountedFile() {
4347
content = Optional.of(new String(Files.readAllBytes(path), StandardCharsets.UTF_8));
4448
return true;
4549
} catch (IOException e) {
50+
LOGGER.error("Error updating mounted file %{} {} {} ", lastModifiedTime, path, filePath);
4651
content = Optional.empty();
4752
}
4853

@@ -68,6 +73,7 @@ private boolean isModified() {
6873
return true;
6974
}
7075
} catch (IOException e) {
76+
LOGGER.error("Error calculating isModified %{} {}", lastModifiedTime, path);
7177
return false;
7278
}
7379

src/main/java/com/redhat/labs/lodestar/models/gitlab/HookConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,11 @@ public class HookConfig {
2626

2727
@JsonbProperty("token")
2828
private String token;
29+
30+
/**
31+
* Should the webhook be enabled after an engagement is archived
32+
*/
33+
@JsonbProperty("enabledAfterArchive")
34+
private boolean enabledAfterArchive;
2935

3036
}

src/main/java/com/redhat/labs/lodestar/service/ConfigService.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ void updateWebHooksInGitLab() {
122122
List<Project> projects = projectService.getProjectsByGroup(engagementRepositoryId, true);
123123
LOGGER.debug("number of projects found: {}", projects.size());
124124
projects.stream().filter(project -> project.getName().equals(IAC))
125-
.filter(project -> !engagementIsArchived(project)).forEach(project -> {
125+
.forEach(project -> {
126126

127127
Integer projectId = project.getId();
128128

@@ -131,9 +131,12 @@ void updateWebHooksInGitLab() {
131131

132132
// remove existing webhooks for project
133133
hookService.deleteProjectHooks(projectId);
134+
135+
boolean isArchived = isEngagementArchived(project);
134136

135137
// create hooks from configuration
136-
hookConfigs.stream().forEach(hookC -> {
138+
hookConfigs.stream().filter(config -> config.isEnabledAfterArchive() || !isArchived)
139+
.forEach(hookC -> {
137140
Hook hook = Hook.builder().projectId(projectId).pushEvents(true).url(hookC.getBaseUrl())
138141
.token(hookC.getToken()).build();
139142
LOGGER.debug("\tcreating webhook {}", hook.getUrl());
@@ -154,7 +157,7 @@ void updateWebHooksInGitLab() {
154157
* @param project
155158
* @return
156159
*/
157-
boolean engagementIsArchived(Project project) {
160+
boolean isEngagementArchived(Project project) {
158161

159162
Optional<Engagement> engagement = engagementService.getEngagement(project, false, false);
160163
if (engagement.isPresent() && null != engagement.get().getArchiveDate()) {

src/test/java/com/redhat/labs/lodestar/mocks/MockGitLabService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ public Response createProjectHook(Integer projectId, Hook hook) {
294294
return Response.status(Status.CREATED).build();
295295
}
296296

297-
return null;
297+
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
298298
}
299299

300300
@Override
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.redhat.labs.lodestar.model;
2+
3+
import java.util.ArrayList;
4+
5+
import org.junit.jupiter.api.Assertions;
6+
import org.junit.jupiter.api.Test;
7+
8+
import com.redhat.labs.lodestar.models.gitlab.Project;
9+
10+
class ProjectTest {
11+
12+
@Test
13+
void testPreserve() {
14+
15+
Project project = new Project();
16+
Assertions.assertNull(project.getTagList());
17+
18+
project.setTagList(new ArrayList<>());
19+
Assertions.assertEquals(0, project.getTagList().size());
20+
21+
project.preserve();
22+
23+
Assertions.assertEquals(1, project.getTagList().size());
24+
Assertions.assertEquals("DO_NOT_DELETE", project.getTagList().get(0));
25+
26+
//Handle 2nd call properly
27+
project.preserve();
28+
29+
Assertions.assertEquals(1, project.getTagList().size());
30+
Assertions.assertEquals("DO_NOT_DELETE", project.getTagList().get(0));
31+
}
32+
}

src/test/java/com/redhat/labs/lodestar/resource/ConfigResourceTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,15 @@ void testGetHookFileSuccess() {
122122
.body(is("\n[\n" +
123123
" {\n" +
124124
" \"baseUrl\": \"https://labs.com/webhooks/\",\n" +
125+
" \"enabledAfterArchive\": false,\n" +
125126
" \"name\": \"labs\",\n" +
126127
" \"pushEvent\": true,\n" +
127128
" \"pushEventsBranchFilter\": \"master\",\n" +
128129
" \"token\": \"abc\"\n" +
129130
" },\n" +
130131
" {\n" +
131132
" \"baseUrl\": \"https://rht.com/hooks/\",\n" +
133+
" \"enabledAfterArchive\": true,\n" +
132134
" \"name\": \"rht\",\n" +
133135
" \"pushEvent\": true,\n" +
134136
" \"pushEventsBranchFilter\": \"master\",\n" +

src/test/resources/webhooks.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
pushEvent: true
1010
pushEventsBranchFilter: master
1111
token: def
12+
enabledAfterArchive: true

0 commit comments

Comments
 (0)