private static DdiMaintenanceWindowStatus calculateMaintenanceWindow(final Action action) { if (action.hasMaintenanceSchedule()) { return action.isMaintenanceWindowAvailable() ? DdiMaintenanceWindowStatus.AVAILABLE : DdiMaintenanceWindowStatus.UNAVAILABLE; } return null; }
private static HandlingType calculateUpdateType(final Action action, final HandlingType downloadType) { if (action.hasMaintenanceSchedule()) { return action.isMaintenanceWindowAvailable() ? downloadType : HandlingType.SKIP; } return downloadType; }
private static HandlingType calculateUpdateType(final Action action, final HandlingType downloadType) { if (action.hasMaintenanceSchedule()) { return action.isMaintenanceWindowAvailable() ? downloadType : HandlingType.SKIP; } return downloadType; }
private static DdiMaintenanceWindowStatus calculateMaintenanceWindow(final Action action) { if (action.hasMaintenanceSchedule()) { return action.isMaintenanceWindowAvailable() ? DdiMaintenanceWindowStatus.AVAILABLE : DdiMaintenanceWindowStatus.UNAVAILABLE; } return null; }
/** * Calculates an etag for the given {@link Action} based on the entities * hashcode and the {@link Action#isHitAutoForceTime(long)} to reflect a * force switch. * * @param action * to calculate the etag for * @return the etag */ private static int calculateEtag(final Action action) { final int prime = 31; int result = action.hashCode(); int offsetPrime = action.isHitAutoForceTime(System.currentTimeMillis()) ? 1231 : 1237; offsetPrime = (action.hasMaintenanceSchedule() && action.isMaintenanceWindowAvailable()) ? 1249 : offsetPrime; result = prime * result + offsetPrime; return result; }
/** * Calculates an etag for the given {@link Action} based on the entities * hashcode and the {@link Action#isHitAutoForceTime(long)} to reflect a * force switch. * * @param action * to calculate the etag for * @return the etag */ private static int calculateEtag(final Action action) { final int prime = 31; int result = action.hashCode(); int offsetPrime = action.isHitAutoForceTime(System.currentTimeMillis()) ? 1231 : 1237; offsetPrime = action.hasMaintenanceSchedule() && action.isMaintenanceWindowAvailable() ? 1249 : offsetPrime; result = prime * result + offsetPrime; return result; }
/** * If the action has a maintenance schedule defined but is no longer valid, * cancel the action. * * @param action * is the {@link Action} to check. */ private void checkAndCancelExpiredAction(final Action action) { if (action != null && action.hasMaintenanceSchedule() && action.isMaintenanceScheduleLapsed()) { try { controllerManagement.cancelAction(action.getId()); } catch (final CancelActionNotAllowedException e) { LOG.info("Cancel action not allowed exception :{}", e); } } }
/** * If the action has a maintenance schedule defined but is no longer valid, * cancel the action. * * @param action * is the {@link Action} to check. */ private void checkAndCancelExpiredAction(final Action action) { if (action != null && action.hasMaintenanceSchedule() && action.isMaintenanceScheduleLapsed()) { try { controllerManagement.cancelAction(action.getId()); } catch (final CancelActionNotAllowedException e) { LOG.info("Cancel action not allowed exception :{}", e); } } }
/** * Method to update the action status of an action through the event. * * @param actionUpdateStatus * the object form the ampq message */ private void updateActionStatus(final Message message) { final DmfActionUpdateStatus actionUpdateStatus = convertMessage(message, DmfActionUpdateStatus.class); final Action action = checkActionExist(message, actionUpdateStatus); final List<String> messages = actionUpdateStatus.getMessage(); if (isCorrelationIdNotEmpty(message)) { messages.add(RepositoryConstants.SERVER_MESSAGE_PREFIX + "DMF message correlation-id " + message.getMessageProperties().getCorrelationId()); } final Status status = mapStatus(message, actionUpdateStatus, action); final ActionStatusCreate actionStatus = entityFactory.actionStatus().create(action.getId()).status(status) .messages(messages); final Action addUpdateActionStatus = getUpdateActionStatus(status, actionStatus); if (!addUpdateActionStatus.isActive() || (addUpdateActionStatus.hasMaintenanceSchedule() && addUpdateActionStatus.isMaintenanceWindowAvailable())) { lookIfUpdateAvailable(action.getTarget()); } }
/** * Creates a list of {@link ProxyAction}s for presentation layer from slice * of {@link Action}s. * * @param actionBeans * slice of {@link Action}s * @return list of {@link ProxyAction}s */ private static List<ProxyAction> createProxyActions(final Slice<Action> actionBeans) { final List<ProxyAction> proxyActions = new ArrayList<>(); for (final Action action : actionBeans) { final ProxyAction proxyAction = new ProxyAction(); final String dsNameVersion = action.getDistributionSet().getName() + ":" + action.getDistributionSet().getVersion(); proxyAction.setActive(action.isActive()); proxyAction.setIsActiveDecoration(buildIsActiveDecoration(action)); proxyAction.setDsNameVersion(dsNameVersion); proxyAction.setAction(action); proxyAction.setId(action.getId()); proxyAction.setLastModifiedAt(action.getLastModifiedAt()); proxyAction.setRolloutName(action.getRollout() != null ? action.getRollout().getName() : ""); proxyAction.setStatus(action.getStatus()); proxyAction.setMaintenanceWindow( action.hasMaintenanceSchedule() ? buildMaintenanceWindowDisplayText(action) : ""); proxyActions.add(proxyAction); } return proxyActions; }
/** * Creates a list of {@link ProxyAction}s for presentation layer from slice * of {@link Action}s. * * @param actionBeans * slice of {@link Action}s * @return list of {@link ProxyAction}s */ private static List<ProxyAction> createProxyActions(final Slice<Action> actionBeans) { final List<ProxyAction> proxyActions = new ArrayList<>(); for (final Action action : actionBeans) { final ProxyAction proxyAction = new ProxyAction(); final String dsNameVersion = action.getDistributionSet().getName() + ":" + action.getDistributionSet().getVersion(); proxyAction.setActive(action.isActive()); proxyAction.setIsActiveDecoration(buildIsActiveDecoration(action)); proxyAction.setDsNameVersion(dsNameVersion); proxyAction.setAction(action); proxyAction.setId(action.getId()); proxyAction.setLastModifiedAt(action.getLastModifiedAt()); proxyAction.setRolloutName(action.getRollout() != null ? action.getRollout().getName() : ""); proxyAction.setStatus(action.getStatus()); proxyAction.setMaintenanceWindow( action.hasMaintenanceSchedule() ? buildMaintenanceWindowDisplayText(action) : ""); proxyActions.add(proxyAction); } return proxyActions; }
static MgmtAction toResponse(final String targetId, final Action action) { final MgmtAction result = new MgmtAction(); result.setActionId(action.getId()); result.setType(getType(action)); if (ActionType.TIMEFORCED.equals(action.getActionType())) { result.setForceTime(action.getForcedTime()); } result.setForceType(MgmtRestModelMapper.convertActionType(action.getActionType())); if (action.isActive()) { result.setStatus(MgmtAction.ACTION_PENDING); } else { result.setStatus(MgmtAction.ACTION_FINISHED); } if (action.hasMaintenanceSchedule()) { final MgmtMaintenanceWindow maintenanceWindow = new MgmtMaintenanceWindow(); maintenanceWindow.setSchedule(action.getMaintenanceWindowSchedule()); maintenanceWindow.setDuration(action.getMaintenanceWindowDuration()); maintenanceWindow.setTimezone(action.getMaintenanceWindowTimeZone()); action.getMaintenanceWindowStartTime() .ifPresent(nextStart -> maintenanceWindow.setNextStartAt(nextStart.toInstant().toEpochMilli())); result.setMaintenanceWindow(maintenanceWindow); } MgmtRestModelMapper.mapBaseToBase(result, action); result.add(linkTo(methodOn(MgmtTargetRestApi.class).getAction(targetId, action.getId())).withSelfRel()); return result; }