Skip to content

Commit b653bf7

Browse files
committed
fixup
1 parent 2fae1e4 commit b653bf7

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

engine/schema/src/main/java/org/apache/cloudstack/schedule/dao/ResourceScheduleDaoImpl.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.apache.commons.collections4.CollectionUtils;
3030
import org.springframework.stereotype.Component;
3131

32-
import java.util.Date;
3332
import java.util.List;
3433

3534
@Component
@@ -47,9 +46,6 @@ public ResourceScheduleDaoImpl() {
4746
activeScheduleSearch = createSearchBuilder();
4847
activeScheduleSearch.and(RESOURCE_TYPE, activeScheduleSearch.entity().getResourceType(), SearchCriteria.Op.EQ);
4948
activeScheduleSearch.and(ApiConstants.ENABLED, activeScheduleSearch.entity().getEnabled(), SearchCriteria.Op.EQ);
50-
activeScheduleSearch.and().op(activeScheduleSearch.entity().getEndDate(), SearchCriteria.Op.NULL);
51-
activeScheduleSearch.or(ApiConstants.END_DATE, activeScheduleSearch.entity().getEndDate(), SearchCriteria.Op.GT);
52-
activeScheduleSearch.cp();
5349
activeScheduleSearch.done();
5450

5551
allSearch = createSearchBuilder();
@@ -66,7 +62,6 @@ public List<ResourceScheduleVO> listAllActiveSchedules(ApiCommandResourceType re
6662
SearchCriteria<ResourceScheduleVO> sc = activeScheduleSearch.create();
6763
sc.setParameters(RESOURCE_TYPE, resourceType);
6864
sc.setParameters(ApiConstants.ENABLED, true);
69-
sc.setParameters(ApiConstants.END_DATE, new Date());
7065
return search(sc, null);
7166
}
7267

server/src/test/java/org/apache/cloudstack/schedule/vm/VMScheduleWorkerTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,29 @@ public void testScheduleNextJobScheduleExpired() {
292292
Assert.assertNull(actualDate);
293293
}
294294

295+
@Test
296+
public void testScheduleNextJobNextOccurrenceAfterEndDate() {
297+
Date now = DateUtils.setSeconds(new Date(), 0);
298+
ResourceScheduleVO schedule = Mockito.mock(ResourceScheduleVO.class);
299+
Mockito.when(schedule.getEnabled()).thenReturn(true);
300+
Mockito.when(schedule.getSchedule()).thenReturn("* * * * *");
301+
Mockito.when(schedule.getTimeZoneId()).thenReturn(TimeZone.getTimeZone("UTC").toZoneId());
302+
// endDate is in the future (now < endDate), but the first occurrence (>= startDate)
303+
// falls after endDate, so no further jobs can ever be scheduled. The schedule's
304+
// declared lifetime hasn't ended yet though, so it must remain enabled until
305+
// endDate actually passes (handled separately by the "end time has passed" branch).
306+
Mockito.when(schedule.getStartDate()).thenReturn(DateUtils.addDays(now, 10));
307+
Mockito.when(schedule.getEndDate()).thenReturn(DateUtils.addDays(now, 5));
308+
Mockito.when(schedule.getResourceId()).thenReturn(1L);
309+
Mockito.when(userVmManager.getUserVm(Mockito.anyLong())).thenReturn(Mockito.mock(UserVm.class));
310+
311+
Date actualDate = vmScheduleWorker.scheduleNextJob(schedule, new Date());
312+
313+
Assert.assertNull(actualDate);
314+
Mockito.verify(schedule, Mockito.never()).setEnabled(Mockito.anyBoolean());
315+
Mockito.verify(resourceScheduleDao, Mockito.never()).persist(Mockito.any());
316+
}
317+
295318
@Test
296319
public void testScheduleNextJobScheduleDisabled() {
297320
ResourceScheduleVO schedule = Mockito.mock(ResourceScheduleVO.class);

ui/src/views/compute/ResourceSchedules.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,9 +482,8 @@ export default {
482482
Object.assign(this.form, schedule)
483483
this.form.minMembers = schedule?.details?.minmembers ? Number(schedule.details.minmembers) : null
484484
this.form.maxMembers = schedule?.details?.maxmembers ? Number(schedule.details.maxmembers) : null
485-
// Some weird issue when we directly pass in the moment with tz object
486-
this.form.startDate = dayjs(schedule.startdate).tz(schedule.timezone)
487-
this.form.endDate = schedule.enddate ? dayjs(dayjs(schedule.enddate).tz(schedule.timezone)) : null
485+
this.form.startDate = dayjs(schedule.startdate)
486+
this.form.endDate = schedule.enddate ? dayjs(schedule.enddate) : null
488487
this.showAddModal()
489488
},
490489
showAddModal () {

0 commit comments

Comments
 (0)