@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 updateItem(final Rollout rollout, final Item item) { final TotalTargetCountStatus totalTargetCountStatus = rollout.getTotalTargetCountStatus(); item.getItemProperty(SPUILabelDefinitions.VAR_STATUS).setValue(rollout.getStatus()); item.getItemProperty(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setValue(totalTargetCountStatus); final Long groupCount = Long .valueOf((Integer) item.getItemProperty(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).getValue()); final int groupsCreated = rollout.getRolloutGroupsCreated(); item.getItemProperty(ROLLOUT_RENDERER_DATA) .setValue(new RolloutRendererData(rollout.getName(), rollout.getStatus().toString())); if (groupsCreated != 0) { item.getItemProperty(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setValue(Integer.valueOf(groupsCreated)); return; } final Long size = rolloutGroupManagement.countTargetsOfRolloutsGroup(rollout.getId()); if (!size.equals(groupCount)) { item.getItemProperty(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setValue(size.intValue()); } }
body.setTargetFilterQuery(rollout.getTargetFilterQuery()); body.setDistributionSetId(rollout.getDistributionSet().getId()); body.setStatus(rollout.getStatus().toString().toLowerCase()); body.setTotalTargets(rollout.getTotalTargets()); body.setDeleted(rollout.isDeleted());
private static ProxyRollout createProxy(final Rollout rollout) { final ProxyRollout proxyRollout = new ProxyRollout(); proxyRollout.setName(rollout.getName()); proxyRollout.setDescription(rollout.getDescription()); final DistributionSet distributionSet = rollout.getDistributionSet(); proxyRollout.setDistributionSetNameVersion( HawkbitCommonUtil.getFormattedNameVersion(distributionSet.getName(), distributionSet.getVersion())); proxyRollout.setNumberOfGroups(rollout.getRolloutGroupsCreated()); proxyRollout.setCreatedDate(SPDateTimeUtil.getFormattedDate(rollout.getCreatedAt())); proxyRollout.setModifiedDate(SPDateTimeUtil.getFormattedDate(rollout.getLastModifiedAt())); proxyRollout.setCreatedBy(UserDetailsFormatter.loadAndFormatCreatedBy(rollout)); proxyRollout.setLastModifiedBy(UserDetailsFormatter.loadAndFormatLastModifiedBy(rollout)); proxyRollout.setForcedTime(rollout.getForcedTime()); proxyRollout.setId(rollout.getId()); proxyRollout.setStatus(rollout.getStatus()); proxyRollout.setRolloutRendererData(new RolloutRendererData(rollout.getName(), rollout.getStatus().toString())); final TotalTargetCountStatus totalTargetCountActionStatus = rollout.getTotalTargetCountStatus(); proxyRollout.setTotalTargetCountStatus(totalTargetCountActionStatus); proxyRollout.setTotalTargetsCount(String.valueOf(rollout.getTotalTargets())); proxyRollout.setApprovalDecidedBy(rollout.getApprovalDecidedBy()); proxyRollout.setApprovalRemark(rollout.getApprovalRemark()); return proxyRollout; }
private static ProxyRollout createProxy(final Rollout rollout) { final ProxyRollout proxyRollout = new ProxyRollout(); proxyRollout.setName(rollout.getName()); proxyRollout.setDescription(rollout.getDescription()); final DistributionSet distributionSet = rollout.getDistributionSet(); proxyRollout.setDistributionSetNameVersion( HawkbitCommonUtil.getFormattedNameVersion(distributionSet.getName(), distributionSet.getVersion())); proxyRollout.setNumberOfGroups(rollout.getRolloutGroupsCreated()); proxyRollout.setCreatedDate(SPDateTimeUtil.getFormattedDate(rollout.getCreatedAt())); proxyRollout.setModifiedDate(SPDateTimeUtil.getFormattedDate(rollout.getLastModifiedAt())); proxyRollout.setCreatedBy(UserDetailsFormatter.loadAndFormatCreatedBy(rollout)); proxyRollout.setLastModifiedBy(UserDetailsFormatter.loadAndFormatLastModifiedBy(rollout)); proxyRollout.setForcedTime(rollout.getForcedTime()); proxyRollout.setId(rollout.getId()); proxyRollout.setStatus(rollout.getStatus()); proxyRollout.setRolloutRendererData(new RolloutRendererData(rollout.getName(), rollout.getStatus().toString())); final TotalTargetCountStatus totalTargetCountActionStatus = rollout.getTotalTargetCountStatus(); proxyRollout.setTotalTargetCountStatus(totalTargetCountActionStatus); proxyRollout.setTotalTargetsCount(String.valueOf(rollout.getTotalTargets())); proxyRollout.setApprovalDecidedBy(rollout.getApprovalDecidedBy()); proxyRollout.setApprovalRemark(rollout.getApprovalRemark()); return proxyRollout; }
@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 updateItem(final Rollout rollout, final Item item) { final TotalTargetCountStatus totalTargetCountStatus = rollout.getTotalTargetCountStatus(); item.getItemProperty(SPUILabelDefinitions.VAR_STATUS).setValue(rollout.getStatus()); item.getItemProperty(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS).setValue(totalTargetCountStatus); final Long groupCount = Long .valueOf((Integer) item.getItemProperty(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).getValue()); final int groupsCreated = rollout.getRolloutGroupsCreated(); item.getItemProperty(ROLLOUT_RENDERER_DATA) .setValue(new RolloutRendererData(rollout.getName(), rollout.getStatus().toString())); if (groupsCreated != 0) { item.getItemProperty(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setValue(Integer.valueOf(groupsCreated)); return; } final Long size = rolloutGroupManagement.countTargetsOfRolloutsGroup(rollout.getId()); if (!size.equals(groupCount)) { item.getItemProperty(SPUILabelDefinitions.VAR_NUMBER_OF_GROUPS).setValue(size.intValue()); } }
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(); }
@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 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)); }
/** * 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()); } }