/*
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/notebooks/v1/runtime.proto

package com.google.cloud.notebooks.v1;

public interface RuntimeSoftwareConfigOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.notebooks.v1.RuntimeSoftwareConfig)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Cron expression in UTC timezone, used to schedule instance auto upgrade.
   * Please follow the [cron format](https://en.wikipedia.org/wiki/Cron).
   * </pre>
   *
   * <code>string notebook_upgrade_schedule = 1;</code>
   *
   * @return The notebookUpgradeSchedule.
   */
  java.lang.String getNotebookUpgradeSchedule();
  /**
   *
   *
   * <pre>
   * Cron expression in UTC timezone, used to schedule instance auto upgrade.
   * Please follow the [cron format](https://en.wikipedia.org/wiki/Cron).
   * </pre>
   *
   * <code>string notebook_upgrade_schedule = 1;</code>
   *
   * @return The bytes for notebookUpgradeSchedule.
   */
  com.google.protobuf.ByteString getNotebookUpgradeScheduleBytes();

  /**
   *
   *
   * <pre>
   * Verifies core internal services are running.
   * Default: True
   * </pre>
   *
   * <code>optional bool enable_health_monitoring = 2;</code>
   *
   * @return Whether the enableHealthMonitoring field is set.
   */
  boolean hasEnableHealthMonitoring();
  /**
   *
   *
   * <pre>
   * Verifies core internal services are running.
   * Default: True
   * </pre>
   *
   * <code>optional bool enable_health_monitoring = 2;</code>
   *
   * @return The enableHealthMonitoring.
   */
  boolean getEnableHealthMonitoring();

  /**
   *
   *
   * <pre>
   * Runtime will automatically shutdown after idle_shutdown_time.
   * Default: True
   * </pre>
   *
   * <code>optional bool idle_shutdown = 3;</code>
   *
   * @return Whether the idleShutdown field is set.
   */
  boolean hasIdleShutdown();
  /**
   *
   *
   * <pre>
   * Runtime will automatically shutdown after idle_shutdown_time.
   * Default: True
   * </pre>
   *
   * <code>optional bool idle_shutdown = 3;</code>
   *
   * @return The idleShutdown.
   */
  boolean getIdleShutdown();

  /**
   *
   *
   * <pre>
   * Time in minutes to wait before shutting down runtime. Default: 180 minutes
   * </pre>
   *
   * <code>int32 idle_shutdown_timeout = 4;</code>
   *
   * @return The idleShutdownTimeout.
   */
  int getIdleShutdownTimeout();

  /**
   *
   *
   * <pre>
   * Install Nvidia Driver automatically.
   * Default: True
   * </pre>
   *
   * <code>bool install_gpu_driver = 5;</code>
   *
   * @return The installGpuDriver.
   */
  boolean getInstallGpuDriver();

  /**
   *
   *
   * <pre>
   * Specify a custom Cloud Storage path where the GPU driver is stored.
   * If not specified, we'll automatically choose from official GPU drivers.
   * </pre>
   *
   * <code>string custom_gpu_driver_path = 6;</code>
   *
   * @return The customGpuDriverPath.
   */
  java.lang.String getCustomGpuDriverPath();
  /**
   *
   *
   * <pre>
   * Specify a custom Cloud Storage path where the GPU driver is stored.
   * If not specified, we'll automatically choose from official GPU drivers.
   * </pre>
   *
   * <code>string custom_gpu_driver_path = 6;</code>
   *
   * @return The bytes for customGpuDriverPath.
   */
  com.google.protobuf.ByteString getCustomGpuDriverPathBytes();

  /**
   *
   *
   * <pre>
   * Path to a Bash script that automatically runs after a notebook instance
   * fully boots up. The path must be a URL or
   * Cloud Storage path (`gs://path-to-file/file-name`).
   * </pre>
   *
   * <code>string post_startup_script = 7;</code>
   *
   * @return The postStartupScript.
   */
  java.lang.String getPostStartupScript();
  /**
   *
   *
   * <pre>
   * Path to a Bash script that automatically runs after a notebook instance
   * fully boots up. The path must be a URL or
   * Cloud Storage path (`gs://path-to-file/file-name`).
   * </pre>
   *
   * <code>string post_startup_script = 7;</code>
   *
   * @return The bytes for postStartupScript.
   */
  com.google.protobuf.ByteString getPostStartupScriptBytes();

  /**
   *
   *
   * <pre>
   * Optional. Use a list of container images to use as Kernels in the notebook instance.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.notebooks.v1.ContainerImage kernels = 8 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  java.util.List<com.google.cloud.notebooks.v1.ContainerImage> getKernelsList();
  /**
   *
   *
   * <pre>
   * Optional. Use a list of container images to use as Kernels in the notebook instance.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.notebooks.v1.ContainerImage kernels = 8 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  com.google.cloud.notebooks.v1.ContainerImage getKernels(int index);
  /**
   *
   *
   * <pre>
   * Optional. Use a list of container images to use as Kernels in the notebook instance.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.notebooks.v1.ContainerImage kernels = 8 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  int getKernelsCount();
  /**
   *
   *
   * <pre>
   * Optional. Use a list of container images to use as Kernels in the notebook instance.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.notebooks.v1.ContainerImage kernels = 8 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  java.util.List<? extends com.google.cloud.notebooks.v1.ContainerImageOrBuilder>
      getKernelsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional. Use a list of container images to use as Kernels in the notebook instance.
   * </pre>
   *
   * <code>
   * repeated .google.cloud.notebooks.v1.ContainerImage kernels = 8 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  com.google.cloud.notebooks.v1.ContainerImageOrBuilder getKernelsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Output only. Bool indicating whether an newer image is available in an image family.
   * </pre>
   *
   * <code>optional bool upgradeable = 9 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return Whether the upgradeable field is set.
   */
  boolean hasUpgradeable();
  /**
   *
   *
   * <pre>
   * Output only. Bool indicating whether an newer image is available in an image family.
   * </pre>
   *
   * <code>optional bool upgradeable = 9 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The upgradeable.
   */
  boolean getUpgradeable();

  /**
   *
   *
   * <pre>
   * Behavior for the post startup script.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.RuntimeSoftwareConfig.PostStartupScriptBehavior post_startup_script_behavior = 10;
   * </code>
   *
   * @return The enum numeric value on the wire for postStartupScriptBehavior.
   */
  int getPostStartupScriptBehaviorValue();
  /**
   *
   *
   * <pre>
   * Behavior for the post startup script.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.RuntimeSoftwareConfig.PostStartupScriptBehavior post_startup_script_behavior = 10;
   * </code>
   *
   * @return The postStartupScriptBehavior.
   */
  com.google.cloud.notebooks.v1.RuntimeSoftwareConfig.PostStartupScriptBehavior
      getPostStartupScriptBehavior();

  /**
   *
   *
   * <pre>
   * Bool indicating whether JupyterLab terminal will be available or not.
   * Default: False
   * </pre>
   *
   * <code>optional bool disable_terminal = 11;</code>
   *
   * @return Whether the disableTerminal field is set.
   */
  boolean hasDisableTerminal();
  /**
   *
   *
   * <pre>
   * Bool indicating whether JupyterLab terminal will be available or not.
   * Default: False
   * </pre>
   *
   * <code>optional bool disable_terminal = 11;</code>
   *
   * @return The disableTerminal.
   */
  boolean getDisableTerminal();

  /**
   *
   *
   * <pre>
   * Output only. version of boot image such as M100, from release label of the image.
   * </pre>
   *
   * <code>optional string version = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return Whether the version field is set.
   */
  boolean hasVersion();
  /**
   *
   *
   * <pre>
   * Output only. version of boot image such as M100, from release label of the image.
   * </pre>
   *
   * <code>optional string version = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The version.
   */
  java.lang.String getVersion();
  /**
   *
   *
   * <pre>
   * Output only. version of boot image such as M100, from release label of the image.
   * </pre>
   *
   * <code>optional string version = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The bytes for version.
   */
  com.google.protobuf.ByteString getVersionBytes();
}
