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

/**
 * Represents an Interconnect Attachment (VLAN) Location resource. You can use this resource to find location details about an Interconnect attachment (VLAN). For more information about interconnect attachments, read Creating VLAN Attachments.
 *
 * Generated from protobuf message <code>google.cloud.compute.v1.InterconnectLocation</code>
 */
class InterconnectLocation extends \Google\Protobuf\Internal\Message
{
    /**
     * [Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character.
     *
     * Generated from protobuf field <code>optional string address = 462920692;</code>
     */
    private $address = null;
    /**
     * [Output Only] Availability zone for this InterconnectLocation. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: "zone1" or "zone2".
     *
     * Generated from protobuf field <code>optional string availability_zone = 158459920;</code>
     */
    private $availability_zone = null;
    /**
     * [Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: "Chicago, IL", "Amsterdam, Netherlands".
     *
     * Generated from protobuf field <code>optional string city = 3053931;</code>
     */
    private $city = null;
    /**
     * [Output Only] Continent for this location, which can take one of the following values: - AFRICA - ASIA_PAC - EUROPE - NORTH_AMERICA - SOUTH_AMERICA
     * Check the Continent enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string continent = 133442996;</code>
     */
    private $continent = null;
    /**
     * [Output Only] Creation timestamp in RFC3339 text format.
     *
     * Generated from protobuf field <code>optional string creation_timestamp = 30525366;</code>
     */
    private $creation_timestamp = null;
    /**
     * [Output Only] An optional description of the resource.
     *
     * Generated from protobuf field <code>optional string description = 422937596;</code>
     */
    private $description = null;
    /**
     * [Output Only] The name of the provider for this facility (e.g., EQUINIX).
     *
     * Generated from protobuf field <code>optional string facility_provider = 533303309;</code>
     */
    private $facility_provider = null;
    /**
     * [Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1).
     *
     * Generated from protobuf field <code>optional string facility_provider_facility_id = 87269125;</code>
     */
    private $facility_provider_facility_id = 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>
     */
    private $id = null;
    /**
     * [Output Only] Type of the resource. Always compute#interconnectLocation for interconnect locations.
     *
     * Generated from protobuf field <code>optional string kind = 3292052;</code>
     */
    private $kind = null;
    /**
     * [Output Only] Name of the resource.
     *
     * Generated from protobuf field <code>optional string name = 3373707;</code>
     */
    private $name = null;
    /**
     * [Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb).
     *
     * Generated from protobuf field <code>optional string peeringdb_facility_id = 536567094;</code>
     */
    private $peeringdb_facility_id = null;
    /**
     * [Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.InterconnectLocationRegionInfo region_infos = 312194170;</code>
     */
    private $region_infos;
    /**
     * [Output Only] Server-defined URL for the resource.
     *
     * Generated from protobuf field <code>optional string self_link = 456214797;</code>
     */
    private $self_link = null;
    /**
     * [Output Only] The status of this InterconnectLocation, which can take one of the following values: - CLOSED: The InterconnectLocation is closed and is unavailable for provisioning new Interconnects. - AVAILABLE: The InterconnectLocation is available for provisioning new Interconnects.
     * Check the Status enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string status = 181260274;</code>
     */
    private $status = null;
    /**
     * [Output Only] Set to true for locations that support physical zone separation. Defaults to false if the field is not present.
     *
     * Generated from protobuf field <code>optional bool supports_pzs = 83983214;</code>
     */
    private $supports_pzs = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $address
     *           [Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character.
     *     @type string $availability_zone
     *           [Output Only] Availability zone for this InterconnectLocation. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: "zone1" or "zone2".
     *     @type string $city
     *           [Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: "Chicago, IL", "Amsterdam, Netherlands".
     *     @type string $continent
     *           [Output Only] Continent for this location, which can take one of the following values: - AFRICA - ASIA_PAC - EUROPE - NORTH_AMERICA - SOUTH_AMERICA
     *           Check the Continent enum for the list of possible values.
     *     @type string $creation_timestamp
     *           [Output Only] Creation timestamp in RFC3339 text format.
     *     @type string $description
     *           [Output Only] An optional description of the resource.
     *     @type string $facility_provider
     *           [Output Only] The name of the provider for this facility (e.g., EQUINIX).
     *     @type string $facility_provider_facility_id
     *           [Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1).
     *     @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#interconnectLocation for interconnect locations.
     *     @type string $name
     *           [Output Only] Name of the resource.
     *     @type string $peeringdb_facility_id
     *           [Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb).
     *     @type array<\Google\Cloud\Compute\V1\InterconnectLocationRegionInfo>|\Google\Protobuf\Internal\RepeatedField $region_infos
     *           [Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.
     *     @type string $self_link
     *           [Output Only] Server-defined URL for the resource.
     *     @type string $status
     *           [Output Only] The status of this InterconnectLocation, which can take one of the following values: - CLOSED: The InterconnectLocation is closed and is unavailable for provisioning new Interconnects. - AVAILABLE: The InterconnectLocation is available for provisioning new Interconnects.
     *           Check the Status enum for the list of possible values.
     *     @type bool $supports_pzs
     *           [Output Only] Set to true for locations that support physical zone separation. Defaults to false if the field is not present.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Compute\V1\Compute::initOnce();
        parent::__construct($data);
    }

    /**
     * [Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character.
     *
     * Generated from protobuf field <code>optional string address = 462920692;</code>
     * @return string
     */
    public function getAddress()
    {
        return isset($this->address) ? $this->address : '';
    }

    public function hasAddress()
    {
        return isset($this->address);
    }

    public function clearAddress()
    {
        unset($this->address);
    }

    /**
     * [Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character.
     *
     * Generated from protobuf field <code>optional string address = 462920692;</code>
     * @param string $var
     * @return $this
     */
    public function setAddress($var)
    {
        GPBUtil::checkString($var, True);
        $this->address = $var;

        return $this;
    }

    /**
     * [Output Only] Availability zone for this InterconnectLocation. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: "zone1" or "zone2".
     *
     * Generated from protobuf field <code>optional string availability_zone = 158459920;</code>
     * @return string
     */
    public function getAvailabilityZone()
    {
        return isset($this->availability_zone) ? $this->availability_zone : '';
    }

    public function hasAvailabilityZone()
    {
        return isset($this->availability_zone);
    }

    public function clearAvailabilityZone()
    {
        unset($this->availability_zone);
    }

    /**
     * [Output Only] Availability zone for this InterconnectLocation. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: "zone1" or "zone2".
     *
     * Generated from protobuf field <code>optional string availability_zone = 158459920;</code>
     * @param string $var
     * @return $this
     */
    public function setAvailabilityZone($var)
    {
        GPBUtil::checkString($var, True);
        $this->availability_zone = $var;

        return $this;
    }

    /**
     * [Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: "Chicago, IL", "Amsterdam, Netherlands".
     *
     * Generated from protobuf field <code>optional string city = 3053931;</code>
     * @return string
     */
    public function getCity()
    {
        return isset($this->city) ? $this->city : '';
    }

    public function hasCity()
    {
        return isset($this->city);
    }

    public function clearCity()
    {
        unset($this->city);
    }

    /**
     * [Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: "Chicago, IL", "Amsterdam, Netherlands".
     *
     * Generated from protobuf field <code>optional string city = 3053931;</code>
     * @param string $var
     * @return $this
     */
    public function setCity($var)
    {
        GPBUtil::checkString($var, True);
        $this->city = $var;

        return $this;
    }

    /**
     * [Output Only] Continent for this location, which can take one of the following values: - AFRICA - ASIA_PAC - EUROPE - NORTH_AMERICA - SOUTH_AMERICA
     * Check the Continent enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string continent = 133442996;</code>
     * @return string
     */
    public function getContinent()
    {
        return isset($this->continent) ? $this->continent : '';
    }

    public function hasContinent()
    {
        return isset($this->continent);
    }

    public function clearContinent()
    {
        unset($this->continent);
    }

    /**
     * [Output Only] Continent for this location, which can take one of the following values: - AFRICA - ASIA_PAC - EUROPE - NORTH_AMERICA - SOUTH_AMERICA
     * Check the Continent enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string continent = 133442996;</code>
     * @param string $var
     * @return $this
     */
    public function setContinent($var)
    {
        GPBUtil::checkString($var, True);
        $this->continent = $var;

        return $this;
    }

    /**
     * [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] An optional description of the 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 the 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 name of the provider for this facility (e.g., EQUINIX).
     *
     * Generated from protobuf field <code>optional string facility_provider = 533303309;</code>
     * @return string
     */
    public function getFacilityProvider()
    {
        return isset($this->facility_provider) ? $this->facility_provider : '';
    }

    public function hasFacilityProvider()
    {
        return isset($this->facility_provider);
    }

    public function clearFacilityProvider()
    {
        unset($this->facility_provider);
    }

    /**
     * [Output Only] The name of the provider for this facility (e.g., EQUINIX).
     *
     * Generated from protobuf field <code>optional string facility_provider = 533303309;</code>
     * @param string $var
     * @return $this
     */
    public function setFacilityProvider($var)
    {
        GPBUtil::checkString($var, True);
        $this->facility_provider = $var;

        return $this;
    }

    /**
     * [Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1).
     *
     * Generated from protobuf field <code>optional string facility_provider_facility_id = 87269125;</code>
     * @return string
     */
    public function getFacilityProviderFacilityId()
    {
        return isset($this->facility_provider_facility_id) ? $this->facility_provider_facility_id : '';
    }

    public function hasFacilityProviderFacilityId()
    {
        return isset($this->facility_provider_facility_id);
    }

    public function clearFacilityProviderFacilityId()
    {
        unset($this->facility_provider_facility_id);
    }

    /**
     * [Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1).
     *
     * Generated from protobuf field <code>optional string facility_provider_facility_id = 87269125;</code>
     * @param string $var
     * @return $this
     */
    public function setFacilityProviderFacilityId($var)
    {
        GPBUtil::checkString($var, True);
        $this->facility_provider_facility_id = $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#interconnectLocation for interconnect locations.
     *
     * 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#interconnectLocation for interconnect locations.
     *
     * 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] 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] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb).
     *
     * Generated from protobuf field <code>optional string peeringdb_facility_id = 536567094;</code>
     * @return string
     */
    public function getPeeringdbFacilityId()
    {
        return isset($this->peeringdb_facility_id) ? $this->peeringdb_facility_id : '';
    }

    public function hasPeeringdbFacilityId()
    {
        return isset($this->peeringdb_facility_id);
    }

    public function clearPeeringdbFacilityId()
    {
        unset($this->peeringdb_facility_id);
    }

    /**
     * [Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb).
     *
     * Generated from protobuf field <code>optional string peeringdb_facility_id = 536567094;</code>
     * @param string $var
     * @return $this
     */
    public function setPeeringdbFacilityId($var)
    {
        GPBUtil::checkString($var, True);
        $this->peeringdb_facility_id = $var;

        return $this;
    }

    /**
     * [Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.InterconnectLocationRegionInfo region_infos = 312194170;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getRegionInfos()
    {
        return $this->region_infos;
    }

    /**
     * [Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.InterconnectLocationRegionInfo region_infos = 312194170;</code>
     * @param array<\Google\Cloud\Compute\V1\InterconnectLocationRegionInfo>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setRegionInfos($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Compute\V1\InterconnectLocationRegionInfo::class);
        $this->region_infos = $arr;

        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] The status of this InterconnectLocation, which can take one of the following values: - CLOSED: The InterconnectLocation is closed and is unavailable for provisioning new Interconnects. - AVAILABLE: The InterconnectLocation is available for provisioning new Interconnects.
     * Check the Status enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string status = 181260274;</code>
     * @return string
     */
    public function getStatus()
    {
        return isset($this->status) ? $this->status : '';
    }

    public function hasStatus()
    {
        return isset($this->status);
    }

    public function clearStatus()
    {
        unset($this->status);
    }

    /**
     * [Output Only] The status of this InterconnectLocation, which can take one of the following values: - CLOSED: The InterconnectLocation is closed and is unavailable for provisioning new Interconnects. - AVAILABLE: The InterconnectLocation is available for provisioning new Interconnects.
     * Check the Status enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string status = 181260274;</code>
     * @param string $var
     * @return $this
     */
    public function setStatus($var)
    {
        GPBUtil::checkString($var, True);
        $this->status = $var;

        return $this;
    }

    /**
     * [Output Only] Set to true for locations that support physical zone separation. Defaults to false if the field is not present.
     *
     * Generated from protobuf field <code>optional bool supports_pzs = 83983214;</code>
     * @return bool
     */
    public function getSupportsPzs()
    {
        return isset($this->supports_pzs) ? $this->supports_pzs : false;
    }

    public function hasSupportsPzs()
    {
        return isset($this->supports_pzs);
    }

    public function clearSupportsPzs()
    {
        unset($this->supports_pzs);
    }

    /**
     * [Output Only] Set to true for locations that support physical zone separation. Defaults to false if the field is not present.
     *
     * Generated from protobuf field <code>optional bool supports_pzs = 83983214;</code>
     * @param bool $var
     * @return $this
     */
    public function setSupportsPzs($var)
    {
        GPBUtil::checkBool($var);
        $this->supports_pzs = $var;

        return $this;
    }

}

