code: def make_report(self, session, *levels):
          
          if not levels:
              levels = ["full"]
  
          try:
              # List the methods to call, avoiding double-calls
              methods = set()
              for level in levels:
                  methods.update(self.get_level_methods(level))
          except KeyError as ex:
              # Unknown level
              session.write_line("Unknown report level: {0}", ex)
              self.__report = None
          else:
              # Call each method
              self.__report = {method.__name__: method() for method in methods}
              # Describe the report
              self.__report["report"] = {
                  "report.levels": levels,
                  "time.stamp": time.time(),
                  "time.local": str(datetime.datetime.now()),
                  "time.utc": str(datetime.datetime.utcnow()),
              }
  
          return self.__report
docs: Prepares the report at the requested level(s)