<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/capacityplanner/v1beta/usage_service.proto

namespace Google\Cloud\CapacityPlanner\V1beta;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * Machine shape details
 * Next : 13
 *
 * Generated from protobuf message <code>google.cloud.capacityplanner.v1beta.MachineShape</code>
 */
class MachineShape extends \Google\Protobuf\Internal\Message
{
    /**
     * Optional. The VM family.
     *
     * Generated from protobuf field <code>string machine_family = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $machine_family = '';
    /**
     * Optional. The characteristics of the sampled VM expressed as a string.
     *
     * Generated from protobuf field <code>string machine_type = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $machine_type = '';
    /**
     * Optional. The customer visible string representing the type of VM.
     *
     * Generated from protobuf field <code>string machine_shape = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $machine_shape = '';
    /**
     * Optional. Number of CPU cores per VM.
     *
     * Generated from protobuf field <code>double cpu_cores = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $cpu_cores = 0.0;
    /**
     * Optional. The type of GPU with the VM.
     *
     * Generated from protobuf field <code>string gpu_type = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $gpu_type = '';
    /**
     * Optional. The GPU name recognized by Compute Engine APIs.
     *
     * Generated from protobuf field <code>string gpu_compute_type = 10 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $gpu_compute_type = '';
    /**
     * Optional. The number of GPU cores per VM.
     *
     * Generated from protobuf field <code>int64 gpu_cores = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $gpu_cores = 0;
    /**
     * Optional. The number of local SSD partitions per VM.
     *
     * Generated from protobuf field <code>int64 local_ssd_partitions = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $local_ssd_partitions = 0;
    /**
     * Optional. Total amount of local SSD storage.
     *
     * Generated from protobuf field <code>double local_ssd_gb = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $local_ssd_gb = 0.0;
    /**
     * Optional. Total amount of memory with the VM.
     *
     * Generated from protobuf field <code>double memory_gb = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $memory_gb = 0.0;
    /**
     * Optional. The local SSD interface used such as nvme or scsi
     *
     * Generated from protobuf field <code>string local_ssd_interface = 11 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $local_ssd_interface = '';
    /**
     * Optional. The Min-cpu platform used such as icelake
     *
     * Generated from protobuf field <code>string min_cpu_platform = 12 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $min_cpu_platform = '';

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $machine_family
     *           Optional. The VM family.
     *     @type string $machine_type
     *           Optional. The characteristics of the sampled VM expressed as a string.
     *     @type string $machine_shape
     *           Optional. The customer visible string representing the type of VM.
     *     @type float $cpu_cores
     *           Optional. Number of CPU cores per VM.
     *     @type string $gpu_type
     *           Optional. The type of GPU with the VM.
     *     @type string $gpu_compute_type
     *           Optional. The GPU name recognized by Compute Engine APIs.
     *     @type int|string $gpu_cores
     *           Optional. The number of GPU cores per VM.
     *     @type int|string $local_ssd_partitions
     *           Optional. The number of local SSD partitions per VM.
     *     @type float $local_ssd_gb
     *           Optional. Total amount of local SSD storage.
     *     @type float $memory_gb
     *           Optional. Total amount of memory with the VM.
     *     @type string $local_ssd_interface
     *           Optional. The local SSD interface used such as nvme or scsi
     *     @type string $min_cpu_platform
     *           Optional. The Min-cpu platform used such as icelake
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Capacityplanner\V1Beta\UsageService::initOnce();
        parent::__construct($data);
    }

    /**
     * Optional. The VM family.
     *
     * Generated from protobuf field <code>string machine_family = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getMachineFamily()
    {
        return $this->machine_family;
    }

    /**
     * Optional. The VM family.
     *
     * Generated from protobuf field <code>string machine_family = 1 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setMachineFamily($var)
    {
        GPBUtil::checkString($var, True);
        $this->machine_family = $var;

        return $this;
    }

    /**
     * Optional. The characteristics of the sampled VM expressed as a string.
     *
     * Generated from protobuf field <code>string machine_type = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getMachineType()
    {
        return $this->machine_type;
    }

    /**
     * Optional. The characteristics of the sampled VM expressed as a string.
     *
     * Generated from protobuf field <code>string machine_type = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setMachineType($var)
    {
        GPBUtil::checkString($var, True);
        $this->machine_type = $var;

        return $this;
    }

    /**
     * Optional. The customer visible string representing the type of VM.
     *
     * Generated from protobuf field <code>string machine_shape = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getMachineShape()
    {
        return $this->machine_shape;
    }

    /**
     * Optional. The customer visible string representing the type of VM.
     *
     * Generated from protobuf field <code>string machine_shape = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setMachineShape($var)
    {
        GPBUtil::checkString($var, True);
        $this->machine_shape = $var;

        return $this;
    }

    /**
     * Optional. Number of CPU cores per VM.
     *
     * Generated from protobuf field <code>double cpu_cores = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return float
     */
    public function getCpuCores()
    {
        return $this->cpu_cores;
    }

    /**
     * Optional. Number of CPU cores per VM.
     *
     * Generated from protobuf field <code>double cpu_cores = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param float $var
     * @return $this
     */
    public function setCpuCores($var)
    {
        GPBUtil::checkDouble($var);
        $this->cpu_cores = $var;

        return $this;
    }

    /**
     * Optional. The type of GPU with the VM.
     *
     * Generated from protobuf field <code>string gpu_type = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getGpuType()
    {
        return $this->gpu_type;
    }

    /**
     * Optional. The type of GPU with the VM.
     *
     * Generated from protobuf field <code>string gpu_type = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setGpuType($var)
    {
        GPBUtil::checkString($var, True);
        $this->gpu_type = $var;

        return $this;
    }

    /**
     * Optional. The GPU name recognized by Compute Engine APIs.
     *
     * Generated from protobuf field <code>string gpu_compute_type = 10 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getGpuComputeType()
    {
        return $this->gpu_compute_type;
    }

    /**
     * Optional. The GPU name recognized by Compute Engine APIs.
     *
     * Generated from protobuf field <code>string gpu_compute_type = 10 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setGpuComputeType($var)
    {
        GPBUtil::checkString($var, True);
        $this->gpu_compute_type = $var;

        return $this;
    }

    /**
     * Optional. The number of GPU cores per VM.
     *
     * Generated from protobuf field <code>int64 gpu_cores = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return int|string
     */
    public function getGpuCores()
    {
        return $this->gpu_cores;
    }

    /**
     * Optional. The number of GPU cores per VM.
     *
     * Generated from protobuf field <code>int64 gpu_cores = 6 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param int|string $var
     * @return $this
     */
    public function setGpuCores($var)
    {
        GPBUtil::checkInt64($var);
        $this->gpu_cores = $var;

        return $this;
    }

    /**
     * Optional. The number of local SSD partitions per VM.
     *
     * Generated from protobuf field <code>int64 local_ssd_partitions = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return int|string
     */
    public function getLocalSsdPartitions()
    {
        return $this->local_ssd_partitions;
    }

    /**
     * Optional. The number of local SSD partitions per VM.
     *
     * Generated from protobuf field <code>int64 local_ssd_partitions = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param int|string $var
     * @return $this
     */
    public function setLocalSsdPartitions($var)
    {
        GPBUtil::checkInt64($var);
        $this->local_ssd_partitions = $var;

        return $this;
    }

    /**
     * Optional. Total amount of local SSD storage.
     *
     * Generated from protobuf field <code>double local_ssd_gb = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return float
     */
    public function getLocalSsdGb()
    {
        return $this->local_ssd_gb;
    }

    /**
     * Optional. Total amount of local SSD storage.
     *
     * Generated from protobuf field <code>double local_ssd_gb = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param float $var
     * @return $this
     */
    public function setLocalSsdGb($var)
    {
        GPBUtil::checkDouble($var);
        $this->local_ssd_gb = $var;

        return $this;
    }

    /**
     * Optional. Total amount of memory with the VM.
     *
     * Generated from protobuf field <code>double memory_gb = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return float
     */
    public function getMemoryGb()
    {
        return $this->memory_gb;
    }

    /**
     * Optional. Total amount of memory with the VM.
     *
     * Generated from protobuf field <code>double memory_gb = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param float $var
     * @return $this
     */
    public function setMemoryGb($var)
    {
        GPBUtil::checkDouble($var);
        $this->memory_gb = $var;

        return $this;
    }

    /**
     * Optional. The local SSD interface used such as nvme or scsi
     *
     * Generated from protobuf field <code>string local_ssd_interface = 11 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getLocalSsdInterface()
    {
        return $this->local_ssd_interface;
    }

    /**
     * Optional. The local SSD interface used such as nvme or scsi
     *
     * Generated from protobuf field <code>string local_ssd_interface = 11 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setLocalSsdInterface($var)
    {
        GPBUtil::checkString($var, True);
        $this->local_ssd_interface = $var;

        return $this;
    }

    /**
     * Optional. The Min-cpu platform used such as icelake
     *
     * Generated from protobuf field <code>string min_cpu_platform = 12 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return string
     */
    public function getMinCpuPlatform()
    {
        return $this->min_cpu_platform;
    }

    /**
     * Optional. The Min-cpu platform used such as icelake
     *
     * Generated from protobuf field <code>string min_cpu_platform = 12 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param string $var
     * @return $this
     */
    public function setMinCpuPlatform($var)
    {
        GPBUtil::checkString($var, True);
        $this->min_cpu_platform = $var;

        return $this;
    }

}

