def go():

    class _Tool(Template):

        help = \
            '''
                Displays detailled information for the specified cluster(s).
            '''

        tag = 'info'

        def customize(self, parser):

            parser.add_argument('clusters', type=str, nargs='*', default='*', help='1+ clusters (can be a glob pattern, e.g foo*)')

        def body(self, args, proxy):

            for token in args.clusters:

                def _query(zk):
                    replies = fire(zk, token, 'info')
                    return len(replies), {key: hints for key, (_, hints, code) in replies.items() if code == 200}

                total, js = run(proxy, _query)
                if not total:

                    logger.info(token % '\n<%s> -> no pods found')

                else:

                    #
                    # - justify & format the whole thing in a nice set of columns
                    #
                    pct = (len(js) * 100) / total
                    unrolled = ['%s\n%s\n' % (k, json.dumps(js[k], indent=4, separators=(',', ': '))) for k in sorted(js.keys())]
                    logger.info('\n<%s> -> %d%% replies (%d pods total) ->\n\n- %s' % (token, pct, total, '\n- '.join(unrolled)))


    return _Tool()
dataset/ETHPy150Open autodesk-cloud/ochonetes/images/portal/resources/toolset/toolset/commands/info.py/go/swapped operands of `%`