private void handleReadyRollout(final Rollout rollout) { if (rollout.getStartAt() != null && rollout.getStartAt() <= System.currentTimeMillis()) { LOGGER.debug( "handleReadyRollout called for rollout {} with autostart beyond define time. Switch to STARTING", rollout.getId()); start(rollout.getId()); } }
private void handleReadyRollout(final Rollout rollout) { if (rollout.getStartAt() != null && rollout.getStartAt() <= System.currentTimeMillis()) { LOGGER.debug( "handleReadyRollout called for rollout {} with autostart beyond define time. Switch to STARTING", rollout.getId()); start(rollout.getId()); } }
private void handleStartingRollout(final Rollout rollout) { LOGGER.debug("handleStartingRollout called for rollout {}", rollout.getId()); if (ensureAllGroupsAreScheduled(rollout)) { startFirstRolloutGroup(rollout); } }
private void handleStartingRollout(final Rollout rollout) { LOGGER.debug("handleStartingRollout called for rollout {}", rollout.getId()); if (ensureAllGroupsAreScheduled(rollout)) { startFirstRolloutGroup(rollout); } }
private void publishRolloutGroupCreatedEventAfterCommit(final RolloutGroup group, final Rollout rollout) { afterCommit.afterCommit(() -> eventPublisher .publishEvent(new RolloutGroupCreatedEvent(group, rollout.getId(), context.getId()))); }
private void publishRolloutGroupCreatedEventAfterCommit(final RolloutGroup group, final Rollout rollout) { afterCommit.afterCommit(() -> eventPublisher .publishEvent(new RolloutGroupCreatedEvent(group, rollout.getId(), context.getId()))); }
@Override public void eval(final Rollout rollout, final RolloutGroup rolloutG, final String expression) { final JpaRolloutGroup rolloutGroup = (JpaRolloutGroup) rolloutG; systemSecurityContext.runAsSystem(() -> { rolloutGroup.setStatus(RolloutGroupStatus.ERROR); rolloutGroupRepository.save(rolloutGroup); rolloutManagement.pauseRollout(rollout.getId()); return null; }); } }
@Override public void eval(final Rollout rollout, final RolloutGroup rolloutG, final String expression) { final JpaRolloutGroup rolloutGroup = (JpaRolloutGroup) rolloutG; systemSecurityContext.runAsSystem(() -> { rolloutGroup.setStatus(RolloutGroupStatus.ERROR); rolloutGroupRepository.save(rolloutGroup); rolloutManagement.pauseRollout(rollout.getId()); return null; }); } }
@Override public void fireUpdateEvent(final DescriptorEvent descriptorEvent) { EventPublisherHolder.getInstance().getEventPublisher().publishEvent(new RolloutGroupUpdatedEvent(this, this.getRollout().getId(), EventPublisherHolder.getInstance().getApplicationId())); }
@Override public void fireUpdateEvent(final DescriptorEvent descriptorEvent) { EventPublisherHolder.getInstance().getEventPublisher().publishEvent(new RolloutGroupUpdatedEvent(this, this.getRollout().getId(), EventPublisherHolder.getInstance().getApplicationId())); }
@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 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(); }
@Test @Description("Handles the POST request of resuming a rollout. Required Permission: " + SpPermission.HANDLE_ROLLOUT) public void resumeRollout() throws Exception { final Rollout rollout = createRolloutEntity(); rolloutManagement.start(rollout.getId()); // Run here, because scheduler is disabled during tests rolloutManagement.handleRollouts(); rolloutManagement.pauseRollout(rollout.getId()); mockMvc.perform(post(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING + "/{rolloutId}/resume", rollout.getId()) .accept(MediaTypes.HAL_JSON_VALUE)).andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(this.document.document( pathParameters(parameterWithName("rolloutId").description(ApiModelPropertiesGeneric.ITEM_ID)))); }
@Test @Description("Handles the POST request of pausing a rollout. Required Permission: " + SpPermission.HANDLE_ROLLOUT) public void pauseRollout() throws Exception { final Rollout rollout = createRolloutEntity(); rolloutManagement.start(rollout.getId()); // Run here, because scheduler is disabled during tests rolloutManagement.handleRollouts(); mockMvc.perform(post(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING + "/{rolloutId}/pause", rollout.getId()) .accept(MediaTypes.HAL_JSON_VALUE)).andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(this.document.document( pathParameters(parameterWithName("rolloutId").description(ApiModelPropertiesGeneric.ITEM_ID)))); }
@Test @Description("Handles the DELETE request of deleting a rollout within SP. Required Permission: " + SpPermission.DELETE_ROLLOUT) public void deleteRollout() throws Exception { final Rollout rollout = createRolloutEntity(); this.mockMvc.perform(delete(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING + "/{rolloutId}", rollout.getId())) .andExpect(status().isOk()).andDo(MockMvcResultPrinter.print()).andDo(this.document.document( pathParameters(parameterWithName("rolloutId").description(ApiModelPropertiesGeneric.NAME)))); }
@Test @Description("Handles the POST request of starting a rollout. Required Permission: " + SpPermission.HANDLE_ROLLOUT) public void startRollout() throws Exception { final Rollout rollout = createRolloutEntity(); mockMvc.perform(post(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING + "/{rolloutId}/start", rollout.getId()) .accept(MediaTypes.HAL_JSON_VALUE)).andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(this.document.document( pathParameters(parameterWithName("rolloutId").description(ApiModelPropertiesGeneric.ITEM_ID)))); }
@Test @Description("Handles the POST request of denying a rollout. Required Permission: " + SpPermission.APPROVE_ROLLOUT) public void denyRollout() throws Exception { approvalStrategy.setApprovalNeeded(true); final Rollout rollout = createRolloutEntity(); mockMvc.perform(post(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING + "/{rolloutId}/deny", rollout.getId()) .accept(MediaTypes.HAL_JSON_VALUE)).andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(this.document.document( pathParameters(parameterWithName("rolloutId").description(ApiModelPropertiesGeneric.ITEM_ID)))); }
private Rollout createRolloutEntity() { testdataFactory.createTargets(20, "exampleTarget"); final Rollout rollout = rolloutManagement.create( entityFactory.rollout().create().name("exampleRollout") .targetFilterQuery("controllerId==exampleTarget*").set(testdataFactory.createDistributionSet()), 10, new RolloutGroupConditionBuilder().withDefaults() .successCondition(RolloutGroupSuccessCondition.THRESHOLD, "10").build()); // Run here, because Scheduler is disabled during tests rolloutManagement.handleRollouts(); return rolloutManagement .update(entityFactory.rollout().update(rollout.getId()).description("exampleDescription")); }
@Test @Description("Handles the POST request of approving a rollout. Required Permission: " + SpPermission.APPROVE_ROLLOUT) public void approveRollout() throws Exception { approvalStrategy.setApprovalNeeded(true); final Rollout rollout = createRolloutEntity(); mockMvc.perform(post(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING + "/{rolloutId}/approve", rollout.getId()) .accept(MediaTypes.HAL_JSON_VALUE)).andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andDo(this.document.document( pathParameters(parameterWithName("rolloutId").description(ApiModelPropertiesGeneric.ITEM_ID)))); }
@Test @Description("Handles the GET request of retrieving a single rollout. Required Permission: " + SpPermission.READ_ROLLOUT) public void getRollout() throws Exception { final Rollout rollout = createRolloutEntity(); mockMvc.perform(get(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING + "/{rolloutId}", rollout.getId()) .accept(MediaTypes.HAL_JSON_VALUE)).andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()) .andExpect(content().contentType(MediaTypes.HAL_JSON_UTF8)) .andDo(this.document.document(getRolloutResponseFields(false, true), pathParameters(parameterWithName("rolloutId").description(ApiModelPropertiesGeneric.ITEM_ID)))); }