Skip to content

Commit 7044564

Browse files
committed
Merge remote-tracking branch 'apache/4.19' into 4.20
2 parents f26f8cc + fe120b6 commit 7044564

File tree

1 file changed

+33
-21
lines changed

1 file changed

+33
-21
lines changed

server/src/main/java/org/apache/cloudstack/vm/schedule/VMScheduleManagerImpl.java

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,29 @@
1818
*/
1919
package org.apache.cloudstack.vm.schedule;
2020

21+
import java.time.ZonedDateTime;
22+
import java.util.ArrayList;
23+
import java.util.Date;
24+
import java.util.List;
25+
import java.util.Objects;
26+
import java.util.TimeZone;
27+
28+
import javax.inject.Inject;
29+
30+
import org.apache.cloudstack.api.ApiCommandResourceType;
31+
import org.apache.cloudstack.api.command.user.vm.CreateVMScheduleCmd;
32+
import org.apache.cloudstack.api.command.user.vm.DeleteVMScheduleCmd;
33+
import org.apache.cloudstack.api.command.user.vm.ListVMScheduleCmd;
34+
import org.apache.cloudstack.api.command.user.vm.UpdateVMScheduleCmd;
35+
import org.apache.cloudstack.api.response.ListResponse;
36+
import org.apache.cloudstack.api.response.VMScheduleResponse;
37+
import org.apache.cloudstack.context.CallContext;
38+
import org.apache.cloudstack.vm.schedule.dao.VMScheduleDao;
39+
import org.apache.commons.lang.time.DateUtils;
40+
import org.apache.commons.lang3.ObjectUtils;
41+
import org.apache.commons.lang3.StringUtils;
42+
import org.springframework.scheduling.support.CronExpression;
43+
2144
import com.cloud.api.query.MutualExclusiveIdsManagerBase;
2245
import com.cloud.event.ActionEvent;
2346
import com.cloud.event.EventTypes;
@@ -32,26 +55,6 @@
3255
import com.cloud.utils.exception.CloudRuntimeException;
3356
import com.cloud.vm.UserVmManager;
3457
import com.cloud.vm.VirtualMachine;
35-
import org.apache.cloudstack.api.ApiCommandResourceType;
36-
import org.apache.cloudstack.api.command.user.vm.CreateVMScheduleCmd;
37-
import org.apache.cloudstack.api.command.user.vm.DeleteVMScheduleCmd;
38-
import org.apache.cloudstack.api.command.user.vm.ListVMScheduleCmd;
39-
import org.apache.cloudstack.api.command.user.vm.UpdateVMScheduleCmd;
40-
import org.apache.cloudstack.api.response.ListResponse;
41-
import org.apache.cloudstack.api.response.VMScheduleResponse;
42-
import org.apache.cloudstack.context.CallContext;
43-
import org.apache.cloudstack.vm.schedule.dao.VMScheduleDao;
44-
import org.apache.commons.lang.time.DateUtils;
45-
import org.apache.commons.lang3.StringUtils;
46-
import org.springframework.scheduling.support.CronExpression;
47-
48-
import javax.inject.Inject;
49-
import java.time.ZonedDateTime;
50-
import java.util.ArrayList;
51-
import java.util.Date;
52-
import java.util.List;
53-
import java.util.Objects;
54-
import java.util.TimeZone;
5558

5659
public class VMScheduleManagerImpl extends MutualExclusiveIdsManagerBase implements VMScheduleManager, PluggableService {
5760

@@ -205,6 +208,9 @@ public VMScheduleResponse updateSchedule(UpdateVMScheduleCmd cmd) {
205208
Date cmdStartDate = cmd.getStartDate();
206209
Date cmdEndDate = cmd.getEndDate();
207210
Boolean enabled = cmd.getEnabled();
211+
final String originalTimeZone = vmSchedule.getTimeZone();
212+
final Date originalStartDate = vmSchedule.getStartDate();
213+
final Date originalEndDate = vmSchedule.getEndDate();
208214

209215
TimeZone timeZone;
210216
String timeZoneId;
@@ -231,7 +237,13 @@ public VMScheduleResponse updateSchedule(UpdateVMScheduleCmd cmd) {
231237
startDate = Date.from(DateUtil.getZoneDateTime(cmdStartDate, timeZone.toZoneId()).toInstant());
232238
}
233239

234-
validateStartDateEndDate(Objects.requireNonNullElse(startDate, DateUtils.addMinutes(new Date(), 1)), endDate, timeZone);
240+
if (ObjectUtils.anyNotNull(cmdStartDate, cmdEndDate, cmdTimeZone) &&
241+
(!Objects.equals(originalTimeZone, timeZoneId) ||
242+
!Objects.equals(originalStartDate, startDate) ||
243+
!Objects.equals(originalEndDate, endDate))) {
244+
validateStartDateEndDate(Objects.requireNonNullElse(startDate, DateUtils.addMinutes(new Date(), 1)),
245+
endDate, timeZone);
246+
}
235247

236248
if (enabled != null) {
237249
vmSchedule.setEnabled(enabled);

0 commit comments

Comments
 (0)