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

namespace Google\Cloud\Compute\V1;

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

/**
 *
 * Generated from protobuf message <code>google.cloud.compute.v1.StoragePoolType</code>
 */
class StoragePoolType extends \Google\Protobuf\Internal\Message
{
    /**
     * [Output Only] Creation timestamp in RFC3339 text format.
     *
     * Generated from protobuf field <code>optional string creation_timestamp = 30525366;</code>
     */
    protected $creation_timestamp = null;
    /**
     * [Output Only] The deprecation status associated with this storage pool type.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.DeprecationStatus deprecated = 515138995;</code>
     */
    protected $deprecated = null;
    /**
     * [Output Only] An optional description of this resource.
     *
     * Generated from protobuf field <code>optional string description = 422937596;</code>
     */
    protected $description = null;
    /**
     * [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     *
     * Generated from protobuf field <code>optional uint64 id = 3355;</code>
     */
    protected $id = null;
    /**
     * [Output Only] Type of the resource. Always compute#storagePoolType for storage pool types.
     *
     * Generated from protobuf field <code>optional string kind = 3292052;</code>
     */
    protected $kind = null;
    /**
     * [Output Only] Maximum storage pool size in GB.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_capacity_gb = 182139085;</code>
     */
    protected $max_pool_provisioned_capacity_gb = null;
    /**
     * [Output Only] Maximum provisioned IOPS.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_iops = 515270652;</code>
     */
    protected $max_pool_provisioned_iops = null;
    /**
     * [Output Only] Maximum provisioned throughput.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_throughput = 228928061;</code>
     */
    protected $max_pool_provisioned_throughput = null;
    /**
     * [Output Only] Minimum storage pool size in GB.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_capacity_gb = 191022751;</code>
     */
    protected $min_pool_provisioned_capacity_gb = null;
    /**
     * [Output Only] Minimum provisioned IOPS.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_iops = 416473706;</code>
     */
    protected $min_pool_provisioned_iops = null;
    /**
     * [Output Only] Minimum provisioned throughput.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_throughput = 367761963;</code>
     */
    protected $min_pool_provisioned_throughput = null;
    /**
     * [Deprecated] This field is deprecated. Use minPoolProvisionedCapacityGb instead.
     *
     * Generated from protobuf field <code>optional int64 min_size_gb = 385278188;</code>
     */
    protected $min_size_gb = null;
    /**
     * [Output Only] Name of the resource.
     *
     * Generated from protobuf field <code>optional string name = 3373707;</code>
     */
    protected $name = null;
    /**
     * [Output Only] Server-defined URL for the resource.
     *
     * Generated from protobuf field <code>optional string self_link = 456214797;</code>
     */
    protected $self_link = null;
    /**
     * [Output Only] Server-defined URL for this resource with the resource id.
     *
     * Generated from protobuf field <code>optional string self_link_with_id = 44520962;</code>
     */
    protected $self_link_with_id = null;
    /**
     * [Output Only] The list of disk types supported in this storage pool type.
     *
     * Generated from protobuf field <code>repeated string supported_disk_types = 150587272;</code>
     */
    private $supported_disk_types;
    /**
     * [Output Only] URL of the zone where the storage pool type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.
     *
     * Generated from protobuf field <code>optional string zone = 3744684;</code>
     */
    protected $zone = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $creation_timestamp
     *           [Output Only] Creation timestamp in RFC3339 text format.
     *     @type \Google\Cloud\Compute\V1\DeprecationStatus $deprecated
     *           [Output Only] The deprecation status associated with this storage pool type.
     *     @type string $description
     *           [Output Only] An optional description of this resource.
     *     @type int|string $id
     *           [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     *     @type string $kind
     *           [Output Only] Type of the resource. Always compute#storagePoolType for storage pool types.
     *     @type int|string $max_pool_provisioned_capacity_gb
     *           [Output Only] Maximum storage pool size in GB.
     *     @type int|string $max_pool_provisioned_iops
     *           [Output Only] Maximum provisioned IOPS.
     *     @type int|string $max_pool_provisioned_throughput
     *           [Output Only] Maximum provisioned throughput.
     *     @type int|string $min_pool_provisioned_capacity_gb
     *           [Output Only] Minimum storage pool size in GB.
     *     @type int|string $min_pool_provisioned_iops
     *           [Output Only] Minimum provisioned IOPS.
     *     @type int|string $min_pool_provisioned_throughput
     *           [Output Only] Minimum provisioned throughput.
     *     @type int|string $min_size_gb
     *           [Deprecated] This field is deprecated. Use minPoolProvisionedCapacityGb instead.
     *     @type string $name
     *           [Output Only] Name of the resource.
     *     @type string $self_link
     *           [Output Only] Server-defined URL for the resource.
     *     @type string $self_link_with_id
     *           [Output Only] Server-defined URL for this resource with the resource id.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $supported_disk_types
     *           [Output Only] The list of disk types supported in this storage pool type.
     *     @type string $zone
     *           [Output Only] URL of the zone where the storage pool type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Compute\V1\Compute::initOnce();
        parent::__construct($data);
    }

    /**
     * [Output Only] Creation timestamp in RFC3339 text format.
     *
     * Generated from protobuf field <code>optional string creation_timestamp = 30525366;</code>
     * @return string
     */
    public function getCreationTimestamp()
    {
        return isset($this->creation_timestamp) ? $this->creation_timestamp : '';
    }

    public function hasCreationTimestamp()
    {
        return isset($this->creation_timestamp);
    }

    public function clearCreationTimestamp()
    {
        unset($this->creation_timestamp);
    }

    /**
     * [Output Only] Creation timestamp in RFC3339 text format.
     *
     * Generated from protobuf field <code>optional string creation_timestamp = 30525366;</code>
     * @param string $var
     * @return $this
     */
    public function setCreationTimestamp($var)
    {
        GPBUtil::checkString($var, True);
        $this->creation_timestamp = $var;

        return $this;
    }

    /**
     * [Output Only] The deprecation status associated with this storage pool type.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.DeprecationStatus deprecated = 515138995;</code>
     * @return \Google\Cloud\Compute\V1\DeprecationStatus|null
     */
    public function getDeprecated()
    {
        return $this->deprecated;
    }

    public function hasDeprecated()
    {
        return isset($this->deprecated);
    }

    public function clearDeprecated()
    {
        unset($this->deprecated);
    }

    /**
     * [Output Only] The deprecation status associated with this storage pool type.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.DeprecationStatus deprecated = 515138995;</code>
     * @param \Google\Cloud\Compute\V1\DeprecationStatus $var
     * @return $this
     */
    public function setDeprecated($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\Compute\V1\DeprecationStatus::class);
        $this->deprecated = $var;

        return $this;
    }

    /**
     * [Output Only] An optional description of this resource.
     *
     * Generated from protobuf field <code>optional string description = 422937596;</code>
     * @return string
     */
    public function getDescription()
    {
        return isset($this->description) ? $this->description : '';
    }

    public function hasDescription()
    {
        return isset($this->description);
    }

    public function clearDescription()
    {
        unset($this->description);
    }

    /**
     * [Output Only] An optional description of this resource.
     *
     * Generated from protobuf field <code>optional string description = 422937596;</code>
     * @param string $var
     * @return $this
     */
    public function setDescription($var)
    {
        GPBUtil::checkString($var, True);
        $this->description = $var;

        return $this;
    }

    /**
     * [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     *
     * Generated from protobuf field <code>optional uint64 id = 3355;</code>
     * @return int|string
     */
    public function getId()
    {
        return isset($this->id) ? $this->id : 0;
    }

    public function hasId()
    {
        return isset($this->id);
    }

    public function clearId()
    {
        unset($this->id);
    }

    /**
     * [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     *
     * Generated from protobuf field <code>optional uint64 id = 3355;</code>
     * @param int|string $var
     * @return $this
     */
    public function setId($var)
    {
        GPBUtil::checkUint64($var);
        $this->id = $var;

        return $this;
    }

    /**
     * [Output Only] Type of the resource. Always compute#storagePoolType for storage pool types.
     *
     * Generated from protobuf field <code>optional string kind = 3292052;</code>
     * @return string
     */
    public function getKind()
    {
        return isset($this->kind) ? $this->kind : '';
    }

    public function hasKind()
    {
        return isset($this->kind);
    }

    public function clearKind()
    {
        unset($this->kind);
    }

    /**
     * [Output Only] Type of the resource. Always compute#storagePoolType for storage pool types.
     *
     * Generated from protobuf field <code>optional string kind = 3292052;</code>
     * @param string $var
     * @return $this
     */
    public function setKind($var)
    {
        GPBUtil::checkString($var, True);
        $this->kind = $var;

        return $this;
    }

    /**
     * [Output Only] Maximum storage pool size in GB.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_capacity_gb = 182139085;</code>
     * @return int|string
     */
    public function getMaxPoolProvisionedCapacityGb()
    {
        return isset($this->max_pool_provisioned_capacity_gb) ? $this->max_pool_provisioned_capacity_gb : 0;
    }

    public function hasMaxPoolProvisionedCapacityGb()
    {
        return isset($this->max_pool_provisioned_capacity_gb);
    }

    public function clearMaxPoolProvisionedCapacityGb()
    {
        unset($this->max_pool_provisioned_capacity_gb);
    }

    /**
     * [Output Only] Maximum storage pool size in GB.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_capacity_gb = 182139085;</code>
     * @param int|string $var
     * @return $this
     */
    public function setMaxPoolProvisionedCapacityGb($var)
    {
        GPBUtil::checkInt64($var);
        $this->max_pool_provisioned_capacity_gb = $var;

        return $this;
    }

    /**
     * [Output Only] Maximum provisioned IOPS.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_iops = 515270652;</code>
     * @return int|string
     */
    public function getMaxPoolProvisionedIops()
    {
        return isset($this->max_pool_provisioned_iops) ? $this->max_pool_provisioned_iops : 0;
    }

    public function hasMaxPoolProvisionedIops()
    {
        return isset($this->max_pool_provisioned_iops);
    }

    public function clearMaxPoolProvisionedIops()
    {
        unset($this->max_pool_provisioned_iops);
    }

    /**
     * [Output Only] Maximum provisioned IOPS.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_iops = 515270652;</code>
     * @param int|string $var
     * @return $this
     */
    public function setMaxPoolProvisionedIops($var)
    {
        GPBUtil::checkInt64($var);
        $this->max_pool_provisioned_iops = $var;

        return $this;
    }

    /**
     * [Output Only] Maximum provisioned throughput.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_throughput = 228928061;</code>
     * @return int|string
     */
    public function getMaxPoolProvisionedThroughput()
    {
        return isset($this->max_pool_provisioned_throughput) ? $this->max_pool_provisioned_throughput : 0;
    }

    public function hasMaxPoolProvisionedThroughput()
    {
        return isset($this->max_pool_provisioned_throughput);
    }

    public function clearMaxPoolProvisionedThroughput()
    {
        unset($this->max_pool_provisioned_throughput);
    }

    /**
     * [Output Only] Maximum provisioned throughput.
     *
     * Generated from protobuf field <code>optional int64 max_pool_provisioned_throughput = 228928061;</code>
     * @param int|string $var
     * @return $this
     */
    public function setMaxPoolProvisionedThroughput($var)
    {
        GPBUtil::checkInt64($var);
        $this->max_pool_provisioned_throughput = $var;

        return $this;
    }

    /**
     * [Output Only] Minimum storage pool size in GB.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_capacity_gb = 191022751;</code>
     * @return int|string
     */
    public function getMinPoolProvisionedCapacityGb()
    {
        return isset($this->min_pool_provisioned_capacity_gb) ? $this->min_pool_provisioned_capacity_gb : 0;
    }

    public function hasMinPoolProvisionedCapacityGb()
    {
        return isset($this->min_pool_provisioned_capacity_gb);
    }

    public function clearMinPoolProvisionedCapacityGb()
    {
        unset($this->min_pool_provisioned_capacity_gb);
    }

    /**
     * [Output Only] Minimum storage pool size in GB.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_capacity_gb = 191022751;</code>
     * @param int|string $var
     * @return $this
     */
    public function setMinPoolProvisionedCapacityGb($var)
    {
        GPBUtil::checkInt64($var);
        $this->min_pool_provisioned_capacity_gb = $var;

        return $this;
    }

    /**
     * [Output Only] Minimum provisioned IOPS.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_iops = 416473706;</code>
     * @return int|string
     */
    public function getMinPoolProvisionedIops()
    {
        return isset($this->min_pool_provisioned_iops) ? $this->min_pool_provisioned_iops : 0;
    }

    public function hasMinPoolProvisionedIops()
    {
        return isset($this->min_pool_provisioned_iops);
    }

    public function clearMinPoolProvisionedIops()
    {
        unset($this->min_pool_provisioned_iops);
    }

    /**
     * [Output Only] Minimum provisioned IOPS.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_iops = 416473706;</code>
     * @param int|string $var
     * @return $this
     */
    public function setMinPoolProvisionedIops($var)
    {
        GPBUtil::checkInt64($var);
        $this->min_pool_provisioned_iops = $var;

        return $this;
    }

    /**
     * [Output Only] Minimum provisioned throughput.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_throughput = 367761963;</code>
     * @return int|string
     */
    public function getMinPoolProvisionedThroughput()
    {
        return isset($this->min_pool_provisioned_throughput) ? $this->min_pool_provisioned_throughput : 0;
    }

    public function hasMinPoolProvisionedThroughput()
    {
        return isset($this->min_pool_provisioned_throughput);
    }

    public function clearMinPoolProvisionedThroughput()
    {
        unset($this->min_pool_provisioned_throughput);
    }

    /**
     * [Output Only] Minimum provisioned throughput.
     *
     * Generated from protobuf field <code>optional int64 min_pool_provisioned_throughput = 367761963;</code>
     * @param int|string $var
     * @return $this
     */
    public function setMinPoolProvisionedThroughput($var)
    {
        GPBUtil::checkInt64($var);
        $this->min_pool_provisioned_throughput = $var;

        return $this;
    }

    /**
     * [Deprecated] This field is deprecated. Use minPoolProvisionedCapacityGb instead.
     *
     * Generated from protobuf field <code>optional int64 min_size_gb = 385278188;</code>
     * @return int|string
     */
    public function getMinSizeGb()
    {
        return isset($this->min_size_gb) ? $this->min_size_gb : 0;
    }

    public function hasMinSizeGb()
    {
        return isset($this->min_size_gb);
    }

    public function clearMinSizeGb()
    {
        unset($this->min_size_gb);
    }

    /**
     * [Deprecated] This field is deprecated. Use minPoolProvisionedCapacityGb instead.
     *
     * Generated from protobuf field <code>optional int64 min_size_gb = 385278188;</code>
     * @param int|string $var
     * @return $this
     */
    public function setMinSizeGb($var)
    {
        GPBUtil::checkInt64($var);
        $this->min_size_gb = $var;

        return $this;
    }

    /**
     * [Output Only] Name of the resource.
     *
     * Generated from protobuf field <code>optional string name = 3373707;</code>
     * @return string
     */
    public function getName()
    {
        return isset($this->name) ? $this->name : '';
    }

    public function hasName()
    {
        return isset($this->name);
    }

    public function clearName()
    {
        unset($this->name);
    }

    /**
     * [Output Only] Name of the resource.
     *
     * Generated from protobuf field <code>optional string name = 3373707;</code>
     * @param string $var
     * @return $this
     */
    public function setName($var)
    {
        GPBUtil::checkString($var, True);
        $this->name = $var;

        return $this;
    }

    /**
     * [Output Only] Server-defined URL for the resource.
     *
     * Generated from protobuf field <code>optional string self_link = 456214797;</code>
     * @return string
     */
    public function getSelfLink()
    {
        return isset($this->self_link) ? $this->self_link : '';
    }

    public function hasSelfLink()
    {
        return isset($this->self_link);
    }

    public function clearSelfLink()
    {
        unset($this->self_link);
    }

    /**
     * [Output Only] Server-defined URL for the resource.
     *
     * Generated from protobuf field <code>optional string self_link = 456214797;</code>
     * @param string $var
     * @return $this
     */
    public function setSelfLink($var)
    {
        GPBUtil::checkString($var, True);
        $this->self_link = $var;

        return $this;
    }

    /**
     * [Output Only] Server-defined URL for this resource with the resource id.
     *
     * Generated from protobuf field <code>optional string self_link_with_id = 44520962;</code>
     * @return string
     */
    public function getSelfLinkWithId()
    {
        return isset($this->self_link_with_id) ? $this->self_link_with_id : '';
    }

    public function hasSelfLinkWithId()
    {
        return isset($this->self_link_with_id);
    }

    public function clearSelfLinkWithId()
    {
        unset($this->self_link_with_id);
    }

    /**
     * [Output Only] Server-defined URL for this resource with the resource id.
     *
     * Generated from protobuf field <code>optional string self_link_with_id = 44520962;</code>
     * @param string $var
     * @return $this
     */
    public function setSelfLinkWithId($var)
    {
        GPBUtil::checkString($var, True);
        $this->self_link_with_id = $var;

        return $this;
    }

    /**
     * [Output Only] The list of disk types supported in this storage pool type.
     *
     * Generated from protobuf field <code>repeated string supported_disk_types = 150587272;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSupportedDiskTypes()
    {
        return $this->supported_disk_types;
    }

    /**
     * [Output Only] The list of disk types supported in this storage pool type.
     *
     * Generated from protobuf field <code>repeated string supported_disk_types = 150587272;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSupportedDiskTypes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->supported_disk_types = $arr;

        return $this;
    }

    /**
     * [Output Only] URL of the zone where the storage pool type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.
     *
     * Generated from protobuf field <code>optional string zone = 3744684;</code>
     * @return string
     */
    public function getZone()
    {
        return isset($this->zone) ? $this->zone : '';
    }

    public function hasZone()
    {
        return isset($this->zone);
    }

    public function clearZone()
    {
        unset($this->zone);
    }

    /**
     * [Output Only] URL of the zone where the storage pool type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.
     *
     * Generated from protobuf field <code>optional string zone = 3744684;</code>
     * @param string $var
     * @return $this
     */
    public function setZone($var)
    {
        GPBUtil::checkString($var, True);
        $this->zone = $var;

        return $this;
    }

}

