def handle(self, *args, **kwargs):
    env = os.environ.copy()
    classpath = env.get('CLASSPATH', '').split(os.pathsep)

    jar = spark.conf.LIVY_ASSEMBLY_JAR.get()
    classpath.insert(0, jar)

    # Add the hadoop classpath if it's available.
    try:
      p = subprocess.Popen(['hadoop', 'classpath'], stdout=subprocess.PIPE)
    except __HOLE__:
      pass
    else:
      hadoop_classpath = p.communicate()[0]
      if p.wait() == 0:
        classpath.append(hadoop_classpath)

    args = [
      "java",
    ]

    args.extend(("-cp", os.pathsep.join(classpath)))

    server_host = spark.conf.LIVY_SERVER_HOST.get()
    args.append("-Dlivy.server.host=" + server_host)

    server_port = spark.conf.LIVY_SERVER_PORT.get()
    args.append("-Dlivy.server.port=" + server_port)

    session_factory = spark.conf.LIVY_SERVER_SESSION_KIND.get()
    args.append("-Dlivy.server.session.factory=" + session_factory)

    livy_yarn_jar = spark.conf.LIVY_YARN_JAR.get()
    if livy_yarn_jar:
      args.append("-Dlivy.yarn.jar=" + livy_yarn_jar)

    if spark.conf.LIVY_IMPERSONATION_ENABLED.get():
      args.append("-Dlivy.impersonation.enabled=true")
    else:
      args.append("-Dlivy.impersonation.enabled=false")

    args.append("com.cloudera.hue.livy.server.Main")

    LOG.info("Executing %r (%r) (%r)" % (args[0], args, env))

    # Use exec, so that this takes only one process.
    os.execvpe(args[0], args, env)
dataset/ETHPy150Open cloudera/hue/apps/spark/src/spark/management/commands/livy_server.py/Command.handle