diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/service/OpenCodeGitlabApi.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/service/OpenCodeGitlabApi.kt index 8f761ee847abf241b4242ba8ae324b85ba41dfc7..4e9566eb0adcda8f301b6598f5e40b468eb5302b 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/service/OpenCodeGitlabApi.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/gitlab/service/OpenCodeGitlabApi.kt @@ -23,12 +23,12 @@ class OpenCodeGitlabApi(openCodeGitlabConfiguration: OpenCodeGitlabApiProperties /** * Queries the gitlab project API at ${gitlabConfiguration.host} and returns a RepositoryCreateDto */ - fun getRepositoryInfo(repoId: Long): RepositoryCreateDto { - logger.info("Get repository info for repository id $repoId started") + fun getRepositoryInfo(projectId: Long): RepositoryCreateDto { + logger.info("Get repository info for repository id $projectId started") - val project = gitlabApi.projectApi.getProject(repoId) + val project = gitlabApi.projectApi.getProject(projectId) val projectUri = project.httpUrlToRepo - val repoCreateDto = RepositoryCreateDto(project.path, projectUri, repoId) + val repoCreateDto = RepositoryCreateDto(project.path, projectUri, projectId) logger.info("Get repository info $repoCreateDto finished successfully.") return repoCreateDto @@ -37,18 +37,18 @@ class OpenCodeGitlabApi(openCodeGitlabConfiguration: OpenCodeGitlabApiProperties /** * Queries gitlab project, commit, and repository API to create a RepositoryDetailsDto */ - suspend fun getRepositoryDetails(repoId: Long): RepositoryDetailsDto { - logger.info("Get repository details for repository id $repoId started") + suspend fun getRepositoryDetails(projectId: Long): RepositoryDetailsDto { + logger.info("Get repository details for repository id $projectId started") - val project = gitlabApi.projectApi.getProject(repoId) + val project = gitlabApi.projectApi.getProject(projectId) // Note: We only take commits from the default branch val commits = gitlabApi.commitsApi.getCommits(project.id, project.defaultBranch, ".") val numberOfCommits = commits.count() - val numberOfSignedCommits = getNumberOfSignedCommits(repoId, commits) - val isDefaultBranchProtected = isDefaultBranchProtected(repoId, project) + val numberOfSignedCommits = getNumberOfSignedCommits(projectId, commits) + val isDefaultBranchProtected = isDefaultBranchProtected(projectId, project) val repoDetailsDto = RepositoryDetailsDto( - repoId, + projectId, numberOfCommits, numberOfSignedCommits, isDefaultBranchProtected @@ -59,24 +59,24 @@ class OpenCodeGitlabApi(openCodeGitlabConfiguration: OpenCodeGitlabApiProperties } private suspend fun getNumberOfSignedCommits( - repoId: Long, + projectId: Long, commits: List<Commit>, ioDispatcher: CoroutineDispatcher = Dispatchers.IO ): Int = coroutineScope { val deferreds = commits.map { async(ioDispatcher) { - gitlabApi.commitsApi.getOptionalGpgSignature(repoId, it.id) + gitlabApi.commitsApi.getOptionalGpgSignature(projectId, it.id) } } deferreds.awaitAll().count { !it.isEmpty } } - private fun isDefaultBranchProtected(repoId: Long, project: Project): Boolean { + private fun isDefaultBranchProtected(projectId: Long, project: Project): Boolean { return try { val defaultBranchName = project.defaultBranch - val branch = gitlabApi.repositoryApi.getBranch(repoId, defaultBranchName) + val branch = gitlabApi.repositoryApi.getBranch(projectId, defaultBranchName) branch.protected } catch (e: Exception) { // in theory, error probably happens if branch can't be found. In this case we default to false diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryDetailsDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryDetailsDto.kt index 0b876c9961b4357ccc93b1bfbf638be96ae60fae..1eb7e8e46f35fb6d8ab49235b9ef7e7ac4ead237 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryDetailsDto.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryDetailsDto.kt @@ -1,7 +1,7 @@ package de.fraunhofer.iem.dataprovider.repository.dto data class RepositoryDetailsDto( - val repoId: Long, + val projectId: Long, val numberOfCommits: Int, val numberOfSignedCommits: Int, val isDefaultBranchProtected: Boolean diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt index a3a3614df04bf5a14df5d95c59baae82dd8a707d..51e1277a28b8f7105ca4fa632b0a843f7bf0d2f4 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/dto/ToolRunDto.kt @@ -4,14 +4,14 @@ import de.fraunhofer.iem.dataprovider.tool.dto.ToolResponseDto import de.fraunhofer.iem.dataprovider.toolRun.entity.ToolRunEntity import java.util.* -data class ToolRunDto(val id: UUID, val createdAt: String, val repoId: Long, val tools: List<ToolResponseDto>) { +data class ToolRunDto(val id: UUID, val createdAt: String, val projectId: Long, val tools: List<ToolResponseDto>) { companion object { fun getDtoFromEntityWithToolFindings(toolRunEntity: ToolRunEntity, tools: List<ToolResponseDto>): ToolRunDto { if (toolRunEntity.id != null) { return ToolRunDto( id = toolRunEntity.id!!, createdAt = toolRunEntity.createdAt.toString(), - repoId = toolRunEntity.repository.projectId, + projectId = toolRunEntity.repository.projectId, tools = tools ) } diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt index b72cf8ba5628667808d9348962aa07114fe1dcbd..e20d08733d1c2d7151cffc4b9966dfdcd80c561d 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt @@ -150,7 +150,7 @@ class ToolRunService( apiJobs.add( defaultScope.async { // TODO: this will be replaced by an API call - val rawOrtResult = ortService.getOrtResults(repoId = repo.projectId) + val rawOrtResult = ortService.getOrtResults(projectId = repo.projectId) val findings = ortService.getFindings(rawOrtResult) tool.toolType.toViewModel(findings = findings) } diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/gitlab/service/RepositoryDetailsService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/gitlab/service/RepositoryDetailsService.kt index 271347ea9803a7bd5a76005dbcb1bb29987bab59..4fcff49bc83f94e412f13922a4274001edc63b85 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/gitlab/service/RepositoryDetailsService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/gitlab/service/RepositoryDetailsService.kt @@ -11,8 +11,8 @@ import org.springframework.stereotype.Service @Service class RepositoryDetailsService(private val openCodeGitlabApi: OpenCodeGitlabApi, private val toolService: ToolService) { - suspend fun getRepositoryDetails(repoId: Long): RepositoryDetailsDto { - return openCodeGitlabApi.getRepositoryDetails(repoId) + suspend fun getRepositoryDetails(projectId: Long): RepositoryDetailsDto { + return openCodeGitlabApi.getRepositoryDetails(projectId) } val toolEntity: ToolEntity = getOrCreateToolEntity() diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt index 1dfeeb6e25814a718390988b696a9822fc718392..613223822f8e9baf311e47a552f398450cf62516 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/occmd/service/OccmdService.kt @@ -49,11 +49,11 @@ class OccmdService( * the DTOs. */ @OptIn(ExperimentalPathApi::class) - suspend fun runOccmd(repoId: Long, repoUrl: String): List<RawResultJson> { - logger.info("runOccmd for repo $repoId") + suspend fun runOccmd(projectId: Long, repoUrl: String): List<RawResultJson> { + logger.info("runOccmd for repo $projectId") val rawOccmdResults = try { // clone repo - val outDir = Paths.get(dirProperties.gitCloneTargetDirectory, "$repoId-${Date().time}") + val outDir = Paths.get(dirProperties.gitCloneTargetDirectory, "$projectId-${Date().time}") logger.info("Cloning git to $outDir") cloneGit(repoUrl, outDir.toFile()) @@ -64,7 +64,7 @@ class OccmdService( dirProperties.occmdPath, arrayOf( outDir.toString(), - "$repoId", + "$projectId", gitlabApiProperties.accessToken ) ) @@ -80,7 +80,7 @@ class OccmdService( logger.error("OCCMD tool run failed with $e") emptyList() } - logger.info("OCCMD tool run for repo $repoId finished") + logger.info("OCCMD tool run for repo $projectId finished") // TODO: right now we fire and forget, in a sense that we run the tool calculate the // KPIs and forget the tool results. For this tool we want to manually store the results // until it is included into the official CI/CD pipeline. diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/ort/service/OrtService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/ort/service/OrtService.kt index 2dd57baa7b1234ccb961330cd0040eb5b1d9f046..e86132e66a3fa4ef0a5b49d3ab39215d4d80a95a 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/ort/service/OrtService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/tools/ort/service/OrtService.kt @@ -36,9 +36,9 @@ class OrtService( * When the API call fails, or contains malformed/incomplete * elements this function returns an empty list. */ - suspend fun getOrtResults(repoId: Long): List<VulnerabilityDto> { - val ortResults = queryOrtApi(repoId) - logger.info("Got ${ortResults.size} ORT results for $repoId.") + suspend fun getOrtResults(projectId: Long): List<VulnerabilityDto> { + val ortResults = queryOrtApi(projectId) + logger.info("Got ${ortResults.size} ORT results for $projectId.") return ortResults.mapNotNull { if (it.cveId != null && it.packageName != null && it.severity != null) { VulnerabilityDto(it.cveId, it.packageName, it.severity) @@ -62,16 +62,16 @@ class OrtService( return toolService.findOrCreateTool(createToolDto) } - private suspend fun queryOrtApi(repoId: Long): List<ResultJson> { + private suspend fun queryOrtApi(projectId: Long): List<ResultJson> { return try { - logger.info("Query ORT API for repo with id $repoId") - val response: HttpResponse = httpClient.get(getToolApiPath(repoId)) + logger.info("Query ORT API for repo with id $projectId") + val response: HttpResponse = httpClient.get(getToolApiPath(projectId)) val ortJson = response.body<OrtJson>() if (ortJson.code != HttpStatusCode.OK.value) { throw Exception("ORT API returned with code ${ortJson.code}") } - logger.info("Query ORT API for repo with id $repoId returned with ${ortJson.code}") + logger.info("Query ORT API for repo with id $projectId returned with ${ortJson.code}") ortJson.result } catch (exception: Exception) { logger.error("Query to ORT API failed with exception $exception") @@ -79,7 +79,7 @@ class OrtService( } } - private fun getToolApiPath(repoId: Long): String { - return "${openCodeApiProperties.basePath}$repoId${openCodeApiProperties.ort}" + private fun getToolApiPath(projectId: Long): String { + return "${openCodeApiProperties.basePath}$projectId${openCodeApiProperties.ort}" } }