~hudson-openstack/burrow/trunk

« back to all changes in this revision

Viewing changes to burrow/backend/memory.py

  • Committer: Eric Day
  • Date: 2011-08-24 16:54:43 UTC
  • mto: This revision was merged to the branch mainline in revision 37.
  • Revision ID: eday@oddments.org-20110824165443-r2ewwa8mrr3yaxnz
More docs for backend modules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
175
175
        self.prev = None
176
176
 
177
177
    def detail(self, detail):
 
178
        '''Format detail response for this item.'''
178
179
        if detail == 'id':
179
180
            return self.id
180
181
        elif detail == 'all':
193
194
        self.index = {}
194
195
 
195
196
    def add(self, item):
 
197
        '''Add a new item to the list.'''
196
198
        if self.first is None:
197
199
            self.first = item
198
200
        if self.last is not None:
203
205
        return item
204
206
 
205
207
    def count(self):
 
208
        '''Return a count of the number of items in the list.'''
206
209
        return len(self.index)
207
210
 
208
211
    def delete(self, id):
 
212
        '''Delete an item from the list by id.'''
209
213
        item = self.index.pop(id)
210
214
        if item.next is not None:
211
215
            item.next.prev = item.prev
217
221
            self.last = item.prev
218
222
 
219
223
    def get(self, id, create=False):
 
224
        '''Get an item from the list by id.'''
220
225
        if id in self.index:
221
226
            return self.index[id]
222
227
        elif create:
224
229
        raise burrow.backend.NotFound()
225
230
 
226
231
    def iter(self, filters=None):
 
232
        '''Iterate through all items in the list, possibly filtered.'''
227
233
        if filters is None:
228
234
            marker = None
229
235
            limit = None
245
251
            item = item.next
246
252
 
247
253
    def reset(self):
 
254
        '''Remove all items in the list.'''
248
255
        if self.count() == 0:
249
256
            raise burrow.backend.NotFound()
250
257
        self.first = None
253
260
 
254
261
 
255
262
class Account(Item):
 
263
    '''A type of item representing an account.'''
256
264
 
257
265
    def __init__(self, id=None):
258
266
        super(Account, self).__init__(id)
260
268
 
261
269
 
262
270
class Accounts(IndexedList):
 
271
    '''A type of list representing an account list.'''
263
272
 
264
273
    item_class = Account
265
274
 
266
275
    def delete_queue(self, account, queue):
 
276
        '''Delete a queue within the given account.'''
267
277
        account = self.get(account)
268
278
        if account is not None:
269
279
            account.queues.delete(queue)
271
281
                self.delete(account.id)
272
282
 
273
283
    def get_queue(self, account, queue, create=False):
 
284
        '''Get a queue within the given the account.'''
274
285
        if account in self.index:
275
286
            account = self.index[account]
276
287
        elif create:
281
292
 
282
293
 
283
294
class Queue(Item):
 
295
    '''A type of item representing a queue.'''
284
296
 
285
297
    def __init__(self, id=None):
286
298
        super(Queue, self).__init__(id)
288
300
 
289
301
 
290
302
class Queues(IndexedList):
 
303
    '''A type of list representing a queue list.'''
291
304
 
292
305
    item_class = Queue
293
306
 
294
307
 
295
308
class Message(Item):
 
309
    '''A type of item representing a message.'''
296
310
 
297
311
    def __init__(self, id=None):
298
312
        super(Message, self).__init__(id)
319
333
 
320
334
 
321
335
class Messages(IndexedList):
 
336
    '''A type of list representing a message list.'''
322
337
 
323
338
    item_class = Message
324
339