mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Merge remote-tracking branch 'apache/4.19' into 4.20
This commit is contained in:
commit
7044564bab
@ -18,6 +18,29 @@
|
||||
*/
|
||||
package org.apache.cloudstack.vm.schedule;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.cloudstack.api.ApiCommandResourceType;
|
||||
import org.apache.cloudstack.api.command.user.vm.CreateVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.DeleteVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.ListVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.UpdateVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.response.ListResponse;
|
||||
import org.apache.cloudstack.api.response.VMScheduleResponse;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.vm.schedule.dao.VMScheduleDao;
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.scheduling.support.CronExpression;
|
||||
|
||||
import com.cloud.api.query.MutualExclusiveIdsManagerBase;
|
||||
import com.cloud.event.ActionEvent;
|
||||
import com.cloud.event.EventTypes;
|
||||
@ -32,26 +55,6 @@ import com.cloud.utils.db.TransactionCallback;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.vm.UserVmManager;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import org.apache.cloudstack.api.ApiCommandResourceType;
|
||||
import org.apache.cloudstack.api.command.user.vm.CreateVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.DeleteVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.ListVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.command.user.vm.UpdateVMScheduleCmd;
|
||||
import org.apache.cloudstack.api.response.ListResponse;
|
||||
import org.apache.cloudstack.api.response.VMScheduleResponse;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.cloudstack.vm.schedule.dao.VMScheduleDao;
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.scheduling.support.CronExpression;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class VMScheduleManagerImpl extends MutualExclusiveIdsManagerBase implements VMScheduleManager, PluggableService {
|
||||
|
||||
@ -205,6 +208,9 @@ public class VMScheduleManagerImpl extends MutualExclusiveIdsManagerBase impleme
|
||||
Date cmdStartDate = cmd.getStartDate();
|
||||
Date cmdEndDate = cmd.getEndDate();
|
||||
Boolean enabled = cmd.getEnabled();
|
||||
final String originalTimeZone = vmSchedule.getTimeZone();
|
||||
final Date originalStartDate = vmSchedule.getStartDate();
|
||||
final Date originalEndDate = vmSchedule.getEndDate();
|
||||
|
||||
TimeZone timeZone;
|
||||
String timeZoneId;
|
||||
@ -231,7 +237,13 @@ public class VMScheduleManagerImpl extends MutualExclusiveIdsManagerBase impleme
|
||||
startDate = Date.from(DateUtil.getZoneDateTime(cmdStartDate, timeZone.toZoneId()).toInstant());
|
||||
}
|
||||
|
||||
validateStartDateEndDate(Objects.requireNonNullElse(startDate, DateUtils.addMinutes(new Date(), 1)), endDate, timeZone);
|
||||
if (ObjectUtils.anyNotNull(cmdStartDate, cmdEndDate, cmdTimeZone) &&
|
||||
(!Objects.equals(originalTimeZone, timeZoneId) ||
|
||||
!Objects.equals(originalStartDate, startDate) ||
|
||||
!Objects.equals(originalEndDate, endDate))) {
|
||||
validateStartDateEndDate(Objects.requireNonNullElse(startDate, DateUtils.addMinutes(new Date(), 1)),
|
||||
endDate, timeZone);
|
||||
}
|
||||
|
||||
if (enabled != null) {
|
||||
vmSchedule.setEnabled(enabled);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user