Class EnterpriseWorkerKind

java.lang.Object
com.illumon.iris.db.tables.remotequery.EnterpriseWorkerKind
All Implemented Interfaces:
KubernetesWorkerKind, LocalProcessWorkerKind, WorkerKind

public class EnterpriseWorkerKind extends Object implements WorkerKind, LocalProcessWorkerKind, KubernetesWorkerKind
Basic worker control for Deephaven Enterprise workers, running the same version as the Dispatcher.
  • Field Details

    • QUERY_WORKER_POD_TEMPLATE_PROPERTY

      public static final String QUERY_WORKER_POD_TEMPLATE_PROPERTY
      See Also:
    • DEFAULT_QUERY_WORKER_POD_TEMPLATE

      public static final String DEFAULT_QUERY_WORKER_POD_TEMPLATE
      See Also:
    • START_K8S_WORKER_TIMEOUT_SECONDS_PROPERTY

      public static final String START_K8S_WORKER_TIMEOUT_SECONDS_PROPERTY
      See Also:
    • DEFAULT_START_K8S_WORKER_TIMEOUT_SECONDS

      public static final int DEFAULT_START_K8S_WORKER_TIMEOUT_SECONDS
      See Also:
  • Constructor Details

    • EnterpriseWorkerKind

      public EnterpriseWorkerKind(String name)
  • Method Details

    • workerControlTypes

      public Collection<String> workerControlTypes()
      Description copied from interface: WorkerKind
      What kind of worker controls could be required for starting these kind of workers?
      Specified by:
      workerControlTypes in interface WorkerKind
      Returns:
      the desired WorkerControlType
    • getWorkerControlTypeForRequest

      public String getWorkerControlTypeForRequest(RemoteProcessingRequest request)
      Description copied from interface: WorkerKind
      The worker control type required for a particular request.
      Specified by:
      getWorkerControlTypeForRequest in interface WorkerKind
      Parameters:
      request - the request that a worker is being created for
      Returns:
      the type of worker control for this particular request
    • needsJvmFlags

      public boolean needsJvmFlags()
      Description copied from interface: LocalProcessWorkerKind
      Does this produce a JVM that requires JVM like arguments
      Specified by:
      needsJvmFlags in interface LocalProcessWorkerKind
      Returns:
      true if this kind of worker needs JVM arguments
    • needsDheJvmFlags

      public boolean needsDheJvmFlags()
      Description copied from interface: LocalProcessWorkerKind
      Does this produce a JVM that requires DHE specific JVM arguments
      Specified by:
      needsDheJvmFlags in interface LocalProcessWorkerKind
      Returns:
      true if this kind of worker needs DHE specific JVM arguments
    • includeNameArgument

      public boolean includeNameArgument()
      Description copied from interface: LocalProcessWorkerKind
      True if -A "name" should be included on the command line.
      Specified by:
      includeNameArgument in interface LocalProcessWorkerKind
      Returns:
      true if the name argument is included
    • includeExtraClassPaths

      public boolean includeExtraClassPaths()
      Description copied from interface: LocalProcessWorkerKind
      True if temporary dispatcher produced class paths should be included on the command line with -C.
      Specified by:
      includeExtraClassPaths in interface LocalProcessWorkerKind
      Returns:
      true if the dispatcher's temporary classpaths should be included
    • includeArtifactArguments

      public boolean includeArtifactArguments()
      Description copied from interface: LocalProcessWorkerKind
      Some customers have custom artifacts per user, which are passed to the Enterprise start script with the -u, -t, and -r options. True if those options be included in the command.
      Specified by:
      includeArtifactArguments in interface LocalProcessWorkerKind
      Returns:
      true if -u, -t, and -r options should be included
    • isEphemeralVenvDefault

      public boolean isEphemeralVenvDefault()
      Description copied from interface: WorkerKind
      Are ephemeral virtual environments the default behavior for this worker?
      Specified by:
      isEphemeralVenvDefault in interface WorkerKind
    • commandPrefix

      public List<String> commandPrefix()
      Description copied from interface: LocalProcessWorkerKind
      If the worker should be launched by a site-specific process rather than being launched directly from the start script, then WorkerKind.<worker-type>.commandPrefix can be set to define the start command. For example, this can be used to launch workers that use a Kerberos keytab to run as a user, e.g.:

      WorkerKind.<worker-type>.commandPrefix=k5start -f /path/to/krb5.keytab -U -- sh -c

      Specified by:
      commandPrefix in interface LocalProcessWorkerKind
      Returns:
      List of command and args used to launch a worker, or null if the property is not set.
    • implementedProtocols

      public List<String> implementedProtocols()
      Description copied from interface: WorkerKind
      What protocols does this kind of worker implement?
      Specified by:
      implementedProtocols in interface WorkerKind
      Returns:
      a list of protocol names that this worker implements
    • newCommandHelper

      public LocalProcessWorkerKind.CommandHelper newCommandHelper()
      Description copied from interface: LocalProcessWorkerKind
      Create a helper for generating a new command line.
      Specified by:
      newCommandHelper in interface LocalProcessWorkerKind
      Returns:
      a new command line helper.
    • createPersistentQueryHandle

      @NotNull public Object createPersistentQueryHandle(@NotNull com.fishlib.io.logger.Logger log, @NotNull Object queryHandleContext)
      Description copied from interface: WorkerKind
      Create a PersistentQueryHandle for use by the Controller. This is necessarily reflexive so implementations must guarantee that the returned object implements the PersistentQueryHandle interface.
      Specified by:
      createPersistentQueryHandle in interface WorkerKind
      Parameters:
      log - a Log object to use for logging
      queryHandleContext - an arbitrary context object to initialize the handle with.
      Returns:
      a new persistent query handle
    • getDescription

      @Nullable public String getDescription()
      Description copied from interface: WorkerKind
      Return an optional description of this WorkerKind for use in the UI.
      Specified by:
      getDescription in interface WorkerKind
      Returns:
      a description, or null
    • displayOrder

      public int displayOrder()
      Description copied from interface: WorkerKind
      Return display order for dropdown list in web UI. Lower values are displayed first. Enterprise workers use displayOrder 100. Community workers use display order 200 by default, which for Vermilion and later installations is overridden in iris-environment.prop to 50.
      Specified by:
      displayOrder in interface WorkerKind
    • getTitle

      @NotNull public String getTitle()
      Description copied from interface: WorkerKind
      Return a string that should be used for drop-down menus in the UI.
      Specified by:
      getTitle in interface WorkerKind
      Returns:
      the title of the worker
    • isCommunity

      public boolean isCommunity()
      Description copied from interface: WorkerKind
      Check if this kind is a Community worker kind
      Specified by:
      isCommunity in interface WorkerKind
      Returns:
      true if the worker kind is Community
    • getAllowedGroups

      public List<String> getAllowedGroups()
      Description copied from interface: WorkerKind
      Return a List of the groups allowed to run this WorkerKind.
      Specified by:
      getAllowedGroups in interface WorkerKind
      Returns:
      a List of the groups allowed to run this WorkerKind
    • getDefaultPodTemplateFile

      public String getDefaultPodTemplateFile()
      Description copied from interface: KubernetesWorkerKind
      Get the default pod template filename for the worker kind.
      Specified by:
      getDefaultPodTemplateFile in interface KubernetesWorkerKind
      Returns:
      filename containing the pod template yaml
    • getDefaultWorkerStartTimeoutSecs

      public int getDefaultWorkerStartTimeoutSecs()
      Description copied from interface: KubernetesWorkerKind
      Get the default worker start timeout for the worker kind, in seconds.
      Specified by:
      getDefaultWorkerStartTimeoutSecs in interface KubernetesWorkerKind
      Returns:
      start timeout value to be configured on the worker pod.
    • getQueryWorkerArg

      public List<String> getQueryWorkerArg(Worker worker)
      Description copied from interface: KubernetesWorkerKind
      Get a command string that will be used to start the worker.
      Specified by:
      getQueryWorkerArg in interface KubernetesWorkerKind
      Parameters:
      worker - A worker object that will run as a k8s pod.
      Returns:
      Worker start command
    • useQueryWorkerArgAsContainerCommand

      public boolean useQueryWorkerArgAsContainerCommand()
      Description copied from interface: KubernetesWorkerKind
      If true, the query worker args are to be set as the container command. If false, the query worker args may be set as an environment variable, and a start script configured in the pod template yaml will use that.
      Specified by:
      useQueryWorkerArgAsContainerCommand in interface KubernetesWorkerKind
      Returns:
      True if getQueryWorkerArg(Worker w) should be set as the worker container's command array.
    • getClasspathPrefix

      public String getClasspathPrefix(Worker worker)
      Specified by:
      getClasspathPrefix in interface KubernetesWorkerKind
    • getJvmArgs

      public List<String> getJvmArgs(Worker worker)
      Description copied from interface: KubernetesWorkerKind
      Provides a list of JVM args to be added to the java command line.
      Specified by:
      getJvmArgs in interface KubernetesWorkerKind
      Parameters:
      worker - A worker object that will run as a k8s pod.
      Returns:
      JVM arg list, e.g. ["-Dkey1=val1", "-Dkey2=val2", "-Xmx4096m"]
    • getJvmArgsEnvVarName

      public String getJvmArgsEnvVarName()
      Description copied from interface: KubernetesWorkerKind
      The name of the environment variable that has the jvm args used by the worker process.
      Specified by:
      getJvmArgsEnvVarName in interface KubernetesWorkerKind
    • getEnvironmentVariables

      public Map<String,String> getEnvironmentVariables(Worker worker)
      Description copied from interface: KubernetesWorkerKind
      Provides a map of environment variable names and values to be added to the k8s container.
      Specified by:
      getEnvironmentVariables in interface KubernetesWorkerKind
      Parameters:
      worker - A worker object that will run as a k8s pod.
      Returns:
      A map of environment variable names and values