def _inprog(self, inprog): template = "%11s %21s %7s %1s %5s %s" self._print( [template % ('ID', 'CLIENT', 'OP', 'A', 'LOCKW', 'NS / QUERY')]) opsmax = self._maxy - self._y if len(inprog) > opsmax: # Leave room for '% more' line opsmax -= 1 for op in inprog[:opsmax]: a = 'T' if op['active'] else 'F' lock = op.get('lockType') if op['waitingForLock'] else '' client = op.get('client', 'internal') ns_query = op['ns'] if client == 'internal': ns_query += op.get('desc', '') query = op.get('query') if query: ns_query += " " + json.dumps( stringify_query_dict(query))[:(self._maxx - 40)] self._print( [template % (op['opid'], client, op['op'], a, lock, ns_query)]) if len(inprog) > opsmax: self._print(['( ... %d more ... )' % (len(inprog) - opsmax)])
def stringify_query_dict(query): for k, v in query.iteritems(): if isinstance(v, dict): query[k] = stringify_query_dict(v) elif isinstance(v, Binary): query[k] = "bin:" + hex(v) elif isinstance(v, basestring): pass else: query[k] = str(v) return query
def _inprog(self, inprog): template = "%11s %21s %7s %1s %5s %s" self._print([template % ('ID', 'CLIENT', 'OP', 'A', 'LOCKW', 'NS / QUERY')]) opsmax = self._maxy - self._y if len(inprog) > opsmax: # Leave room for '% more' line opsmax -= 1 for op in inprog[:opsmax]: a = 'T' if op['active'] else 'F' lock = op.get('lockType') if op['waitingForLock'] else '' client = op.get('client', 'internal') ns_query = op['ns'] if client == 'internal': ns_query += op.get('desc', '') query = op.get('query') if query: ns_query += " " + json.dumps(stringify_query_dict(query))[:(self._maxx - 40)] self._print([template % (op['opid'], client, op['op'], a, lock, ns_query)]) if len(inprog) > opsmax: self._print(['( ... %d more ... )' % (len(inprog) - opsmax)])