Class DndWorkerKind

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

public class DndWorkerKind extends Object implements WorkerKind, LocalProcessWorkerKind, KubernetesWorkerKind
A worker kind for Community in Enterprise workers (DnD).
  • Field Details

    • SCRIPT_LANGUAGE_JSON_FIELD

      public static final String SCRIPT_LANGUAGE_JSON_FIELD
      This selects the language of the script session you are creating as part of the worker. The valid values are "groovy" and "python". There is no default.
      See Also:
    • PQ_SERIAL_JSON_FIELD

      public static final String PQ_SERIAL_JSON_FIELD
      This provides the persistent query serial number, if we are executing as a persistent query.
      See Also:
    • PQ_SCRIPT_PATH_LOADER_STATE_JSON_FIELD

      public static final String PQ_SCRIPT_PATH_LOADER_STATE_JSON_FIELD
      Provides JSON string representing a persistent query's script path loader state for consistency across script loading.
      See Also:
    • STARTUP_SCRIPT_JSON_FIELD

      public static final String STARTUP_SCRIPT_JSON_FIELD
      Optional string value that if available, will execute as a script on worker startup.
      See Also:
    • ENFORCE_SESSION_COUNT_FIELD

      public static final String ENFORCE_SESSION_COUNT_FIELD
      If this is greater than zero, then enforce that we have at least this many sessions connected.
      See Also:
    • SESSION_TIMEOUT_MILLIS_FIELD

      public static final String SESSION_TIMEOUT_MILLIS_FIELD
      What is the grace period for session timeouts?
      See Also:
    • INTERACTIVE_CONSOLE_AUTO_DELETE_FIELD

      public static final String INTERACTIVE_CONSOLE_AUTO_DELETE_FIELD
      Should an InteractiveConsole query delete itself on termination?
      See Also:
    • ENFORCE_SESSION_COUNT_DEFAULT

      public static final int ENFORCE_SESSION_COUNT_DEFAULT
      We must have at least one session connected by default.
      See Also:
    • PUSH_SESSION_CHANGES_TO_CONTROLLER_FIELD

      public static final String PUSH_SESSION_CHANGES_TO_CONTROLLER_FIELD
      Should the worker push script session changes to the controller?
      See Also:
    • PUSH_SESSION_CHANGES_TO_CONTROLLER_DEFAULT

      public static final boolean PUSH_SESSION_CHANGES_TO_CONTROLLER_DEFAULT
      By default, the worker does not push script session changes.
      See Also:
    • ENABLE_TABLE_REFRESH_FIELD

      public static final String ENABLE_TABLE_REFRESH_FIELD
      See Also:
    • ENABLE_TABLE_REFRESH_DEFAULT

      public static final boolean ENABLE_TABLE_REFRESH_DEFAULT
      See Also:
    • EPHEMERAL_VENV_FIELD

      public static final String EPHEMERAL_VENV_FIELD
      Should we create an ephemeral Python virtual environment?
      See Also:
    • EPHEMERAL_VENV_DEFAULT

      public static final boolean EPHEMERAL_VENV_DEFAULT
      See Also:
    • SEED_EPHEMERAL_VENV_FIELD

      public static final String SEED_EPHEMERAL_VENV_FIELD
      Should we freeze the venv requirements to determine the ephemeral venvs starting packages?
      See Also:
    • SEED_EPHEMERAL_VENV_DEFAULT

      public static final boolean SEED_EPHEMERAL_VENV_DEFAULT
      See Also:
    • EPHEMERAL_REQUIREMENTS_FIELD

      public static final String EPHEMERAL_REQUIREMENTS_FIELD
      What requirements should we install into the specified venv?
      See Also:
    • WORKER_HOSTNAME

      public static final String WORKER_HOSTNAME
      See Also:
    • ADMIN_GROUPS

      public static final String ADMIN_GROUPS
      See Also:
    • VIEWER_GROUPS

      public static final String VIEWER_GROUPS
      See Also:
    • PQ_NAME_JSON_FIELD

      public static final String PQ_NAME_JSON_FIELD
      See Also:
    • QUERY_WORKER_DND_POD_TEMPLATE_PROPERTY

      public static final String QUERY_WORKER_DND_POD_TEMPLATE_PROPERTY
      See Also:
    • DEFAULT_QUERY_WORKER_DND_POD_TEMPLATE

      public static final String DEFAULT_QUERY_WORKER_DND_POD_TEMPLATE
      See Also:
    • START_DND_K8S_WORKER_TIMEOUT_SECONDS_PROPERTY

      public static final String START_DND_K8S_WORKER_TIMEOUT_SECONDS_PROPERTY
      See Also:
    • DEFAULT_START_DND_K8S_WORKER_TIMEOUT_SECONDS

      public static final int DEFAULT_START_DND_K8S_WORKER_TIMEOUT_SECONDS
      See Also:
  • Constructor Details

    • DndWorkerKind

      public DndWorkerKind(@NotNull 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
    • 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
    • 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
    • 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
    • createPersistentQueryHandle

      public Object createPersistentQueryHandle(com.fishlib.io.logger.Logger log, 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
    • 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
    • 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
    • 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
    • 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.
    • 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
    • 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
    • getJsPluginsPath

      public String getJsPluginsPath()