Skip to content

Commit 87be725

Browse files
authored
Merge pull request #123 from dwasinge/rest-retry
GitLab Rest Client Retry
2 parents 1df312a + 1d6bb00 commit 87be725

File tree

5 files changed

+36
-26
lines changed

5 files changed

+36
-26
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@
5555
<groupId>io.quarkus</groupId>
5656
<artifactId>quarkus-rest-client</artifactId>
5757
</dependency>
58+
<!-- Fault Tolerance -->
59+
<dependency>
60+
<groupId>io.quarkus</groupId>
61+
<artifactId>quarkus-smallrye-fault-tolerance</artifactId>
62+
</dependency>
5863
<!-- Templates -->
5964
<dependency>
6065
<groupId>io.quarkus</groupId>

src/main/java/com/redhat/labs/lodestar/rest/client/GitLabService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import javax.ws.rs.QueryParam;
1515
import javax.ws.rs.core.Response;
1616

17+
import org.eclipse.microprofile.faulttolerance.Retry;
1718
import org.eclipse.microprofile.rest.client.annotation.ClientHeaderParam;
1819
import org.eclipse.microprofile.rest.client.annotation.RegisterProvider;
1920
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
@@ -29,6 +30,7 @@
2930
import com.redhat.labs.lodestar.models.gitlab.ProjectTransfer;
3031
import com.redhat.labs.lodestar.resources.filter.Logged;
3132

33+
@Retry(maxRetries = 5, delay = 2000)
3234
@Path("/api/v4")
3335
@RegisterRestClient(configKey = "gitlab.api")
3436
@RegisterProvider(value = GitLabServiceResponseMapper.class, priority = 50)

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

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -121,32 +121,30 @@ void updateWebHooksInGitLab() {
121121
List<HookConfig> hookConfigs = getHookConfig();
122122
List<Project> projects = projectService.getProjectsByGroup(engagementRepositoryId, true);
123123
LOGGER.debug("number of projects found: {}", projects.size());
124-
projects.stream().filter(project -> project.getName().equals(IAC))
125-
.forEach(project -> {
124+
projects.stream().filter(project -> project.getName().equals(IAC)).forEach(project -> {
126125

127-
Integer projectId = project.getId();
126+
Integer projectId = project.getId();
128127

129-
LOGGER.debug("updating project: {}",
130-
(null != project.getNamespace()) ? project.getNamespace().getFullPath() : projectId);
128+
LOGGER.debug("updating project: {}",
129+
(null != project.getNamespace()) ? project.getNamespace().getFullPath() : projectId);
131130

132-
// remove existing webhooks for project
133-
hookService.deleteProjectHooks(projectId);
134-
135-
boolean isArchived = isEngagementArchived(project);
131+
// remove existing webhooks for project
132+
hookService.deleteProjectHooks(projectId);
136133

137-
// create hooks from configuration
138-
hookConfigs.stream().filter(config -> config.isEnabledAfterArchive() || !isArchived)
139-
.forEach(hookC -> {
140-
Hook hook = Hook.builder().projectId(projectId).pushEvents(true).url(hookC.getBaseUrl())
141-
.token(hookC.getToken()).build();
142-
LOGGER.debug("\tcreating webhook {}", hook.getUrl());
143-
Response response = hookService.createProjectHook(projectId, hook);
144-
LOGGER.debug("\t\tservice response code: {}", response.getStatus());
145-
response.close();
134+
boolean isArchived = isEngagementArchived(project);
146135

147-
});
136+
// create hooks from configuration
137+
hookConfigs.stream().filter(config -> config.isEnabledAfterArchive() || !isArchived).forEach(hookC -> {
138+
Hook hook = Hook.builder().projectId(projectId).pushEvents(true).url(hookC.getBaseUrl())
139+
.token(hookC.getToken()).build();
140+
LOGGER.debug("\tcreating webhook {}", hook.getUrl());
141+
Response response = hookService.createProjectHook(projectId, hook);
142+
LOGGER.debug("\t\tservice response code: {}", response.getStatus());
143+
response.close();
148144

149-
});
145+
});
146+
147+
});
150148

151149
}
152150

@@ -193,11 +191,15 @@ boolean isEngagementArchived(Project project) {
193191
*/
194192
public void createWebhooksForEnagement(Engagement engagement) {
195193

194+
LOGGER.debug("creating webhooks for engagement {}:{}:{}", engagement.getCustomerName(),
195+
engagement.getProjectName(), engagement.getProjectId());
196196
List<HookConfig> hookConfigs = getHookConfig();
197+
LOGGER.debug("\tconfigured hooks {}", hookConfigs);
197198
hookConfigs.stream().forEach(hookC -> {
198199
Hook hook = Hook.builder().projectId(engagement.getProjectId()).pushEvents(true).url(hookC.getBaseUrl())
199200
.token(hookC.getToken()).build();
200-
hookService.createProjectHook(engagement.getProjectId(), hook);
201+
LOGGER.debug("\t\tadding webhook {} to project {}", hook.getUrl(), engagement.getProjectId());
202+
hookService.createProjectHook(engagement.getProjectId(), hook);
201203
});
202204

203205
}
@@ -217,8 +219,7 @@ void loadConfigurationData() {
217219
// create file
218220
Optional<String> content = configurationConfigMap.getContent();
219221
if (content.isPresent()) {
220-
configuration = File.builder().filePath(configFile).content(content.get())
221-
.build();
222+
configuration = File.builder().filePath(configFile).content(content.get()).build();
222223
}
223224

224225
}

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ Group processNameChange(String newName, Integer parentId, Optional<Group> group,
162162
.build();
163163

164164
// udpate group in Git
165+
LOGGER.debug("updating name and path of existing group to {}", modified);
165166
return groupService.updateGitLabGroup(existingGroup.getId(), modified).orElseThrow(
166167
() -> new WebApplicationException("failed to update group name/path for " + group, 500));
167168

@@ -177,7 +178,7 @@ Group processNameChange(String newName, Integer parentId, Optional<Group> group,
177178
}
178179

179180
Group createGroup(String name, Integer parentId) {
180-
181+
LOGGER.debug("creating new group {} for parent {}", name, parentId);
181182
return groupService
182183
.createGitLabGroup(Group.builder().name(name).path(GitLabPathUtils.generateValidPath(name))
183184
.parentId(parentId).build())
@@ -198,6 +199,7 @@ Optional<Project> createOrUpdateProject(Optional<Project> project, Optional<Inte
198199
Integer parentId) {
199200

200201
if (project.isEmpty()) {
202+
LOGGER.debug("creating new project for parent id {}", parentId);
201203
return createProject(parentId);
202204
}
203205

@@ -214,12 +216,13 @@ Optional<Project> createOrUpdateProject(Optional<Project> project, Optional<Inte
214216
toMove.setMovedOrDeleted(true);
215217

216218
// move project to new parent/group id
219+
LOGGER.debug("moving project {} to group id {}", toMove.getNamespace(), newParentId);
217220
return projectService.transferProject(projectId, newParentId);
218221

219222
}
220223

221224
Optional<Project> createProject(Integer parentId) {
222-
225+
LOGGER.debug("debug creating project for parent id {}", parentId);
223226
return projectService.createProject(
224227
Project.builder().name(ENGAGEMENT_PROJECT_NAME).visibility("private").namespaceId(parentId).build());
225228

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import java.util.Arrays;
1212
import java.util.List;
13-
import java.util.Optional;
1413

1514
import javax.inject.Inject;
1615
import javax.ws.rs.WebApplicationException;

0 commit comments

Comments
 (0)