Exemple #1
0
def heron_pex(topology_pex, topology_class_name):
  Log.debug("Importing %s from %s" % (topology_class_name, topology_pex))
  if topology_class_name == '-':
    # loading topology by running its main method (if __name__ == "__main__")
    heron_env = os.environ.copy()
    heron_env['HERON_OPTIONS'] = opts.get_heron_config()

    cmd = [topology_pex]
    Log.debug('$> %s' % cmd[0])
    Log.debug('Heron options: %s' % str(heron_env['HERON_OPTIONS']))

    # invoke the command with subprocess and print error message, if any
    status = subprocess.call(cmd, env=heron_env)
    if status != 0:
      err_str = "Topology failed to be loaded from the given pex, with status: %d. Bailing out..." \
                % status
      raise RuntimeError(err_str)
  else:
    try:
      # loading topology from Topology's subclass (no main method)
      os.environ["HERON_OPTIONS"] = opts.get_heron_config()
      pex_loader.load_pex(topology_pex)
      topology_class = pex_loader.import_and_get_class(topology_pex, topology_class_name)
      topology_class.write()
    except Exception:
      Log.debug(traceback.format_exc())
      err_str = "Topology failed to be loaded from the given pex. Bailing out..."
      raise RuntimeError(err_str)
Exemple #2
0
def heron_class(class_name, lib_jars, extra_jars=[], args=[], javaDefines=[]):
    # Format all java -D options that need to be passed while running
    # the class locally.
    javaOpts = map(lambda opt: '-D' + opt, javaDefines)

    # Construct the command line for the sub process to run
    # Because of the way Python execute works,
    # the java opts must be passed as part of the list
    all_args = [
        utils.get_java_path(), "-client", "-Xmx1g", opts.get_heron_config()] + \
        javaOpts + \
        ["-cp", utils.get_classpath(lib_jars + extra_jars),
    ]

    all_args += [class_name] + list(args)

    # print the verbose message
    if opts.verbose():
        print('$> %s' % ' '.join(all_args))

    # invoke the command with subprocess and print error message, if any
    if not opts.trace_execution():
        status = subprocess.call(all_args)
        if status != 0:
            err_str = "User main failed with status %d. Bailing out..." % status
            raise RuntimeError(err_str)
Exemple #3
0
def heron_class(class_name, lib_jars, extra_jars=[], args=[], javaDefines=[]):
  # Format all java -D options that need to be passed while running
  # the class locally.
  javaOpts = map(lambda opt: '-D' + opt, javaDefines)

  # Construct the command line for the sub process to run
  # Because of the way Python execute works,
  # the java opts must be passed as part of the list
  all_args = [
      utils.get_java_path(), "-client", "-Xmx1g", opts.get_heron_config()] + \
      javaOpts + \
      ["-cp", utils.get_classpath(lib_jars + extra_jars),
  ]

  all_args += [class_name] + list(args)

  # print the verbose message
  if opts.verbose():
    print('$> %s' % ' '.join(all_args))

  # invoke the command with subprocess and print error message, if any
  if not opts.trace_execution():
    status = subprocess.call(all_args)
    if status != 0:
      err_str = "User main failed with status %d. Bailing out..." % status
      raise RuntimeError(err_str)
Exemple #4
0
def heron_pex(topology_pex, topology_class_name, args=None):
  Log.debug("Importing %s from %s" % (topology_class_name, topology_pex))
  if topology_class_name == '-':
    # loading topology by running its main method (if __name__ == "__main__")
    heron_env = os.environ.copy()
    heron_env['HERON_OPTIONS'] = opts.get_heron_config()

    cmd = [topology_pex]
    if args is not None:
      cmd.extend(args)
    Log.debug('$> %s' % ' '.join(cmd))
    Log.debug('Heron options: %s' % str(heron_env['HERON_OPTIONS']))

    # invoke the command with subprocess and print error message, if any
    status = subprocess.call(cmd, env=heron_env)
    if status != 0:
      err_str = "Topology failed to be loaded from the given pex, with status: %d. Bailing out..." \
                % status
      raise RuntimeError(err_str)
  else:
    try:
      # loading topology from Topology's subclass (no main method)

      # to support specifying the name of topology
      Log.debug("args: %s" % args)
      if args is not None and isinstance(args, (list, tuple)) and len(args) > 0:
        opts.set_config('cmdline.topology.name', args[0])

      os.environ["HERON_OPTIONS"] = opts.get_heron_config()
      Log.debug("Heron options: %s" % os.environ["HERON_OPTIONS"])
      pex_loader.load_pex(topology_pex)
      topology_class = pex_loader.import_and_get_class(topology_pex, topology_class_name)
      topology_class.write()
    except Exception:
      Log.debug(traceback.format_exc())
      err_str = "Topology failed to be loaded from the given pex. Bailing out..."
      raise RuntimeError(err_str)
Exemple #5
0
def heron_class(class_name,
                lib_jars,
                extra_jars=None,
                args=None,
                java_defines=None):
    '''
  Execute a heron class given the args and the jars needed for class path
  :param class_name:
  :param lib_jars:
  :param extra_jars:
  :param args:
  :param javaDefines:
  :return:
  '''
    # default optional params to empty list if not provided
    if extra_jars is None:
        extra_jars = []
    if args is None:
        args = []
    if java_defines is None:
        java_defines = []

    # Format all java -D options that need to be passed while running
    # the class locally.
    java_opts = ['-D' + opt for opt in java_defines]

    # Construct the command line for the sub process to run
    # Because of the way Python execute works,
    # the java opts must be passed as part of the list
    all_args = [utils.get_java_path(), "-client", "-Xmx1g", opts.get_heron_config()] + \
               java_opts + \
               ["-cp", utils.get_classpath(lib_jars + extra_jars)]

    all_args += [class_name] + list(args)

    # print the verbose message
    if opts.verbose():
        print '$> %s' % ' '.join(all_args)

    # invoke the command with subprocess and print error message, if any
    if not opts.trace_execution():
        status = subprocess.call(all_args)
        if status != 0:
            err_str = "User main failed with status %d. Bailing out..." % status
            raise RuntimeError(err_str)
Exemple #6
0
def heron_class(class_name, lib_jars, extra_jars=None, args=None, java_defines=None):
  '''
  Execute a heron class given the args and the jars needed for class path
  :param class_name:
  :param lib_jars:
  :param extra_jars:
  :param args:
  :param java_defines:
  :return:
  '''
  # default optional params to empty list if not provided
  if extra_jars is None:
    extra_jars = []
  if args is None:
    args = []
  if java_defines is None:
    java_defines = []

  # Format all java -D options that need to be passed while running
  # the class locally.
  java_opts = ['-D' + opt for opt in java_defines]

  # Construct the command line for the sub process to run
  # Because of the way Python execute works,
  # the java opts must be passed as part of the list
  all_args = [config.get_java_path(), "-client", "-Xmx1g"] + \
             java_opts + \
             ["-cp", config.get_classpath(lib_jars + extra_jars)]

  all_args += [class_name] + list(args)

  # set heron_config environment variable
  heron_env = os.environ.copy()
  heron_env['HERON_OPTIONS'] = opts.get_heron_config()

  # print the verbose message
  Log.debug('$> %s' % ' '.join(all_args))
  Log.debug('Heron options: %s' % str(heron_env["HERON_OPTIONS"]))

  # invoke the command with subprocess and print error message, if any
  status = subprocess.call(all_args, env=heron_env)
  if status != 0:
    err_str = "User main failed with status %d. Bailing out..." % status
    raise RuntimeError(err_str)
Exemple #7
0
def heron_class(class_name, lib_jars, extra_jars=None, args=None, java_defines=None):
  '''
  Execute a heron class given the args and the jars needed for class path
  :param class_name:
  :param lib_jars:
  :param extra_jars:
  :param args:
  :param javaDefines:
  :return:
  '''
  # default optional params to empty list if not provided
  if extra_jars is None:
    extra_jars = []
  if args is None:
    args = []
  if java_defines is None:
    java_defines = []

  # Format all java -D options that need to be passed while running
  # the class locally.
  java_opts = ['-D' + opt for opt in java_defines]

  # Construct the command line for the sub process to run
  # Because of the way Python execute works,
  # the java opts must be passed as part of the list
  all_args = [utils.get_java_path(), "-client", "-Xmx1g", opts.get_heron_config()] + \
             java_opts + \
             ["-cp", utils.get_classpath(lib_jars + extra_jars)]

  all_args += [class_name] + list(args)

  # print the verbose message
  if opts.verbose():
    print '$> %s' % ' '.join(all_args)

  # invoke the command with subprocess and print error message, if any
  if not opts.trace_execution():
    status = subprocess.call(all_args)
    if status != 0:
      err_str = "User main failed with status %d. Bailing out..." % status
      raise RuntimeError(err_str)