/*
 * 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/compute/v1/compute.proto

package com.google.cloud.compute.v1;

public interface AdvancedMachineFeaturesOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.compute.v1.AdvancedMachineFeatures)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Whether to enable nested virtualization or not (default is false).
   * </pre>
   *
   * <code>optional bool enable_nested_virtualization = 16639365;</code>
   *
   * @return Whether the enableNestedVirtualization field is set.
   */
  boolean hasEnableNestedVirtualization();
  /**
   *
   *
   * <pre>
   * Whether to enable nested virtualization or not (default is false).
   * </pre>
   *
   * <code>optional bool enable_nested_virtualization = 16639365;</code>
   *
   * @return The enableNestedVirtualization.
   */
  boolean getEnableNestedVirtualization();

  /**
   *
   *
   * <pre>
   * Whether to enable UEFI networking for instance creation.
   * </pre>
   *
   * <code>optional bool enable_uefi_networking = 334485668;</code>
   *
   * @return Whether the enableUefiNetworking field is set.
   */
  boolean hasEnableUefiNetworking();
  /**
   *
   *
   * <pre>
   * Whether to enable UEFI networking for instance creation.
   * </pre>
   *
   * <code>optional bool enable_uefi_networking = 334485668;</code>
   *
   * @return The enableUefiNetworking.
   */
  boolean getEnableUefiNetworking();

  /**
   *
   *
   * <pre>
   * The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
   * </pre>
   *
   * <code>optional int32 threads_per_core = 352611671;</code>
   *
   * @return Whether the threadsPerCore field is set.
   */
  boolean hasThreadsPerCore();
  /**
   *
   *
   * <pre>
   * The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.
   * </pre>
   *
   * <code>optional int32 threads_per_core = 352611671;</code>
   *
   * @return The threadsPerCore.
   */
  int getThreadsPerCore();

  /**
   *
   *
   * <pre>
   * The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance's nominal CPU count and the underlying platform's SMT width.
   * </pre>
   *
   * <code>optional int32 visible_core_count = 193198684;</code>
   *
   * @return Whether the visibleCoreCount field is set.
   */
  boolean hasVisibleCoreCount();
  /**
   *
   *
   * <pre>
   * The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance's nominal CPU count and the underlying platform's SMT width.
   * </pre>
   *
   * <code>optional int32 visible_core_count = 193198684;</code>
   *
   * @return The visibleCoreCount.
   */
  int getVisibleCoreCount();
}
