public static void checkIfRolloutCanStarted(final Rollout rollout, final Rollout mergedRollout) { if (!(Rollout.RolloutStatus.READY.equals(mergedRollout.getStatus()))) { throw new RolloutIllegalStateException("Rollout can only be started in state ready but current state is " + rollout.getStatus().name().toLowerCase()); } }
@Override @Transactional @Retryable(include = { ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY)) public void resumeRollout(final long rolloutId) { final JpaRollout rollout = getRolloutAndThrowExceptionIfNotFound(rolloutId); if (!(RolloutStatus.PAUSED.equals(rollout.getStatus()))) { throw new RolloutIllegalStateException("Rollout can only be resumed in state paused but current state is " + rollout.getStatus().name().toLowerCase()); } rollout.setStatus(RolloutStatus.RUNNING); rolloutRepository.save(rollout); }
@Override @Transactional @Retryable(include = { ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY)) public void resumeRollout(final long rolloutId) { final JpaRollout rollout = getRolloutAndThrowExceptionIfNotFound(rolloutId); if (!(RolloutStatus.PAUSED.equals(rollout.getStatus()))) { throw new RolloutIllegalStateException("Rollout can only be resumed in state paused but current state is " + rollout.getStatus().name().toLowerCase()); } rollout.setStatus(RolloutStatus.RUNNING); rolloutRepository.save(rollout); }
@Override @Transactional @Retryable(include = { ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY)) public void pauseRollout(final long rolloutId) { final JpaRollout rollout = getRolloutAndThrowExceptionIfNotFound(rolloutId); if (!RolloutStatus.RUNNING.equals(rollout.getStatus())) { throw new RolloutIllegalStateException("Rollout can only be paused in state running but current state is " + rollout.getStatus().name().toLowerCase()); } // setting the complete rollout only in paused state. This is sufficient // due the currently running groups will be completed and new groups are // not started until rollout goes back to running state again. The // periodically check for running rollouts will skip rollouts in pause // state. rollout.setStatus(RolloutStatus.PAUSED); rolloutRepository.save(rollout); }
@Override @Transactional @Retryable(include = { ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY)) public void pauseRollout(final long rolloutId) { final JpaRollout rollout = getRolloutAndThrowExceptionIfNotFound(rolloutId); if (!RolloutStatus.RUNNING.equals(rollout.getStatus())) { throw new RolloutIllegalStateException("Rollout can only be paused in state running but current state is " + rollout.getStatus().name().toLowerCase()); } // setting the complete rollout only in paused state. This is sufficient // due the currently running groups will be completed and new groups are // not started until rollout goes back to running state again. The // periodically check for running rollouts will skip rollouts in pause // state. rollout.setStatus(RolloutStatus.PAUSED); rolloutRepository.save(rollout); }
private void startOrResumeRollout(final Long rolloutId) { final Item row = getContainerDataSource().getItem(rolloutId); final RolloutStatus rolloutStatus = (RolloutStatus) row.getItemProperty(SPUILabelDefinitions.VAR_STATUS) .getValue(); final String rolloutName = (String) row.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue(); if (RolloutStatus.READY.equals(rolloutStatus)) { rolloutManagement.start(rolloutId); uiNotification.displaySuccess(i18n.getMessage("message.rollout.started", rolloutName)); return; } if (RolloutStatus.PAUSED.equals(rolloutStatus)) { rolloutManagement.resumeRollout(rolloutId); uiNotification.displaySuccess(i18n.getMessage("message.rollout.resumed", rolloutName)); return; } }
@Override @Transactional @Retryable(include = { ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY)) public void delete(final long rolloutId) { final JpaRollout jpaRollout = rolloutRepository.findById(rolloutId) .orElseThrow(() -> new EntityNotFoundException(Rollout.class, rolloutId)); if (jpaRollout == null) { throw new EntityNotFoundException(Rollout.class, rolloutId); } if (RolloutStatus.DELETING.equals(jpaRollout.getStatus())) { return; } jpaRollout.setStatus(RolloutStatus.DELETING); rolloutRepository.save(jpaRollout); }
private void startOrResumeRollout(final Long rolloutId) { final Item row = getContainerDataSource().getItem(rolloutId); final RolloutStatus rolloutStatus = (RolloutStatus) row.getItemProperty(SPUILabelDefinitions.VAR_STATUS) .getValue(); final String rolloutName = (String) row.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue(); if (RolloutStatus.READY.equals(rolloutStatus)) { rolloutManagement.start(rolloutId); uiNotification.displaySuccess(i18n.getMessage("message.rollout.started", rolloutName)); return; } if (RolloutStatus.PAUSED.equals(rolloutStatus)) { rolloutManagement.resumeRollout(rolloutId); uiNotification.displaySuccess(i18n.getMessage("message.rollout.resumed", rolloutName)); return; } }
@Override @Transactional @Retryable(include = { ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY)) public void delete(final long rolloutId) { final JpaRollout jpaRollout = rolloutRepository.findOne(rolloutId); if (jpaRollout == null) { throw new EntityNotFoundException(Rollout.class, rolloutId); } if (RolloutStatus.DELETING.equals(jpaRollout.getStatus())) { return; } jpaRollout.setStatus(RolloutStatus.DELETING); rolloutRepository.save(jpaRollout); }
private static boolean isRolloutStatusReady(final RolloutGroup rolloutGroup) { return rolloutGroup != null && RolloutStatus.READY.equals(rolloutGroup.getRollout().getStatus()); }
private static boolean isRolloutStatusReady(final RolloutGroup rolloutGroup) { return rolloutGroup != null && RolloutStatus.READY.equals(rolloutGroup.getRollout().getStatus()); }
@Override public void saveOrUpdate() { if (editRolloutEnabled) { editRollout(); if (rollout.getStatus().equals(Rollout.RolloutStatus.WAITING_FOR_APPROVAL)) { rolloutManagement.approveOrDeny(rollout.getId(), (Rollout.ApprovalDecision) approveButtonsGroup.getValue(), approvalRemarkField.getValue()); eventBus.publish(this, RolloutEvent.UPDATE_ROLLOUT); } return; } createRollout(); }
/** * Verifies that the Rollout is in the required status. * * @param rollout * the Rollout * @param status * the Status */ public static void verifyRolloutInStatus(final Rollout rollout, final Rollout.RolloutStatus status) { if (!rollout.getStatus().equals(status)) { throw new RolloutIllegalStateException("Rollout is not in status " + status.toString()); } }
private void pauseRollout(final Long rolloutId) { final Item row = getContainerDataSource().getItem(rolloutId); final RolloutStatus rolloutStatus = (RolloutStatus) row.getItemProperty(SPUILabelDefinitions.VAR_STATUS) .getValue(); if (!RolloutStatus.RUNNING.equals(rolloutStatus)) { return; } final String rolloutName = (String) row.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue(); rolloutManagement.pauseRollout(rolloutId); uiNotification.displaySuccess(i18n.getMessage("message.rollout.paused", rolloutName)); }
@Override public void saveOrUpdate() { if (editRolloutEnabled) { editRollout(); if (rollout.getStatus().equals(Rollout.RolloutStatus.WAITING_FOR_APPROVAL)) { rolloutManagement.approveOrDeny(rollout.getId(), (Rollout.ApprovalDecision) approveButtonsGroup.getValue(), approvalRemarkField.getValue()); eventBus.publish(this, RolloutEvent.UPDATE_ROLLOUT); } return; } createRollout(); }
private void pauseRollout(final Long rolloutId) { final Item row = getContainerDataSource().getItem(rolloutId); final RolloutStatus rolloutStatus = (RolloutStatus) row.getItemProperty(SPUILabelDefinitions.VAR_STATUS) .getValue(); if (!RolloutStatus.RUNNING.equals(rolloutStatus)) { return; } final String rolloutName = (String) row.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue(); rolloutManagement.pauseRollout(rolloutId); uiNotification.displaySuccess(i18n.getMessage("message.rollout.paused", rolloutName)); }