2 # Author: Peter K. Lee (peter@corenova.com)
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
10 '/opnfv-promise/promise/capacity/total': (prev) ->
13 for k, v of b.capacity when v?
18 .filter (entry) -> entry.active is true
22 '/opnfv-promise/promise/capacity/reserved', (prev) ->
25 for k, v of b.capacity when v?
29 (@parent.get 'reservations')
30 .filter (entry) -> entry.active is true
34 # rebind to be a computed property
35 '/opnfv-promise/promise/capacity/usage': (prev) ->
38 for k, v of b.capacity when v?
42 (@parent.get 'allocations')
43 .filter (entry) -> entry.active is true
47 # rebind to be a computed property
48 '/opnfv-promise/promise/capacity/available': (prev) ->
51 reserved = @get 'reserved'
53 for k, v of total when v?
54 total[k] -= reserved[k] if reserved[k]?
55 total[k] -= usage[k] if usage[k]?
59 '/opnfv-promise/create-reservation':
60 (input, output, done) ->
61 # 1. create the reservation record (empty)
62 reservation = @create 'ResourceReservation'
63 reservations = @access 'promise.reservations'
65 # 2. update the record with requested input
66 reservation.invoke 'update', input.get()
68 # 3. save the record and add to list
72 output.set result: 'ok', message: 'reservation request accepted'
73 output.set 'reservation-id', res.id
76 output.set result: 'error', message: err
79 output.set result: 'conflict', message: err