1 ##############################################################################
2 # Copyright (c) 2017 ZTE Corp
3 # feng.xiaowei@zte.com.cn
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
8 ##############################################################################
12 from tornado import gen
14 from opnfv_testapi.common import message
15 from opnfv_testapi.common import raises
16 from opnfv_testapi.db import api as dbapi
19 def valid_token(method):
20 @functools.wraps(method)
21 def wrapper(self, *args, **kwargs):
22 if self.auth and self.table == 'results':
24 token = self.request.headers['X-Auth-Token']
26 raises.Unauthorized(message.unauthorized())
27 query = {'access_token': token}
28 check = yield dbapi.db_find_one('tokens', query)
30 raises.Forbidden(message.invalid_token())
31 ret = yield gen.coroutine(method)(self, *args, **kwargs)
37 @functools.wraps(xstep)
38 def wrap(self, *args, **kwargs):
39 query = kwargs.get('query')
40 data = yield dbapi.db_find_one(self.table, query)
42 raises.NotFound(message.not_found(self.table, query))
43 ret = yield gen.coroutine(xstep)(self, data, *args, **kwargs)
50 @functools.wraps(xstep)
51 def wrap(self, *args, **kwargs):
52 if self.json_args is None:
53 raises.BadRequest(message.no_body())
54 ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
60 def miss_fields(xstep):
61 @functools.wraps(xstep)
62 def wrap(self, *args, **kwargs):
63 fields = kwargs.pop('miss_fields', [])
66 miss_data = self.json_args.get(miss)
67 if miss_data is None or miss_data == '':
68 raises.BadRequest(message.missing(miss))
69 ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
74 def carriers_exist(xstep):
75 @functools.wraps(xstep)
76 def wrap(self, *args, **kwargs):
77 carriers = kwargs.pop('carriers', {})
79 for table, query in carriers:
80 exist = yield dbapi.db_find_one(table, query())
82 raises.Forbidden(message.not_found(table, query()))
83 ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
88 def new_not_exists(xstep):
89 @functools.wraps(xstep)
90 def wrap(self, *args, **kwargs):
91 query = kwargs.get('query')
94 if self.table == 'pods':
95 if query_data.get('name') is not None:
96 query_data['name'] = re.compile(query_data.get('name'),
98 to_data = yield dbapi.db_find_one(self.table, query_data)
100 raises.Forbidden(message.exist(self.table, query()))
101 ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
102 raise gen.Return(ret)
106 def updated_one_not_exist(xstep):
107 @functools.wraps(xstep)
108 def wrap(self, data, *args, **kwargs):
109 db_keys = kwargs.pop('db_keys', [])
110 query = self._update_query(db_keys, data)
112 to_data = yield dbapi.db_find_one(self.table, query)
114 raises.Forbidden(message.exist(self.table, query))
115 ret = yield gen.coroutine(xstep)(self, data, *args, **kwargs)
116 raise gen.Return(ret)