Search in sources :

Example 1 with ScheduleCycleType

use of com.emc.vipr.model.catalog.ScheduleCycleType in project coprhd-controller by CoprHD.

the class OrderExecution method createScheduledOrder.

protected static ScheduledEventCreateParam createScheduledOrder(OrderCreateParam orderParam) {
    if (!isSchedulerEnabled()) {
        return null;
    }
    ScheduleInfo scheduleInfo = new ScheduleInfo();
    String cycleFrequency = params.get("scheduler.cycleFrequency");
    if (cycleFrequency != null) {
        scheduleInfo.setCycleFrequency(Integer.parseInt(cycleFrequency));
    } else {
        scheduleInfo.setCycleFrequency(1);
    }
    String cycleType = params.get("scheduler.cycleType");
    if (cycleType != null) {
        ScheduleCycleType cycleTypeEnum = ScheduleCycleType.valueOf(cycleType);
        scheduleInfo.setCycleType(cycleTypeEnum);
        List<String> sectionsInCycleList = Lists.newArrayList();
        if (cycleTypeEnum == ScheduleCycleType.WEEKLY) {
            String sectionsInCycle = params.get("scheduler.dayOfWeek");
            sectionsInCycleList.add(sectionsInCycle);
        } else if (cycleTypeEnum == ScheduleCycleType.MONTHLY) {
            String sectionsInCycle = params.get("scheduler.dayOfMonth");
            sectionsInCycleList.add(sectionsInCycle);
        }
        scheduleInfo.setSectionsInCycle(sectionsInCycleList);
    } else {
        scheduleInfo.setCycleType(ScheduleCycleType.DAILY);
    }
    String currentTimezoneOffsetInMins = params.get("scheduler.currentTimezoneOffsetInMins");
    Integer timezoneOffset = Integer.parseInt(currentTimezoneOffsetInMins);
    String startDate = params.get("scheduler.startDate");
    String startTime = params.get("scheduler.startTime");
    String isoDateTimeStr = String.format("%sT%s", startDate, startTime);
    DateTime startDateTime = DateTime.parse(isoDateTimeStr, ISODateTimeFormat.localDateOptionalTimeParser().withZone(TimeUtils.getLocalTimeZone(timezoneOffset)));
    startDateTime = startDateTime.withZone(DateTimeZone.UTC);
    scheduleInfo.setHourOfDay(startDateTime.getHourOfDay());
    scheduleInfo.setMinuteOfHour(startDateTime.getMinuteOfHour());
    scheduleInfo.setStartDate(String.format("%d-%02d-%02d", startDateTime.getYear(), startDateTime.getMonthOfYear(), startDateTime.getDayOfMonth()));
    String recurrence = params.get("scheduler.recurrence");
    int recurrenceNum = 1;
    if (recurrence != null) {
        recurrenceNum = Integer.parseInt(recurrence);
        if (recurrenceNum == -1) {
            String range = params.get("scheduler.rangeOfRecurrence");
            recurrenceNum = Integer.parseInt(range);
        }
    }
    scheduleInfo.setReoccurrence(recurrenceNum);
    /*
         * if reoccurence number large than 1, we must make sure the name contains patten {datetime},
         * with the pattern in the name, vipr know how to generate dynamic name for each snaphot/fullcopy.
         */
    if (recurrenceNum != 1) {
        List<Parameter> parameters = orderParam.getParameters();
        CatalogServiceRestRep service = CatalogServiceUtils.getCatalogService(orderParam.getCatalogService());
        Logger.info("creating order with parameter for: " + service.getBaseService());
        String nameToValidate = SCHEDULED_SERVICE.get(service.getBaseService());
        for (Parameter parameter : parameters) {
            if (parameter.getLabel().equals(nameToValidate) && !parameter.getValue().contains("{datetime}")) {
                Validation.addError(nameToValidate, "need to add patten '{datetime}' in the name for reoccuring scheduled operation");
            }
            Logger.info(parameter.getLabel() + " = " + parameter.getValue() + ", " + parameter.getFriendlyLabel() + " = " + parameter.getFriendlyValue());
        }
    }
    String maxNumOfCopies = params.get("scheduler.maxNumOfCopies");
    if (maxNumOfCopies != null) {
        orderParam.setAdditionalScheduleInfo(maxNumOfCopies);
    }
    scheduleInfo.setDurationLength(3600);
    ScheduledEventCreateParam eventParam = new ScheduledEventCreateParam();
    eventParam.setOrderCreateParam(orderParam);
    eventParam.setScheduleInfo(scheduleInfo);
    return eventParam;
}
Also used : Parameter(com.emc.vipr.model.catalog.Parameter) CatalogServiceRestRep(com.emc.vipr.model.catalog.CatalogServiceRestRep) ScheduledEventCreateParam(com.emc.vipr.model.catalog.ScheduledEventCreateParam) ScheduleInfo(com.emc.vipr.model.catalog.ScheduleInfo) DateTime(org.joda.time.DateTime) ScheduleCycleType(com.emc.vipr.model.catalog.ScheduleCycleType)

Aggregations

CatalogServiceRestRep (com.emc.vipr.model.catalog.CatalogServiceRestRep)1 Parameter (com.emc.vipr.model.catalog.Parameter)1 ScheduleCycleType (com.emc.vipr.model.catalog.ScheduleCycleType)1 ScheduleInfo (com.emc.vipr.model.catalog.ScheduleInfo)1 ScheduledEventCreateParam (com.emc.vipr.model.catalog.ScheduledEventCreateParam)1 DateTime (org.joda.time.DateTime)1