public void check(OperationResult result) { HealthStateType healthStateType = HealthStateType.general(HealthStateScope.forPipeline(pipelineName)); if (pipelineLockService.isLocked(pipelineName)) { String message = format("Pipeline %s cannot be scheduled", pipelineName); String description = format("Pipeline %s is locked as another instance of this pipeline is running.", pipelineName); result.conflict(message, description, healthStateType); } else{ result.success(healthStateType); } } }
private void populateLockStatus(String pipelineName, Username username, PipelineInstanceModel pipelineInstanceModel) { pipelineInstanceModel.setCanUnlock(pipelineUnlockService.canUnlock(pipelineName, username, new HttpOperationResult())); pipelineInstanceModel.setIsLockable(goConfigService.isLockable(pipelineName)); pipelineInstanceModel.setCurrentlyLocked(pipelineLockService.isLocked(pipelineName)); }
private PipelineInstanceModels instancesFor(PipelineConfig pipelineConfig, PipelineInstanceModels historyForDashboard) { PipelineInstanceModels pims = findPIMsWithFallbacks(pipelineConfig, historyForDashboard); boolean isCurrentlyLocked = pipelineLockService.isLocked(str(pipelineConfig.name())); boolean isUnlockable = pipelineUnlockApiService.isUnlockable(str(pipelineConfig.name())); for (PipelineInstanceModel instanceModel : pims) { populateStagesWhichHaventRunFromConfig(instanceModel, pipelineConfig); populateLockStatus(instanceModel, pipelineConfig.isLockable(), isCurrentlyLocked, isUnlockable); } return pims; }
public PipelineStatusModel getPipelineStatus(String pipelineName, String username, OperationResult result) { PipelineConfig pipelineConfig = goConfigService.currentCruiseConfig().getPipelineConfigByName(new CaseInsensitiveString(pipelineName)); if (pipelineConfig == null) { result.notFound("Not Found", "Pipeline not found", HealthStateType.general(HealthStateScope.GLOBAL)); return null; } if (!securityService.hasViewPermissionForPipeline(Username.valueOf(username), pipelineName)) { result.forbidden("Forbidden", NOT_AUTHORIZED_TO_VIEW_PIPELINE, HealthStateType.general(HealthStateScope.forPipeline(pipelineName))); return null; } PipelinePauseInfo pipelinePauseInfo = pipelinePauseService.pipelinePauseInfo(pipelineName); boolean isCurrentlyLocked = pipelineLockService.isLocked(pipelineName); boolean isSchedulable = schedulingCheckerService.canManuallyTrigger(pipelineConfig, username, new ServerHealthStateOperationResult()); return new PipelineStatusModel(isCurrentlyLocked, isSchedulable, pipelinePauseInfo); }