INFRA-3188 | Dhruv | remove approve count and use atleast 1 team approval

This commit is contained in:
dhruvjoshi
2024-04-30 19:16:56 +05:30
parent 2e84b7cb86
commit 7d9b5bac0c
2 changed files with 13 additions and 21 deletions

View File

@@ -1,21 +1,19 @@
package com.navi.infra.portal.v2.jit.entity;
public enum Environment {
DEV("dev", 1),
QA("qa", 1),
PROD("prod", 2),
NONPROD("nonprod", 1),
CMD("cmd", 2),
PERF("perf", 1),
UAT("uat", 1),
DATA_PLATFORM_NONPROD("data-platform-nonprod", 1),
DATA_PLATFORM_PROD("data-platform-prod", 2);
DEV("dev"),
QA("qa"),
PROD("prod"),
NONPROD("nonprod"),
CMD("cmd"),
PERF("perf"),
UAT("uat"),
DATA_PLATFORM_NONPROD("data-platform-nonprod"),
DATA_PLATFORM_PROD("data-platform-prod");
public final String type;
public final Long approvals;
Environment(String type, int approvals) {
Environment(String type) {
this.type = type;
this.approvals = (long) approvals;
}
}

View File

@@ -6,7 +6,6 @@ import com.navi.infra.portal.domain.user.Role;
import com.navi.infra.portal.domain.user.Team;
import com.navi.infra.portal.domain.user.User;
import com.navi.infra.portal.service.user.UserService;
import com.navi.infra.portal.v2.jit.entity.Environment;
import com.navi.infra.portal.v2.jit.entity.JitApproval;
import com.navi.infra.portal.v2.jit.entity.JitRequest;
import com.navi.infra.portal.v2.jit.entity.JitRequestStatus;
@@ -79,20 +78,15 @@ public class AuthUtil {
.collect(Collectors.toList());
}
Long findTotalApprovalsIfAllTeamsApproved(Long jitId) {
boolean hasApprovalsFromAllRequiredTeams(Long jitId) {
List<Long> approvalList = jitApprovalsRepository.countApprovedInEachTeam(jitId);
long totalApproved = approvalList.stream().reduce(0L, Long::sum);
boolean allTeamApproval = approvalList.stream()
.allMatch(approval -> approval >= 1);
return allTeamApproval ? totalApproved : 0;
return approvalList.stream().allMatch(approval -> approval >= 1);
}
public boolean haveRequiredApprovals(JitRequest jitRequest) {
Environment env = jitRequest.getEnvironment();
Long approvedRequests = findTotalApprovalsIfAllTeamsApproved(jitRequest.getId());
return hasApprovalsFromAllRequiredTeams(jitRequest.getId());
// is atleast one approval from each required team obtained based on the mapping in yaml
// and required approval type (master or something)
return approvedRequests >= env.approvals;
}
public List<User> getReviewersFromRole(String teamName, String reviewerRoleType) {