private void startNextGroup(final Rollout rollout, final RolloutGroup rolloutGroup) { // retrieve all actions according to the parent group of the finished // rolloutGroup, so retrieve all child-group actions which need to be // started. final long countOfStartedActions = deploymentManagement.startScheduledActionsByRolloutGroupParent( rollout.getId(), rollout.getDistributionSet().getId(), rolloutGroup.getId()); logger.debug("{} Next actions started for rollout {} and parent group {}", countOfStartedActions, rollout, rolloutGroup); if (countOfStartedActions > 0) { // get all next scheduled groups and set them in state running rolloutGroupRepository.setStatusForCildren(RolloutGroupStatus.RUNNING, rolloutGroup); } else { logger.info("No actions to start for next rolloutgroup of parent {} {}", rolloutGroup.getId(), rolloutGroup.getName()); // nothing for next group, just finish the group, this can happen // e.g. if targets has been deleted after the group has been // scheduled. If the group is empty now, we just finish the group if // there are not actions available for this group. final List<JpaRolloutGroup> findByRolloutGroupParent = rolloutGroupRepository .findByParentIdAndStatus(rolloutGroup.getId(), RolloutGroupStatus.SCHEDULED); findByRolloutGroupParent.forEach(nextGroup -> { logger.debug("Rolloutgroup {} is finished, starting next group", nextGroup); nextGroup.setStatus(RolloutGroupStatus.FINISHED); rolloutGroupRepository.save(nextGroup); // find the next group to set in running state startNextGroup(rollout, nextGroup); }); } } }
private void startNextGroup(final Rollout rollout, final RolloutGroup rolloutGroup) { // retrieve all actions according to the parent group of the finished // rolloutGroup, so retrieve all child-group actions which need to be // started. final long countOfStartedActions = deploymentManagement.startScheduledActionsByRolloutGroupParent( rollout.getId(), rollout.getDistributionSet().getId(), rolloutGroup.getId()); logger.debug("{} Next actions started for rollout {} and parent group {}", countOfStartedActions, rollout, rolloutGroup); if (countOfStartedActions > 0) { // get all next scheduled groups and set them in state running rolloutGroupRepository.setStatusForCildren(RolloutGroupStatus.RUNNING, rolloutGroup); } else { logger.info("No actions to start for next rolloutgroup of parent {} {}", rolloutGroup.getId(), rolloutGroup.getName()); // nothing for next group, just finish the group, this can happen // e.g. if targets has been deleted after the group has been // scheduled. If the group is empty now, we just finish the group if // there are not actions available for this group. final List<JpaRolloutGroup> findByRolloutGroupParent = rolloutGroupRepository .findByParentIdAndStatus(rolloutGroup.getId(), RolloutGroupStatus.SCHEDULED); findByRolloutGroupParent.forEach(nextGroup -> { logger.debug("Rolloutgroup {} is finished, starting next group", nextGroup); nextGroup.setStatus(RolloutGroupStatus.FINISHED); rolloutGroupRepository.save(nextGroup); // find the next group to set in running state startNextGroup(rollout, nextGroup); }); } } }
private void startFirstRolloutGroup(final Rollout rollout) { LOGGER.debug("startFirstRolloutGroup called for rollout {}", rollout.getId()); RolloutHelper.verifyRolloutInStatus(rollout, RolloutStatus.STARTING); final JpaRollout jpaRollout = (JpaRollout) rollout; final List<JpaRolloutGroup> rolloutGroups = rolloutGroupRepository.findByRolloutOrderByIdAsc(jpaRollout); final JpaRolloutGroup rolloutGroup = rolloutGroups.get(0); if (rolloutGroup.getParent() != null) { throw new RolloutIllegalStateException("First Group is not the first group."); } deploymentManagement.startScheduledActionsByRolloutGroupParent(rollout.getId(), rollout.getDistributionSet().getId(), null); rolloutGroup.setStatus(RolloutGroupStatus.RUNNING); rolloutGroupRepository.save(rolloutGroup); jpaRollout.setStatus(RolloutStatus.RUNNING); jpaRollout.setLastCheck(0); rolloutRepository.save(jpaRollout); }
private void startFirstRolloutGroup(final Rollout rollout) { LOGGER.debug("startFirstRolloutGroup called for rollout {}", rollout.getId()); RolloutHelper.verifyRolloutInStatus(rollout, RolloutStatus.STARTING); final JpaRollout jpaRollout = (JpaRollout) rollout; final List<JpaRolloutGroup> rolloutGroups = rolloutGroupRepository.findByRolloutOrderByIdAsc(jpaRollout); final JpaRolloutGroup rolloutGroup = rolloutGroups.get(0); if (rolloutGroup.getParent() != null) { throw new RolloutIllegalStateException("First Group is not the first group."); } deploymentManagement.startScheduledActionsByRolloutGroupParent(rollout.getId(), rollout.getDistributionSet().getId(), null); rolloutGroup.setStatus(RolloutGroupStatus.RUNNING); rolloutGroupRepository.save(rolloutGroup); jpaRollout.setStatus(RolloutStatus.RUNNING); jpaRollout.setLastCheck(0); rolloutRepository.save(jpaRollout); }