code: def run(self, args=None):
          retcodesummary = ExitCodes.EXIT_SUCCESS
          self.args = args if args else self.args
          if not self.check_args():
              return retcodesummary
          if self.args.clean:
              if not self.args.tc and not self.args.suite:
                  return retcodesummary
          version = get_fw_version()
          if self.args.version and version:
              print(version)
              return retcodesummary
          elif self.args.version and not version:
              print("Unable to get version. Have you installed Icetea correctly?")
              return retcodesummary
          self.logger.info("Using Icetea version {}".format(version) if version
                           else "Unable to get Icetea version. Is Icetea installed?")
          cloud = self._init_cloud(self.args.cloud)
          if self.args.listsuites:
              table = self.list_suites(self.args.suitedir, cloud)
              if table is None:
                  self.logger.error("No suites found!")
                  retcodesummary = ExitCodes.EXIT_FAIL
              else:
                  print(table)
              return retcodesummary
          try:
              testsuite = TestSuite(logger=self.logger, cloud_module=cloud, args=self.args)
          except SuiteException as error:
              self.logger.error("Something went wrong in suite creation! {}".format(error))
              retcodesummary = ExitCodes.EXIT_INCONC
              return retcodesummary
          if self.args.list:
              if self.args.cloud:
                  testsuite.update_testcases()
              testcases = testsuite.list_testcases()
              print(testcases)
              return retcodesummary
          results = self.runtestsuite(testsuite=testsuite)
          if not results:
              retcodesummary = ExitCodes.EXIT_SUCCESS
          elif results.failure_count() and self.args.failure_return_value is True:
              retcodesummary = ExitCodes.EXIT_FAIL
          elif results.inconclusive_count() and self.args.failure_return_value is True:
              retcodesummary = ExitCodes.EXIT_INCONC
          return retcodesummary