Statistics
| Branch: | Tag: | Revision:

root / commissioning / api / quotaholder.py @ a2db0eb5

History | View | Annotate | Download (7.3 kB)

1

    
2
from .specificator  import (CanonifyException, SpecifyException,
3
                            Specificator, Null, Integer, Text,
4
                            Tuple, ListOf, Dict, Args)
5

    
6
Context             =   Dict(classname='Context')
7

    
8
class Name(Text):
9
    def init(self):
10
        self.opts.update({'regex': "[\w.:]+", 'maxlen':512})
11

    
12
class Nonnegative(Integer):
13
    def init(self):
14
        self.opts.update({'minimum': 0})
15

    
16
class Positive(Integer):
17
    def init(self):
18
        self.opts.update({'minimum': 1})
19

    
20
Serial              =   Positive(classname='Serial')
21

    
22
ClientKey           =   Name(classname='ClientKey')
23
Nothing             =   Null(classname='Nothing')
24

    
25
Entity              =   Name(classname='Entity')
26
Owner               =   Name(classname='Owner')
27
Key                 =   Name(classname='Key')
28
NewKey              =   Name(classname='Newkey')
29
OwnerKey            =   Name(classname='OwnerKey')
30
Resource            =   Name(classname='Resource')
31
Policy              =   Name(classname='Policy')
32

    
33
Quantity            =   Integer(classname='Quantity')
34
Capacity            =   Nonnegative(classname='Capacity', null=True)
35
ImportLimit         =   Nonnegative(classname='ImportLimit', null=True)
36
ExportLimit         =   Nonnegative(classname='ExportLimit', null=True)
37
Imported            =   Nonnegative(classname='Imported')
38
Exported            =   Nonnegative(classname='Exported')
39
Regained            =   Nonnegative(classname='Regained')
40
Released            =   Nonnegative(classname='Released')
41
Flags               =   Nonnegative(classname='Flags')
42

    
43
Timepoint           =   Text(classname='Timepoint', maxlen=24)
44
Reason              =   Text(   classname   =   'Reason',
45
                                regex       =   '(ACCEPT|REJECT):.*',
46
                                maxlen      =   128         )
47

    
48
class QuotaholderAPI(Specificator):
49

    
50
    def create_entity   (
51
                self,
52
                context         =   Context,
53
                create_entity   =   ListOf(Entity, Owner, Key, OwnerKey, nonempty=1)
54
        ):
55

    
56
        rejected = ListOf(Entity)
57
        return rejected
58

    
59
    def set_entity_key        (
60
                self,
61
                context         =   Context,
62
                set_entity_key  =   ListOf(Entity, Key, NewKey)
63
        ):
64

    
65
        rejected = ListOf(Entity)
66
        return rejected
67

    
68
    def list_entities   (
69
                self,
70
                context         =   Context,
71
                entity          =   Entity,
72
                key             =   Key
73
        ):
74

    
75
        entities = ListOf(Entity)
76
        return entities
77

    
78
    def get_entity  (
79
                self,
80
                context     =   Context,
81
                get_entity  =   ListOf(Entity, Key, nonempty=1)
82
        ):
83

    
84
        entities = ListOf(Entity, Owner)
85
        return entities
86

    
87
    def get_limits  (
88
                self,
89
                context     =   Context,
90
                get_limits  =   ListOf(Entity, Resource, Key, nonempty=1)
91
        ):
92

    
93
        limits = ListOf(Entity, Resource, Quantity, Capacity,
94
                        ImportLimit, ExportLimit, Flags)
95
        return limits
96

    
97
    def set_limits  (
98
                self,
99
                context     =   Context,
100
                set_limits  =   ListOf( Entity, Resource, Key,
101
                                        Quantity, Capacity,
102
                                        ImportLimit, ExportLimit, Flags,
103
                                        nonempty=1 )
104
        ):
105

    
106
        rejected = ListOf(Entity, Resource)
107
        return rejected
108

    
109
    def get_holding (
110
                self,
111
                context     =   Context,
112
                get_holding =   ListOf(Entity, Resource, Key)
113
        ):
114

    
115
        holdings = ListOf(  Entity, Resource, Policy,
116
                            Imported, Exported, Regained, Released, Flags   )
117
        return holdings
118

    
119
    def set_holding (
120
                self,
121
                context     =   Context,
122
                set_holding =   ListOf(Entity, Resource, Key, Policy, Flags)
123
        ):
124

    
125
        rejected = ListOf(Entity, Resource, Policy)
126
        return rejected
127

    
128
    def list_resources  (
129
                self,
130
                context     =   Context,
131
                entity      =   Entity,
132
                key         =   Key
133
        ):
134

    
135
        resources = ListOf(Resource)
136
        return resources
137

    
138
    def get_quota   (
139
                self,
140
                context     =   Context,
141
                get_quota   =   ListOf(Entity, Resource, Key)
142
        ):
143

    
144
        quotas = ListOf(Entity, Resource,
145
                        Quantity, Capacity,
146
                        ImportLimit, ExportLimit,
147
                        Imported, Exported,
148
                        Regained, Released,
149
                        Flags)
150
        return quotas
151

    
152
    def set_quota   (
153
                self,
154
                context     =   Context,
155
                set_quota   =   ListOf( Entity, Resource, Key,
156
                                        Quantity, Capacity,
157
                                        ImportLimit, ExportLimit, Flags )
158
        ):
159

    
160
        rejected = ListOf(Entity, Resource)
161
        return rejected
162

    
163
    def issue_commission    (
164
                self,
165
                context     =   Context,
166
                target      =   Entity,
167
                key         =   Key,
168
                clientkey   =   ClientKey,
169
                owner       =   Owner,
170
                ownerkey    =   OwnerKey,
171
                provisions  =   ListOf(Entity, Resource, Quantity)
172
        ):
173

    
174
        return Serial
175

    
176
    def accept_commission   (
177
                self,
178
                context     =   Context,
179
                clientkey   =   ClientKey,
180
                serials     =   ListOf(Serial)
181
        ):
182

    
183
        return Nothing
184

    
185
    def reject_commission   (
186
                self,
187
                context     =   Context,
188
                clientkey   =   ClientKey,
189
                serials     =   ListOf(Serial)
190
        ):
191

    
192
        return Nothing
193

    
194
    def get_pending_commissions (
195
                    self,
196
                    context     =   Context,
197
                    clientkey   =   ClientKey
198
        ):
199

    
200
        pending = ListOf(Serial)
201
        return pending
202

    
203
    def resolve_pending_commissions (
204
                    self,
205
                    context     =   Context,
206
                    clientkey   =   ClientKey,
207
                    max_serial  =   Serial,
208
                    accept_set  =   ListOf(Serial)
209
        ):
210

    
211
        return Nothing
212

    
213
    def release_entity  (
214
                self,
215
                context         =   Context,
216
                release_entity  =   ListOf(Entity, Key, nonempty=1)
217
        ):
218

    
219
        rejected = ListOf(Entity)
220
        return rejected
221

    
222
    def get_timeline    (
223
                self,
224
                context         =   Context,
225
                after           =   Timepoint,
226
                before          =   Timepoint,
227
                entities        =   ListOf(Entity, Key)
228
        ):
229

    
230
        timeline = ListOf(  Dict(   serial      =   Serial,
231
                                    source      =   Entity,
232
                                    target      =   Entity,
233
                                    resource    =   Resource,
234
                                    quantity    =   Quantity,
235
                                    issue_time  =   Timepoint,
236
                                    log_time    =   Timepoint,
237
                                    reason      =   Reason      )   )
238
        return timeline
239