INFRA-3188 | Dhruv | remove approve count and use atleast 1 team approval
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user