Skip to content

Commit 7e7d6b3

Browse files
authored
Merge pull request #110 from dwasinge/clear-webhooks
Clear Webhooks on Reload
2 parents 06cdcfd + 0e7aecc commit 7e7d6b3

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

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

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ public class ConfigService {
4747
@ConfigProperty(name = "config.gitlab.ref", defaultValue = "master")
4848
String gitRef;
4949

50+
@ConfigProperty(name = "config.reload")
51+
boolean reloadConfig;
52+
5053
ConfigMap hookConfigMap;
5154
ConfigMap configurationConfigMap;
5255

@@ -74,8 +77,10 @@ public class ConfigService {
7477
*/
7578
@Scheduled(every = "30s")
7679
void reloadConfigMapData() {
77-
loadWebHookData();
78-
loadConfigurationData();
80+
if(reloadConfig) {
81+
loadWebHookData();
82+
loadConfigurationData();
83+
}
7984
}
8085

8186
/**
@@ -87,17 +92,16 @@ void loadWebHookData() {
8792
// create config map
8893
if (null == hookConfigMap) {
8994
hookConfigMap = ConfigMap.builder().filePath(webHooksFile).build();
90-
LOGGER.trace("setting webhook config map: {}", hookConfigMap);
95+
LOGGER.debug("setting webhook config map: {}", hookConfigMap);
9196
}
9297

9398
// load content from file
9499
if (hookConfigMap.updateMountedFile()) {
95-
LOGGER.trace("loading latest version of webhook file");
96100

97101
// set hook config as list
98102
if (hookConfigMap.getContent().isPresent()) {
99103
hookConfigList = marshaller.fromYaml(hookConfigMap.getContent().get(), HookConfig.class);
100-
LOGGER.debug("Hook Config List {}", hookConfigList);
104+
LOGGER.debug("Loaded Hook Config List {}", hookConfigList);
101105
}
102106

103107
// update web hooks
@@ -119,14 +123,20 @@ void updateWebHooksInGitLab() {
119123
projects.stream().filter(project -> project.getName().equals(IAC))
120124
.filter(project -> !engagementIsArchived(project)).forEach(project -> {
121125

126+
Integer projectId = project.getId();
127+
122128
LOGGER.debug("updating project: {}",
123-
(null != project.getNamespace()) ? project.getNamespace().getFullPath() : project.getId());
129+
(null != project.getNamespace()) ? project.getNamespace().getFullPath() : projectId);
130+
131+
// remove existing webhooks for project
132+
hookService.deleteProjectHooks(projectId);
124133

134+
// create hooks from configuration
125135
hookConfigs.stream().forEach(hookC -> {
126-
Hook hook = Hook.builder().projectId(project.getId()).pushEvents(true).url(hookC.getBaseUrl())
136+
Hook hook = Hook.builder().projectId(projectId).pushEvents(true).url(hookC.getBaseUrl())
127137
.token(hookC.getToken()).build();
128-
LOGGER.debug("\tupdating webhook {}", hook.getUrl());
129-
Response response = hookService.createOrUpdateProjectHook(project.getId(), hook);
138+
LOGGER.debug("\tcreating webhook {}", hook.getUrl());
139+
Response response = hookService.createProjectHook(projectId, hook);
130140
LOGGER.debug("\t\tservice response code: {}", response.getStatus());
131141
response.close();
132142

src/main/resources/application.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ webhook.default.token=${WEBHOOK_DEFAULT_TOKEN:tolkien}
3232
config.gitlab.ref=${CONFIG_GITLAB_REF:master}
3333
commit.page.size=100
3434
commit.filter.list=${COMMIT_FILTERED_EMAIL_LIST:[email protected]}
35+
config.reload=${CONFIG_RELOAD:false}
3536

3637
# engagements
3738
engagements.repository.id=${ENGAGEMENTS_REPOSITORY_ID:2}

src/test/java/com/redhat/labs/lodestar/service/ConfigServiceTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class ConfigServiceTest {
3333
service.projectService = projectService;
3434
service.engagementRepositoryId = 0;
3535

36+
service.reloadConfig = true;
3637
service.reloadConfigMapData();
3738
File config = service.getConfigFile();
3839

@@ -94,6 +95,7 @@ class ConfigServiceTest {
9495
service.projectService = projectService;
9596
service.engagementRepositoryId = 0;
9697

98+
service.reloadConfig = true;
9799
service.reloadConfigMapData();
98100
List<HookConfig> hookConfigList = service.getHookConfig();
99101

0 commit comments

Comments
 (0)