<?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>optional 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>optional 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>optional 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>optional 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.
     * Check the State enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string 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 string $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.
     *           Check the State enum for the list of possible values.
     * }
     */
    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>optional 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>optional 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>optional 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>optional 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>optional 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>optional 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>optional 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>optional 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.
     * Check the State enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string state = 109757585;</code>
     * @return string
     */
    public function getState()
    {
        return isset($this->state) ? $this->state : '';
    }

    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.
     * Check the State enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string state = 109757585;</code>
     * @param string $var
     * @return $this
     */
    public function setState($var)
    {
        GPBUtil::checkString($var, True);
        $this->state = $var;

        return $this;
    }

}

