<?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;

/**
 * Deprecation status for a public resource.
 *
 * Generated from protobuf message <code>google.cloud.compute.v1.DeprecationStatus</code>
 */
class DeprecationStatus extends \Google\Protobuf\Internal\Message
{
    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string deleted = 476721177;</code>
     */
    private $deleted = null;
    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string deprecated = 515138995;</code>
     */
    private $deprecated = null;
    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string obsolete = 357647769;</code>
     */
    private $obsolete = null;
    /**
     * The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     *
     * Generated from protobuf field <code>string replacement = 430919186;</code>
     */
    private $replacement = null;
    /**
     * The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
     *
     * Generated from protobuf field <code>.google.cloud.compute.v1.DeprecationStatus.State state = 109757585;</code>
     */
    private $state = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $deleted
     *           An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
     *     @type string $deprecated
     *           An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
     *     @type string $obsolete
     *           An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
     *     @type string $replacement
     *           The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     *     @type int $state
     *           The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Compute\V1\Compute::initOnce();
        parent::__construct($data);
    }

    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string deleted = 476721177;</code>
     * @return string
     */
    public function getDeleted()
    {
        return isset($this->deleted) ? $this->deleted : '';
    }

    public function hasDeleted()
    {
        return isset($this->deleted);
    }

    public function clearDeleted()
    {
        unset($this->deleted);
    }

    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string deleted = 476721177;</code>
     * @param string $var
     * @return $this
     */
    public function setDeleted($var)
    {
        GPBUtil::checkString($var, True);
        $this->deleted = $var;

        return $this;
    }

    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string deprecated = 515138995;</code>
     * @return string
     */
    public function getDeprecated()
    {
        return isset($this->deprecated) ? $this->deprecated : '';
    }

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

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

    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string deprecated = 515138995;</code>
     * @param string $var
     * @return $this
     */
    public function setDeprecated($var)
    {
        GPBUtil::checkString($var, True);
        $this->deprecated = $var;

        return $this;
    }

    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string obsolete = 357647769;</code>
     * @return string
     */
    public function getObsolete()
    {
        return isset($this->obsolete) ? $this->obsolete : '';
    }

    public function hasObsolete()
    {
        return isset($this->obsolete);
    }

    public function clearObsolete()
    {
        unset($this->obsolete);
    }

    /**
     * An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
     *
     * Generated from protobuf field <code>string obsolete = 357647769;</code>
     * @param string $var
     * @return $this
     */
    public function setObsolete($var)
    {
        GPBUtil::checkString($var, True);
        $this->obsolete = $var;

        return $this;
    }

    /**
     * The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     *
     * Generated from protobuf field <code>string replacement = 430919186;</code>
     * @return string
     */
    public function getReplacement()
    {
        return isset($this->replacement) ? $this->replacement : '';
    }

    public function hasReplacement()
    {
        return isset($this->replacement);
    }

    public function clearReplacement()
    {
        unset($this->replacement);
    }

    /**
     * The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     *
     * Generated from protobuf field <code>string replacement = 430919186;</code>
     * @param string $var
     * @return $this
     */
    public function setReplacement($var)
    {
        GPBUtil::checkString($var, True);
        $this->replacement = $var;

        return $this;
    }

    /**
     * The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
     *
     * Generated from protobuf field <code>.google.cloud.compute.v1.DeprecationStatus.State state = 109757585;</code>
     * @return int
     */
    public function getState()
    {
        return isset($this->state) ? $this->state : 0;
    }

    public function hasState()
    {
        return isset($this->state);
    }

    public function clearState()
    {
        unset($this->state);
    }

    /**
     * The deprecation state of this resource. This can be ACTIVE, DEPRECATED, OBSOLETE, or DELETED. Operations which communicate the end of life date for an image, can use ACTIVE. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
     *
     * Generated from protobuf field <code>.google.cloud.compute.v1.DeprecationStatus.State state = 109757585;</code>
     * @param int $var
     * @return $this
     */
    public function setState($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\Compute\V1\DeprecationStatus\State::class);
        $this->state = $var;

        return $this;
    }

}

