/*
 * Copyright 2020 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/baremetalsolution/v2/instance.proto

package com.google.cloud.baremetalsolution.v2;

public interface InstanceOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.baremetalsolution.v2.Instance)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Output only. The resource name of this `Instance`.
   * Resource names are schemeless URIs that follow the conventions in
   * https://cloud.google.com/apis/design/resource_names.
   * Format:
   * `projects/{project}/locations/{location}/instances/{instance}`
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * Output only. The resource name of this `Instance`.
   * Resource names are schemeless URIs that follow the conventions in
   * https://cloud.google.com/apis/design/resource_names.
   * Format:
   * `projects/{project}/locations/{location}/instances/{instance}`
   * </pre>
   *
   * <code>string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * An identifier for the `Instance`, generated by the backend.
   * </pre>
   *
   * <code>string id = 11;</code>
   *
   * @return The id.
   */
  java.lang.String getId();
  /**
   *
   *
   * <pre>
   * An identifier for the `Instance`, generated by the backend.
   * </pre>
   *
   * <code>string id = 11;</code>
   *
   * @return The bytes for id.
   */
  com.google.protobuf.ByteString getIdBytes();

  /**
   *
   *
   * <pre>
   * Output only. Create a time stamp.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the createTime field is set.
   */
  boolean hasCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. Create a time stamp.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The createTime.
   */
  com.google.protobuf.Timestamp getCreateTime();
  /**
   *
   *
   * <pre>
   * Output only. Create a time stamp.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Output only. Update a time stamp.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return Whether the updateTime field is set.
   */
  boolean hasUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. Update a time stamp.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   *
   * @return The updateTime.
   */
  com.google.protobuf.Timestamp getUpdateTime();
  /**
   *
   *
   * <pre>
   * Output only. Update a time stamp.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];
   * </code>
   */
  com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * The server type.
   * [Available server
   * types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
   * </pre>
   *
   * <code>string machine_type = 4;</code>
   *
   * @return The machineType.
   */
  java.lang.String getMachineType();
  /**
   *
   *
   * <pre>
   * The server type.
   * [Available server
   * types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
   * </pre>
   *
   * <code>string machine_type = 4;</code>
   *
   * @return The bytes for machineType.
   */
  com.google.protobuf.ByteString getMachineTypeBytes();

  /**
   *
   *
   * <pre>
   * The state of the server.
   * </pre>
   *
   * <code>.google.cloud.baremetalsolution.v2.Instance.State state = 5;</code>
   *
   * @return The enum numeric value on the wire for state.
   */
  int getStateValue();
  /**
   *
   *
   * <pre>
   * The state of the server.
   * </pre>
   *
   * <code>.google.cloud.baremetalsolution.v2.Instance.State state = 5;</code>
   *
   * @return The state.
   */
  com.google.cloud.baremetalsolution.v2.Instance.State getState();

  /**
   *
   *
   * <pre>
   * True if you enable hyperthreading for the server, otherwise false.
   * The default value is false.
   * </pre>
   *
   * <code>bool hyperthreading_enabled = 6;</code>
   *
   * @return The hyperthreadingEnabled.
   */
  boolean getHyperthreadingEnabled();

  /**
   *
   *
   * <pre>
   * Labels as key value pairs.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 7;</code>
   */
  int getLabelsCount();
  /**
   *
   *
   * <pre>
   * Labels as key value pairs.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 7;</code>
   */
  boolean containsLabels(java.lang.String key);
  /** Use {@link #getLabelsMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String> getLabels();
  /**
   *
   *
   * <pre>
   * Labels as key value pairs.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 7;</code>
   */
  java.util.Map<java.lang.String, java.lang.String> getLabelsMap();
  /**
   *
   *
   * <pre>
   * Labels as key value pairs.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 7;</code>
   */
  /* nullable */
  java.lang.String getLabelsOrDefault(
      java.lang.String key,
      /* nullable */
      java.lang.String defaultValue);
  /**
   *
   *
   * <pre>
   * Labels as key value pairs.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 7;</code>
   */
  java.lang.String getLabelsOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * List of LUNs associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Lun luns = 8;</code>
   */
  java.util.List<com.google.cloud.baremetalsolution.v2.Lun> getLunsList();
  /**
   *
   *
   * <pre>
   * List of LUNs associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Lun luns = 8;</code>
   */
  com.google.cloud.baremetalsolution.v2.Lun getLuns(int index);
  /**
   *
   *
   * <pre>
   * List of LUNs associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Lun luns = 8;</code>
   */
  int getLunsCount();
  /**
   *
   *
   * <pre>
   * List of LUNs associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Lun luns = 8;</code>
   */
  java.util.List<? extends com.google.cloud.baremetalsolution.v2.LunOrBuilder>
      getLunsOrBuilderList();
  /**
   *
   *
   * <pre>
   * List of LUNs associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Lun luns = 8;</code>
   */
  com.google.cloud.baremetalsolution.v2.LunOrBuilder getLunsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * List of networks associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Network networks = 9;</code>
   */
  java.util.List<com.google.cloud.baremetalsolution.v2.Network> getNetworksList();
  /**
   *
   *
   * <pre>
   * List of networks associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Network networks = 9;</code>
   */
  com.google.cloud.baremetalsolution.v2.Network getNetworks(int index);
  /**
   *
   *
   * <pre>
   * List of networks associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Network networks = 9;</code>
   */
  int getNetworksCount();
  /**
   *
   *
   * <pre>
   * List of networks associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Network networks = 9;</code>
   */
  java.util.List<? extends com.google.cloud.baremetalsolution.v2.NetworkOrBuilder>
      getNetworksOrBuilderList();
  /**
   *
   *
   * <pre>
   * List of networks associated with this server.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.Network networks = 9;</code>
   */
  com.google.cloud.baremetalsolution.v2.NetworkOrBuilder getNetworksOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * True if the interactive serial console feature is enabled for the instance,
   * false otherwise.
   * The default value is false.
   * </pre>
   *
   * <code>bool interactive_serial_console_enabled = 10;</code>
   *
   * @return The interactiveSerialConsoleEnabled.
   */
  boolean getInteractiveSerialConsoleEnabled();

  /**
   *
   *
   * <pre>
   * The OS image currently installed on the server.
   * </pre>
   *
   * <code>string os_image = 12;</code>
   *
   * @return The osImage.
   */
  java.lang.String getOsImage();
  /**
   *
   *
   * <pre>
   * The OS image currently installed on the server.
   * </pre>
   *
   * <code>string os_image = 12;</code>
   *
   * @return The bytes for osImage.
   */
  com.google.protobuf.ByteString getOsImageBytes();

  /**
   *
   *
   * <pre>
   * Immutable. Pod name.
   * Pod is an independent part of infrastructure.
   * Instance can be connected to the assets (networks, volumes) allocated
   * in the same pod only.
   * </pre>
   *
   * <code>string pod = 13 [(.google.api.field_behavior) = IMMUTABLE];</code>
   *
   * @return The pod.
   */
  java.lang.String getPod();
  /**
   *
   *
   * <pre>
   * Immutable. Pod name.
   * Pod is an independent part of infrastructure.
   * Instance can be connected to the assets (networks, volumes) allocated
   * in the same pod only.
   * </pre>
   *
   * <code>string pod = 13 [(.google.api.field_behavior) = IMMUTABLE];</code>
   *
   * @return The bytes for pod.
   */
  com.google.protobuf.ByteString getPodBytes();

  /**
   *
   *
   * <pre>
   * Instance network template name. For eg, bondaa-bondaa, bondab-nic, etc.
   * Generally, the template name follows the syntax of
   * "bond&lt;bond_mode&gt;" or "nic".
   * </pre>
   *
   * <code>string network_template = 14 [(.google.api.resource_reference) = { ... }</code>
   *
   * @return The networkTemplate.
   */
  java.lang.String getNetworkTemplate();
  /**
   *
   *
   * <pre>
   * Instance network template name. For eg, bondaa-bondaa, bondab-nic, etc.
   * Generally, the template name follows the syntax of
   * "bond&lt;bond_mode&gt;" or "nic".
   * </pre>
   *
   * <code>string network_template = 14 [(.google.api.resource_reference) = { ... }</code>
   *
   * @return The bytes for networkTemplate.
   */
  com.google.protobuf.ByteString getNetworkTemplateBytes();

  /**
   *
   *
   * <pre>
   * List of logical interfaces for the instance. The number of logical
   * interfaces will be the same as number of hardware bond/nic on the chosen
   * network template. For the non-multivlan configurations (for eg, existing
   * servers) that use existing default network template (bondaa-bondaa), both
   * the Instance.networks field and the Instance.logical_interfaces fields will
   * be filled to ensure backward compatibility. For the others, only
   * Instance.logical_interfaces will be filled.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.LogicalInterface logical_interfaces = 15;
   * </code>
   */
  java.util.List<com.google.cloud.baremetalsolution.v2.LogicalInterface> getLogicalInterfacesList();
  /**
   *
   *
   * <pre>
   * List of logical interfaces for the instance. The number of logical
   * interfaces will be the same as number of hardware bond/nic on the chosen
   * network template. For the non-multivlan configurations (for eg, existing
   * servers) that use existing default network template (bondaa-bondaa), both
   * the Instance.networks field and the Instance.logical_interfaces fields will
   * be filled to ensure backward compatibility. For the others, only
   * Instance.logical_interfaces will be filled.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.LogicalInterface logical_interfaces = 15;
   * </code>
   */
  com.google.cloud.baremetalsolution.v2.LogicalInterface getLogicalInterfaces(int index);
  /**
   *
   *
   * <pre>
   * List of logical interfaces for the instance. The number of logical
   * interfaces will be the same as number of hardware bond/nic on the chosen
   * network template. For the non-multivlan configurations (for eg, existing
   * servers) that use existing default network template (bondaa-bondaa), both
   * the Instance.networks field and the Instance.logical_interfaces fields will
   * be filled to ensure backward compatibility. For the others, only
   * Instance.logical_interfaces will be filled.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.LogicalInterface logical_interfaces = 15;
   * </code>
   */
  int getLogicalInterfacesCount();
  /**
   *
   *
   * <pre>
   * List of logical interfaces for the instance. The number of logical
   * interfaces will be the same as number of hardware bond/nic on the chosen
   * network template. For the non-multivlan configurations (for eg, existing
   * servers) that use existing default network template (bondaa-bondaa), both
   * the Instance.networks field and the Instance.logical_interfaces fields will
   * be filled to ensure backward compatibility. For the others, only
   * Instance.logical_interfaces will be filled.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.LogicalInterface logical_interfaces = 15;
   * </code>
   */
  java.util.List<? extends com.google.cloud.baremetalsolution.v2.LogicalInterfaceOrBuilder>
      getLogicalInterfacesOrBuilderList();
  /**
   *
   *
   * <pre>
   * List of logical interfaces for the instance. The number of logical
   * interfaces will be the same as number of hardware bond/nic on the chosen
   * network template. For the non-multivlan configurations (for eg, existing
   * servers) that use existing default network template (bondaa-bondaa), both
   * the Instance.networks field and the Instance.logical_interfaces fields will
   * be filled to ensure backward compatibility. For the others, only
   * Instance.logical_interfaces will be filled.
   * </pre>
   *
   * <code>repeated .google.cloud.baremetalsolution.v2.LogicalInterface logical_interfaces = 15;
   * </code>
   */
  com.google.cloud.baremetalsolution.v2.LogicalInterfaceOrBuilder getLogicalInterfacesOrBuilder(
      int index);
}
