On Mon, Dec 10, 2012 at 1:53 PM, Rohit Yadav <rohit.ya...@citrix.com> wrote: > Nitin and Kishan, can you give a use case or example for the logic/details > you have given. > Would it make sense to just simplify the logic based on start time and > window/duration and let the developer/user decide how they would want to > filter/reduce the response?
IMO, it would! However, if someone makes this change, please consider that we are trying to keep the API in our next feature release backward compatible with 4.0.0-incubating. Otherwise, we'll have to bump up the major version number, meaning that we would be releasing 5.0.0-incubating. If we make it easier for an external developer to grok, we should ensure that the existing params remain as-is in both name and meaning. -chip > Regards. > > On 10-Dec-2012, at 5:45 AM, Kishan Kavala <kishan.kav...@citrix.com> wrote: > >> Just to clarify. >> The purpose of finding pending events is to list any APIs initiated in the >> last x seconds(entry time) and are still not completed after running for at >> least y seconds (duration). >> For example, To find events for APIs initiated in the last 24 hrs and are >> not completed after running for at least 30mins, entry time and duration >> would be as follows: >> >> EntryTime = 86400 >> Duration = 3600 >> >> More info on Events: >> http://wiki.cloudstack.org/display/DesignDocs/Action+Events >> >> Implementation details: >> 1. Find all the events created in the last x seconds with start_id = 0 and >> not in Completed state, excluding the event started in the last y seconds >> 2. Look for the corresponding Completed event >> 3. Add to pending list if Completed event is not found. >> >> ~kishan >> >> -----Original Message----- >> From: Nitin Mehta [mailto:nitin.me...@citrix.com] >> Sent: Sunday, 9 December 2012 3:31 PM >> To: cloudstack-dev@incubator.apache.org >> Subject: Re: Question on ListEventsCmd >> >> Min - I will take a stab at this. See if this makes sense to you. I haven't >> used them but I think the intention of the code should be this. >> >> If say you want to query events within a time range then you will use these >> parameter. Say at this point of time you want to get all the events that >> took place in the last 2 mins then you will mention entryTime = 120 and >> duration=0. I think the duration should be interpreted as end time and there >> reference is from current system time. So entry time means how many seconds >> before the current time and duration (end time) is how many seconds before >> the current time. >> In our example, since we want to query events that happened in the last 120 >> secs I mention entry time as 120 and end time as 0 and as is clear the >> duration or the end time shouldn't exceed the entry time. >> >> Please file documentation bugs and test if these params work as intended. >> >> Thanks, >> -Nitin >> >> On 08-Dec-2012, at 5:07 AM, Min Chen wrote: >> >>> Hi there, >>> >>> In refactoring ListEventsCmd api, I ran into the following code which is a >>> mystery to me, hope that somebody can explain here: >>> >>> >>> if ((entryTime != null) && (duration != null)) { >>> >>> if (entryTime <= duration) { >>> >>> throw new InvalidParameterValueException("Entry time >>> must be greater than duration"); >>> >>> } >>> >>> Calendar calMin = Calendar.getInstance(); >>> >>> Calendar calMax = Calendar.getInstance(); >>> >>> calMin.add(Calendar.SECOND, -entryTime); >>> >>> calMax.add(Calendar.SECOND, -duration); >>> >>> Date minTime = calMin.getTime(); >>> >>> Date maxTime = calMax.getTime(); >>> >>> >>> sc.setParameters("state", >>> com.cloud.event.Event.State.Completed); >>> >>> sc.setParameters("startId", 0); >>> >>> sc.setParameters("createDate", minTime, maxTime); >>> >>> List<EventJoinVO> startedEvents = >>> _eventJoinDao.searchAllEvents(sc, searchFilter); >>> >>> List<EventJoinVO> pendingEvents = new >>> ArrayList<EventJoinVO>(); >>> >>> for (EventVO event : startedEvents) { >>> >>> EventVO completedEvent = >>> _eventDao.findCompletedEvent(event.getId()); >>> >>> if (completedEvent == null) { >>> >>> pendingEvents.add(event); >>> >>> } >>> >>> } >>> >>> return pendingEvents; >>> >>> } >>> >>> >>> I have several questions here: >>> >>> 1. What are entryTime and duration parameters here? Based on API doc, here >>> are description on these two cmd parameters: >>> >>> entryTime: the time the event is entered >>> >>> duration: the duration of the event >>> >>> But from code, it seems that they are both Integer type. So not sure how >>> to understand the entryTime and duration here, contradictory to my English >>> understanding. >>> >>> 2. In the code above, why must we have "Entry time must be greater than >>> duration"? >>> >>> 3. When user provides entryTime and duration parameters in the search, what >>> kind of events are we supposed to return here? I don't quite understand the >>> pendingEvents list we are constructing here. >>> >>> >>> Thanks >>> >>> -min >> > >