diff --git a/ccserver/ccserver.py b/ccserver/ccserver.py index b4367ab3071e8c52fbd959686cf46d51a831c108..e28a9665634793ce12b62a2308958346a1591735 100644 --- a/ccserver/ccserver.py +++ b/ccserver/ccserver.py @@ -238,7 +238,7 @@ class CCServer(object): return right['target'] == 'allow' return False - def list(self, query, show=set(), pure=False): + def list(self, query, show=set(), pure=False, return_toshow=False): ''' List objects on the server. @@ -250,6 +250,7 @@ class CCServer(object): parser = TqlParser(query) ast, to_show, to_get, to_check = parser.parse() + orig_to_show = copy(to_show) to_show += show # Calculate the tags to get/check/show: @@ -295,4 +296,7 @@ class CCServer(object): for obj in objects: objects_dicts.append(obj.to_dict(to_display, deny=deny)) - return objects_dicts + if return_toshow: + return objects_dicts, orig_to_show + else: + return objects_dicts diff --git a/ccserver/handlers.py b/ccserver/handlers.py index fc3993f7cb92275bbd4c175b8b49768b4a02e18c..76b336f1df517b2f2f6e5f3e904c65ebab9a9a31 100644 --- a/ccserver/handlers.py +++ b/ccserver/handlers.py @@ -190,8 +190,11 @@ class CliHandler(OnlineCCHandler): self._check(conn, 'list', query) logging.debug('Executed list function with query %s', query) - objects = self._server.list(query) - return {'objects': objects, 'order': ['id']} + objects, tags = self._server.list(query, return_toshow=True) + order = ['id'] + if tags is not None: + order += tags + return {'objects': objects, 'order': order} def _vm_action(self, query, method, *args, **kwargs): vms = self._server.list(query, show=set(('r', 'h')))