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

/**
 * [Output only] Represents status related to the future reservation.
 *
 * Generated from protobuf message <code>google.cloud.compute.v1.FutureReservationStatus</code>
 */
class FutureReservationStatus extends \Google\Protobuf\Internal\Message
{
    /**
     * Output only. [Output Only] The current status of the requested amendment.
     * Check the AmendmentStatus enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string amendment_status = 250270052;</code>
     */
    protected $amendment_status = null;
    /**
     * Output only. Fully qualified urls of the automatically created reservations at
     * start_time.
     *
     * Generated from protobuf field <code>repeated string auto_created_reservations = 140217006;</code>
     */
    private $auto_created_reservations;
    /**
     * Output only. [Output Only] Represents the existing matching usage for the future
     * reservation.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusExistingMatchingUsageInfo existing_matching_usage_info = 509920602;</code>
     */
    protected $existing_matching_usage_info = null;
    /**
     * Output only. This count indicates the fulfilled capacity so far. This is set during
     * "PROVISIONING" state. This count also includes capacity delivered as part
     * of existing matching reservations.
     *
     * Generated from protobuf field <code>optional int64 fulfilled_count = 319392239;</code>
     */
    protected $fulfilled_count = null;
    /**
     * Output only. [Output Only] This field represents the future reservation before an
     * amendment was requested. If the amendment is declined, the Future
     * Reservation will be reverted to the last known good state. The last known
     * good state is not set when updating a future reservation whose
     * Procurement Status is DRAFTING.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusLastKnownGoodState last_known_good_state = 192819092;</code>
     */
    protected $last_known_good_state = null;
    /**
     * Output only. Time when Future Reservation would become LOCKED, after which no
     * modifications to Future Reservation will be allowed. Applicable only
     * after the Future Reservation is in the APPROVED state. The lock_time is
     * an RFC3339 string. The procurement_status will transition to PROCURING
     * state at this time.
     *
     * Generated from protobuf field <code>optional string lock_time = 143772001;</code>
     */
    protected $lock_time = null;
    /**
     * Output only. Current state of this Future Reservation
     * Check the ProcurementStatus enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string procurement_status = 224718945;</code>
     */
    protected $procurement_status = null;
    /**
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusSpecificSKUProperties specific_sku_properties = 108887106;</code>
     */
    protected $specific_sku_properties = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $amendment_status
     *           Output only. [Output Only] The current status of the requested amendment.
     *           Check the AmendmentStatus enum for the list of possible values.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $auto_created_reservations
     *           Output only. Fully qualified urls of the automatically created reservations at
     *           start_time.
     *     @type \Google\Cloud\Compute\V1\FutureReservationStatusExistingMatchingUsageInfo $existing_matching_usage_info
     *           Output only. [Output Only] Represents the existing matching usage for the future
     *           reservation.
     *     @type int|string $fulfilled_count
     *           Output only. This count indicates the fulfilled capacity so far. This is set during
     *           "PROVISIONING" state. This count also includes capacity delivered as part
     *           of existing matching reservations.
     *     @type \Google\Cloud\Compute\V1\FutureReservationStatusLastKnownGoodState $last_known_good_state
     *           Output only. [Output Only] This field represents the future reservation before an
     *           amendment was requested. If the amendment is declined, the Future
     *           Reservation will be reverted to the last known good state. The last known
     *           good state is not set when updating a future reservation whose
     *           Procurement Status is DRAFTING.
     *     @type string $lock_time
     *           Output only. Time when Future Reservation would become LOCKED, after which no
     *           modifications to Future Reservation will be allowed. Applicable only
     *           after the Future Reservation is in the APPROVED state. The lock_time is
     *           an RFC3339 string. The procurement_status will transition to PROCURING
     *           state at this time.
     *     @type string $procurement_status
     *           Output only. Current state of this Future Reservation
     *           Check the ProcurementStatus enum for the list of possible values.
     *     @type \Google\Cloud\Compute\V1\FutureReservationStatusSpecificSKUProperties $specific_sku_properties
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Compute\V1\Compute::initOnce();
        parent::__construct($data);
    }

    /**
     * Output only. [Output Only] The current status of the requested amendment.
     * Check the AmendmentStatus enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string amendment_status = 250270052;</code>
     * @return string
     */
    public function getAmendmentStatus()
    {
        return isset($this->amendment_status) ? $this->amendment_status : '';
    }

    public function hasAmendmentStatus()
    {
        return isset($this->amendment_status);
    }

    public function clearAmendmentStatus()
    {
        unset($this->amendment_status);
    }

    /**
     * Output only. [Output Only] The current status of the requested amendment.
     * Check the AmendmentStatus enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string amendment_status = 250270052;</code>
     * @param string $var
     * @return $this
     */
    public function setAmendmentStatus($var)
    {
        GPBUtil::checkString($var, True);
        $this->amendment_status = $var;

        return $this;
    }

    /**
     * Output only. Fully qualified urls of the automatically created reservations at
     * start_time.
     *
     * Generated from protobuf field <code>repeated string auto_created_reservations = 140217006;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getAutoCreatedReservations()
    {
        return $this->auto_created_reservations;
    }

    /**
     * Output only. Fully qualified urls of the automatically created reservations at
     * start_time.
     *
     * Generated from protobuf field <code>repeated string auto_created_reservations = 140217006;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setAutoCreatedReservations($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->auto_created_reservations = $arr;

        return $this;
    }

    /**
     * Output only. [Output Only] Represents the existing matching usage for the future
     * reservation.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusExistingMatchingUsageInfo existing_matching_usage_info = 509920602;</code>
     * @return \Google\Cloud\Compute\V1\FutureReservationStatusExistingMatchingUsageInfo|null
     */
    public function getExistingMatchingUsageInfo()
    {
        return $this->existing_matching_usage_info;
    }

    public function hasExistingMatchingUsageInfo()
    {
        return isset($this->existing_matching_usage_info);
    }

    public function clearExistingMatchingUsageInfo()
    {
        unset($this->existing_matching_usage_info);
    }

    /**
     * Output only. [Output Only] Represents the existing matching usage for the future
     * reservation.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusExistingMatchingUsageInfo existing_matching_usage_info = 509920602;</code>
     * @param \Google\Cloud\Compute\V1\FutureReservationStatusExistingMatchingUsageInfo $var
     * @return $this
     */
    public function setExistingMatchingUsageInfo($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\Compute\V1\FutureReservationStatusExistingMatchingUsageInfo::class);
        $this->existing_matching_usage_info = $var;

        return $this;
    }

    /**
     * Output only. This count indicates the fulfilled capacity so far. This is set during
     * "PROVISIONING" state. This count also includes capacity delivered as part
     * of existing matching reservations.
     *
     * Generated from protobuf field <code>optional int64 fulfilled_count = 319392239;</code>
     * @return int|string
     */
    public function getFulfilledCount()
    {
        return isset($this->fulfilled_count) ? $this->fulfilled_count : 0;
    }

    public function hasFulfilledCount()
    {
        return isset($this->fulfilled_count);
    }

    public function clearFulfilledCount()
    {
        unset($this->fulfilled_count);
    }

    /**
     * Output only. This count indicates the fulfilled capacity so far. This is set during
     * "PROVISIONING" state. This count also includes capacity delivered as part
     * of existing matching reservations.
     *
     * Generated from protobuf field <code>optional int64 fulfilled_count = 319392239;</code>
     * @param int|string $var
     * @return $this
     */
    public function setFulfilledCount($var)
    {
        GPBUtil::checkInt64($var);
        $this->fulfilled_count = $var;

        return $this;
    }

    /**
     * Output only. [Output Only] This field represents the future reservation before an
     * amendment was requested. If the amendment is declined, the Future
     * Reservation will be reverted to the last known good state. The last known
     * good state is not set when updating a future reservation whose
     * Procurement Status is DRAFTING.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusLastKnownGoodState last_known_good_state = 192819092;</code>
     * @return \Google\Cloud\Compute\V1\FutureReservationStatusLastKnownGoodState|null
     */
    public function getLastKnownGoodState()
    {
        return $this->last_known_good_state;
    }

    public function hasLastKnownGoodState()
    {
        return isset($this->last_known_good_state);
    }

    public function clearLastKnownGoodState()
    {
        unset($this->last_known_good_state);
    }

    /**
     * Output only. [Output Only] This field represents the future reservation before an
     * amendment was requested. If the amendment is declined, the Future
     * Reservation will be reverted to the last known good state. The last known
     * good state is not set when updating a future reservation whose
     * Procurement Status is DRAFTING.
     *
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusLastKnownGoodState last_known_good_state = 192819092;</code>
     * @param \Google\Cloud\Compute\V1\FutureReservationStatusLastKnownGoodState $var
     * @return $this
     */
    public function setLastKnownGoodState($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\Compute\V1\FutureReservationStatusLastKnownGoodState::class);
        $this->last_known_good_state = $var;

        return $this;
    }

    /**
     * Output only. Time when Future Reservation would become LOCKED, after which no
     * modifications to Future Reservation will be allowed. Applicable only
     * after the Future Reservation is in the APPROVED state. The lock_time is
     * an RFC3339 string. The procurement_status will transition to PROCURING
     * state at this time.
     *
     * Generated from protobuf field <code>optional string lock_time = 143772001;</code>
     * @return string
     */
    public function getLockTime()
    {
        return isset($this->lock_time) ? $this->lock_time : '';
    }

    public function hasLockTime()
    {
        return isset($this->lock_time);
    }

    public function clearLockTime()
    {
        unset($this->lock_time);
    }

    /**
     * Output only. Time when Future Reservation would become LOCKED, after which no
     * modifications to Future Reservation will be allowed. Applicable only
     * after the Future Reservation is in the APPROVED state. The lock_time is
     * an RFC3339 string. The procurement_status will transition to PROCURING
     * state at this time.
     *
     * Generated from protobuf field <code>optional string lock_time = 143772001;</code>
     * @param string $var
     * @return $this
     */
    public function setLockTime($var)
    {
        GPBUtil::checkString($var, True);
        $this->lock_time = $var;

        return $this;
    }

    /**
     * Output only. Current state of this Future Reservation
     * Check the ProcurementStatus enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string procurement_status = 224718945;</code>
     * @return string
     */
    public function getProcurementStatus()
    {
        return isset($this->procurement_status) ? $this->procurement_status : '';
    }

    public function hasProcurementStatus()
    {
        return isset($this->procurement_status);
    }

    public function clearProcurementStatus()
    {
        unset($this->procurement_status);
    }

    /**
     * Output only. Current state of this Future Reservation
     * Check the ProcurementStatus enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string procurement_status = 224718945;</code>
     * @param string $var
     * @return $this
     */
    public function setProcurementStatus($var)
    {
        GPBUtil::checkString($var, True);
        $this->procurement_status = $var;

        return $this;
    }

    /**
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusSpecificSKUProperties specific_sku_properties = 108887106;</code>
     * @return \Google\Cloud\Compute\V1\FutureReservationStatusSpecificSKUProperties|null
     */
    public function getSpecificSkuProperties()
    {
        return $this->specific_sku_properties;
    }

    public function hasSpecificSkuProperties()
    {
        return isset($this->specific_sku_properties);
    }

    public function clearSpecificSkuProperties()
    {
        unset($this->specific_sku_properties);
    }

    /**
     * Generated from protobuf field <code>optional .google.cloud.compute.v1.FutureReservationStatusSpecificSKUProperties specific_sku_properties = 108887106;</code>
     * @param \Google\Cloud\Compute\V1\FutureReservationStatusSpecificSKUProperties $var
     * @return $this
     */
    public function setSpecificSkuProperties($var)
    {
        GPBUtil::checkMessage($var, \Google\Cloud\Compute\V1\FutureReservationStatusSpecificSKUProperties::class);
        $this->specific_sku_properties = $var;

        return $this;
    }

}

