def head(self, account=None, node_uuid=None, page_num=0): ''' Head nodes ''' # logging request query arguments logging.info('request query arguments {0}'.format(self.request.arguments)) # request query arguments query_args = self.request.arguments # get the current frontend logged username username = self.get_current_username() # if the user don't provide an account we use the frontend username as last resort account = (query_args.get('account', [username])[0] if not account else account) # query string checked from string to boolean checked = str2bool(str(query_args.get('checked', [False])[0])) if not node_uuid: # get list of nodes nodes = yield self.get_node_list(account, checked, page_num) self.set_status(200) self.finish({'nodes':nodes}) else: # try to get stuff from cache first logging.info('node_uuid {0}'.format(node_uuid.rstrip('/'))) data = self.cache.get('nodes:{0}'.format(node_uuid)) if data is not None: logging.info('nodes:{0} done retrieving!'.format(node_uuid)) result = data else: data = yield self.get_node(account, node_uuid.rstrip('/')) if self.cache.add('nodes:{0}'.format(node_uuid), data, 1): logging.info('new cache entry {0}'.format(str(data))) result = data # result = yield self.get_node(account, node_uuid) if not result: # -- need more info self.set_status(400) # -- why missing account? self.finish({'missing':account}) else: self.set_status(200) self.finish(result)
def get(self, account=None, imp_uuid=None, page_num=0): ''' Get imps ''' # logging request query arguments logging.info('request query arguments {0}'.format(self.request.arguments)) # request query arguments query_args = self.request.arguments # get the current frontend logged username username = self.get_current_username() # if the user don't provide an account we use the frontend username as last resort account = (query_args.get('account', [username])[0] if not account else account) # query string checked from string to boolean checked = str2bool(str(query_args.get('checked', [False])[0])) if not imp_uuid: # get list of directories imps = yield self.get_imp_list(account, checked, page_num) self.set_status(200) self.finish({'imps':imps}) else: # try to get stuff from cache first logging.info('imp_uuid {0}'.format(imp_uuid.rstrip('/'))) data = self.cache.get('imps:{0}'.format(imp_uuid)) if data is not None: logging.info('imps:{0} done retrieving!'.format(imp_uuid)) result = data else: data = yield self.get_imp(account, imp_uuid.rstrip('/')) if self.cache.add('imps:{0}'.format(imp_uuid), data, 1): logging.info('new cache entry {0}'.format(str(data))) result = data if not result: # -- need moar info self.set_status(400) self.finish({'missing account {0} imp_uuid {1} page_num {2} checked {3}'.format( account, imp_uuid.rstrip('/'), page_num, checked):result}) else: self.set_status(200) self.finish(result)
def get(self, account=None, node_uuid=None, page_num=0): ''' Get nodes ''' # logging request query arguments logging.info('request query arguments {0}'.format(self.request.arguments)) # request query arguments query_args = self.request.arguments # get the current frontend logged username username = self.get_current_username() # if the user don't provide an account we use the frontend username as last resort account = (query_args.get('account', [username])[0] if not account else account) # query string checked from string to boolean checked = query_args.get('checked', [False])[0] logging.warning(checked) testc = str2bool(str(checked)) logging.warning(testc) if not node_uuid: # get list of nodes nodes = yield self.get_node_list(account, checked, page_num) self.set_status(200) self.finish({'nodes':nodes}) else: #account = account.rstrip('/') logging.info('node_uuid {0}'.format(node_uuid.rstrip('/'))) result = yield self.get_node(account, node_uuid.rstrip('/')) if not result: # -- need to clean this info self.set_status(400) self.finish({'missing account {0} node_uuid {1} page_num {2} checked {3}'.format( account, node_uuid.rstrip('/'), page_num, checked):result}) else: self.set_status(200) self.finish(result)
def get_nodes_list(self, account, checked, page_num): ''' Get nodes list ''' page_num = int(page_num) page_size = self.settings.get('page_size') nodes_list = [] find_query = {'account':account} if checked != 'all': find_query['checked'] = str2bool(str(checked)) query = self.db.nodes.find(find_query, {'_id':0, 'resources.imps.contains':0}) # imps or nodes? q = query.sort([('_id', -1)]).skip(int(page_num) * page_size).limit(page_size) try: while (yield query.fetch_next): node = q.next_object() nodes_list.append(node) except Exception, e: logging.exception(e) raise gen.Return(e)