Skip to content

Commit fc16b67

Browse files
fix wrong execution job on DELETE API - for master (#705)
* fix wrong execution job Co-authored-by: Titakis,Sebastian (BI X) BIX-DE-I <[email protected]>
1 parent b9513bc commit fc16b67

File tree

5 files changed

+59
-11
lines changed

5 files changed

+59
-11
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
- Unknown exception (e.g. existing JIRA project) raised in REST create project endpoint / addProject causes removal of existing projects ([#514](https://github.com/opendevstack/ods-provisioning-app/issues/514))
4040
- Logging in debug level shows too much jwt details ([#486](https://github.com/opendevstack/ods-provisioning-app/issues/486))
4141
- DELETE_COMPONENTS API stores and returns project with deleted quickstarter([#702](https://github.com/opendevstack/ods-provisioning-app/issues/702))
42+
- API DELETE*: wrong jenkins run job (lastExecutionJobs) returned ([#790](https://github.com/opendevstack/ods-provisioning-app/issues/790))
4243

4344
## [3.0] - 2020-08-11
4445

src/main/java/org/opendevstack/provision/controller/ProjectApiController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ public ResponseEntity<Object> deleteComponents(@RequestBody OpenProjectData dele
922922
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error);
923923
} else {
924924
project.removeQuickstartersFromProject(deletableComponents.getQuickstarters());
925+
project.setLastExecutionJobs(deletableComponents.getLastExecutionJobs());
925926
this.directStorage.updateStoredProject(project);
926927
return ResponseEntity.ok(project);
927928
}

src/main/java/org/opendevstack/provision/services/JenkinsPipelineAdapter.java

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -538,12 +538,13 @@ private Map<CLEANUP_LEFTOVER_COMPONENTS, Integer> cleanupWholeProjects(OpenProje
538538

539539
CLEANUP_LEFTOVER_COMPONENTS objectType = CLEANUP_LEFTOVER_COMPONENTS.PLTF_PROJECT;
540540
// Note: the secret passed here is the corresponding to the ODS CD webhook proxy
541-
return runDeleteAdminJob(
541+
return runDeleteAdminJobAndSetAsLastExecutionJobToProject(
542542
deleteProjectAdminJob,
543543
project.getProjectKey(),
544544
openshiftJenkinsTriggerSecret,
545545
componentId,
546-
objectType);
546+
objectType,
547+
project);
547548
}
548549

549550
logger.debug("Project {} not affected from cleanup", project.getProjectKey());
@@ -558,13 +559,14 @@ private Map<CLEANUP_LEFTOVER_COMPONENTS, Integer> cleanupQuickstartersOnly(
558559
.map(q1 -> q1.get(OpenProjectData.COMPONENT_ID_KEY))
559560
.map(
560561
component ->
561-
runDeleteAdminJob(
562+
runDeleteAdminJobAndSetAsLastExecutionJobToProject(
562563
jenkinsPipelineProperties.getDeleteComponentsQuickstarter(),
563564
project.getProjectKey(),
564565
project.getWebhookProxySecret(), // Note: the secret passed here is the
565566
// corresponding to the project CD webhook proxy
566567
component,
567-
CLEANUP_LEFTOVER_COMPONENTS.QUICKSTARTER))
568+
CLEANUP_LEFTOVER_COMPONENTS.QUICKSTARTER,
569+
project))
568570
.filter(m -> !m.isEmpty())
569571
.mapToInt(e -> 1)
570572
.sum();
@@ -578,12 +580,14 @@ private Map<CLEANUP_LEFTOVER_COMPONENTS, Integer> cleanupQuickstartersOnly(
578580
}
579581
}
580582

581-
private Map<CLEANUP_LEFTOVER_COMPONENTS, Integer> runDeleteAdminJob(
582-
Quickstarter adminQuickstarter,
583-
String projectKey,
584-
String webhookProxySecret,
585-
String componentId,
586-
CLEANUP_LEFTOVER_COMPONENTS objectType) {
583+
private Map<CLEANUP_LEFTOVER_COMPONENTS, Integer>
584+
runDeleteAdminJobAndSetAsLastExecutionJobToProject(
585+
Quickstarter adminQuickstarter,
586+
String projectKey,
587+
String webhookProxySecret,
588+
String componentId,
589+
CLEANUP_LEFTOVER_COMPONENTS objectType,
590+
OpenProjectData project) {
587591
String projectId = projectKey.toLowerCase();
588592
Map<String, String> options = buildAdminJobOptions(projectId, componentId);
589593
Job job = new Job(adminQuickstarter, odsGitRef);
@@ -592,14 +596,26 @@ private Map<CLEANUP_LEFTOVER_COMPONENTS, Integer> runDeleteAdminJob(
592596
logger.debug("Calling job {} for project {}", job.getId(), projectKey);
593597
ExecutionsData data = prepareAndExecuteJob(job, options, webhookProxySecret);
594598
logger.info("Result of cleanup: {}", data.toString());
599+
600+
if (project.getLastExecutionJobs() == null) {
601+
project.setLastExecutionJobs(new ArrayList<ExecutionJob>());
602+
}
603+
604+
ExecutionJob result = new ExecutionJob();
605+
result.setName(data.getJobName());
606+
result.setUrl(data.getPermalink());
607+
608+
project.getLastExecutionJobs().add(result);
609+
595610
return Collections.emptyMap();
596611
} catch (RuntimeException | IOException e) {
597612
logger.debug(
598613
"Could not start job {} for project {}/component {} : {}",
599614
job.getId(),
600615
projectKey,
601616
componentId,
602-
e.getMessage());
617+
e.getMessage(),
618+
e);
603619
Map<CLEANUP_LEFTOVER_COMPONENTS, Integer> leftovers = new HashMap<>();
604620

605621
leftovers.put(objectType, 1);

src/test/java/org/opendevstack/provision/controller/E2EProjectAPIControllerTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,17 @@ public void testQuickstarterProvisionOnNewOpenProjectInclDeleteSingleComponent()
787787
// repos MUST stay untouched
788788
assertEquals(currentRepositorySize, resultProject.getRepositories().size());
789789

790+
// verify delete qucikstarter job is now as last execution
791+
assertTrue(
792+
resultProject.getLastExecutionJobs() != null
793+
&& resultProject.getLastExecutionJobs().get(0) != null);
794+
795+
String deleteComponentJob = resultProject.getLastExecutionJobs().get(0).getUrl();
796+
797+
assertNotEquals(
798+
createdProjectIncludingQuickstarters.getLastExecutionJobs().get(0).getUrl(),
799+
deleteComponentJob);
800+
790801
// retrieve the project again
791802
resultProjectGetResponse =
792803
mockMvc
@@ -808,6 +819,14 @@ public void testQuickstarterProvisionOnNewOpenProjectInclDeleteSingleComponent()
808819
// verify old (before cleaning) quickstarters are now -1
809820
assertEquals((currentQuickstarterSize - 1), resultProject.getQuickstarters().size());
810821
assertTrue(resultProject.getQuickstarters().isEmpty());
822+
823+
// verify delete job is persisted
824+
assertTrue(
825+
resultProject.getLastExecutionJobs() != null
826+
&& resultProject.getLastExecutionJobs().get(0) != null);
827+
828+
// verify delete qucikstarter job is now as last execution
829+
assertEquals(resultProject.getLastExecutionJobs().get(0).getUrl(), deleteComponentJob);
811830
}
812831

813832
private void mockExecuteAdminJob(String namespace, String jobName, String prefix)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.opendevstack.provision.model;
2+
3+
import static org.junit.jupiter.api.Assertions.*;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
class OpenProjectDataTest {
8+
9+
@Test
10+
void removeQuickstartersFromProject() {}
11+
}

0 commit comments

Comments
 (0)