docs: def do_ls(self, table=None):
          """ List all tables or print details of one table """
          if table is None:
              fields = OrderedDict(
                  [
                      ("Name", "name"),
                      ("Status", "status"),
                      ("Read", "total_read_throughput"),
                      ("Write", "total_write_throughput"),
                  ]
              )
              tables = self.engine.describe_all()
              # Calculate max width of all items for each column
              sizes = [
                  1 + max([len(str(getattr(t, f))) for t in tables] + [len(title)])
                  for title, f in iteritems(fields)
              ]
              # Print the header
              for size, title in zip(sizes, fields):
                  print(title.ljust(size), end="")
              print()
              # Print each table row
              for row_table in tables:
                  for size, field in zip(sizes, fields.values()):
                      print(str(getattr(row_table, field)).ljust(size), end="")
                  print()
          else:
              print(self.engine.describe(table, refresh=True, metrics=True).pformat())