# frozen_string_literal: true

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module NetworkConnectivity
      module V1
        # A hub is essentially a collection of spokes. A single hub can contain spokes
        # from multiple regions. However, all of a hub's spokes must be associated with
        # resources that reside in the same VPC network.
        # @!attribute [rw] name
        #   @return [::String]
        #     Immutable. The name of the hub. Hub names must be unique. They use the
        #     following form:
        #         `projects/{project_number}/locations/global/hubs/{hub_id}`
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the hub was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the hub was last updated.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional labels in key:value format. For more information about labels, see
        #     [Requirements for
        #     labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).
        # @!attribute [rw] description
        #   @return [::String]
        #     An optional description of the hub.
        # @!attribute [r] unique_id
        #   @return [::String]
        #     Output only. The Google-generated UUID for the hub. This value is unique across all hub
        #     resources. If a hub is deleted and another with the same name is created,
        #     the new hub is assigned a different unique_id.
        # @!attribute [r] state
        #   @return [::Google::Cloud::NetworkConnectivity::V1::State]
        #     Output only. The current lifecycle state of this hub.
        # @!attribute [rw] routing_vpcs
        #   @return [::Array<::Google::Cloud::NetworkConnectivity::V1::RoutingVPC>]
        #     The VPC network associated with this hub's spokes. All of the VPN tunnels,
        #     VLAN attachments, and router appliance instances referenced by this hub's
        #     spokes must belong to this VPC network.
        #
        #     This field is read-only. Network Connectivity Center automatically
        #     populates it based on the set of spokes attached to the hub.
        class Hub
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # RoutingsVPC contains information about a VPC network that is associated with
        # a hub's spokes.
        # @!attribute [rw] uri
        #   @return [::String]
        #     The URI of a VPC network.
        class RoutingVPC
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A spoke represents a connection between your Google Cloud network resources
        # and a non-Google-Cloud network.
        #
        # When you create a spoke, you associate it with a hub. You must also identify
        # a value for exactly one of the following fields:
        #
        # * linked_vpn_tunnels
        # * linked_interconnect_attachments
        # * linked_router_appliance_instances
        # @!attribute [rw] name
        #   @return [::String]
        #     Immutable. The name of the spoke. Spoke names must be unique. They use the
        #     following form:
        #         `projects/{project_number}/locations/{region}/spokes/{spoke_id}`
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the spoke was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the spoke was last updated.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional labels in key:value format. For more information about labels, see
        #     [Requirements for
        #     labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements).
        # @!attribute [rw] description
        #   @return [::String]
        #     An optional description of the spoke.
        # @!attribute [rw] hub
        #   @return [::String]
        #     Immutable. The URI of the hub that this spoke is attached to.
        # @!attribute [rw] linked_vpn_tunnels
        #   @return [::Google::Cloud::NetworkConnectivity::V1::LinkedVpnTunnels]
        #     VPN tunnels that are associated with the spoke.
        # @!attribute [rw] linked_interconnect_attachments
        #   @return [::Google::Cloud::NetworkConnectivity::V1::LinkedInterconnectAttachments]
        #     VLAN attachments that are associated with the spoke.
        # @!attribute [rw] linked_router_appliance_instances
        #   @return [::Google::Cloud::NetworkConnectivity::V1::LinkedRouterApplianceInstances]
        #     Router appliance instances that are associated with the spoke.
        # @!attribute [r] unique_id
        #   @return [::String]
        #     Output only. The Google-generated UUID for the spoke. This value is unique across all
        #     spoke resources. If a spoke is deleted and another with the same name is
        #     created, the new spoke is assigned a different unique_id.
        # @!attribute [r] state
        #   @return [::Google::Cloud::NetworkConnectivity::V1::State]
        #     Output only. The current lifecycle state of this spoke.
        class Spoke
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#list_hubs HubService.ListHubs} method.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent resource's name.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     The maximum number of results per page that should be returned.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     The page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     An expression that filters the results listed in the response.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Sort the results by a certain order.
        class ListHubsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Response for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#list_hubs HubService.ListHubs} method.
        # @!attribute [rw] hubs
        #   @return [::Array<::Google::Cloud::NetworkConnectivity::V1::Hub>]
        #     The requested hubs.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     The next pagination token in the List response. It should be used as
        #     page_token for the following request. An empty value means no more result.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListHubsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#get_hub HubService.GetHub} method.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The name of the hub resource to get.
        class GetHubRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#create_hub HubService.CreateHub} method.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent resource.
        # @!attribute [rw] hub_id
        #   @return [::String]
        #     Optional. A unique identifier for the hub.
        # @!attribute [rw] hub
        #   @return [::Google::Cloud::NetworkConnectivity::V1::Hub]
        #     Required. The initial values for a new hub.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A unique request ID (optional). If you specify this ID, you can use it
        #     in cases when you need to retry your request. When you need to retry, this
        #     ID lets the server know that it can ignore the request if it has already
        #     been completed. The server guarantees that for at least 60 minutes after
        #     the first request.
        #
        #     For example, consider a situation where you make an initial request and
        #     the request times out. If you make the request again with the same request
        #     ID, the server can check to see whether the original operation
        #     was received. If it was, the server ignores the second request. This
        #     behavior prevents clients from mistakenly creating duplicate commitments.
        #
        #     The request ID must be a valid UUID, with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        class CreateHubRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#update_hub HubService.UpdateHub} method.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Optional. In the case of an update to an existing hub, field mask is used to specify
        #     the fields to be overwritten. The fields specified in the update_mask are
        #     relative to the resource, not the full request. A field is overwritten if
        #     it is in the mask. If the user does not provide a mask, then all fields are
        #     overwritten.
        # @!attribute [rw] hub
        #   @return [::Google::Cloud::NetworkConnectivity::V1::Hub]
        #     Required. The state that the hub should be in after the update.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A unique request ID (optional). If you specify this ID, you can use it
        #     in cases when you need to retry your request. When you need to retry, this
        #     ID lets the server know that it can ignore the request if it has already
        #     been completed. The server guarantees that for at least 60 minutes after
        #     the first request.
        #
        #     For example, consider a situation where you make an initial request and
        #     the request times out. If you make the request again with the same request
        #     ID, the server can check to see whether the original operation
        #     was received. If it was, the server ignores the second request. This
        #     behavior prevents clients from mistakenly creating duplicate commitments.
        #
        #     The request ID must be a valid UUID, with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        class UpdateHubRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#delete_hub HubService.DeleteHub}.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The name of the hub to delete.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A unique request ID (optional). If you specify this ID, you can use it
        #     in cases when you need to retry your request. When you need to retry, this
        #     ID lets the server know that it can ignore the request if it has already
        #     been completed. The server guarantees that for at least 60 minutes after
        #     the first request.
        #
        #     For example, consider a situation where you make an initial request and
        #     the request times out. If you make the request again with the same request
        #     ID, the server can check to see whether the original operation
        #     was received. If it was, the server ignores the second request. This
        #     behavior prevents clients from mistakenly creating duplicate commitments.
        #
        #     The request ID must be a valid UUID, with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        class DeleteHubRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#list_spokes HubService.ListSpokes}.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent resource.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     The maximum number of results per page that should be returned.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     The page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     An expression that filters the results listed in the response.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Sort the results by a certain order.
        class ListSpokesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The response for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#list_spokes HubService.ListSpokes}.
        # @!attribute [rw] spokes
        #   @return [::Array<::Google::Cloud::NetworkConnectivity::V1::Spoke>]
        #     The requested spokes.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     The next pagination token in the List response. It should be used as
        #     page_token for the following request. An empty value means no more result.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListSpokesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#get_spoke HubService.GetSpoke}.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The name of the spoke resource.
        class GetSpokeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#create_spoke HubService.CreateSpoke}.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The parent resource.
        # @!attribute [rw] spoke_id
        #   @return [::String]
        #     Optional. Unique id for the spoke to create.
        # @!attribute [rw] spoke
        #   @return [::Google::Cloud::NetworkConnectivity::V1::Spoke]
        #     Required. The initial values for a new spoke.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A unique request ID (optional). If you specify this ID, you can use it
        #     in cases when you need to retry your request. When you need to retry, this
        #     ID lets the server know that it can ignore the request if it has already
        #     been completed. The server guarantees that for at least 60 minutes after
        #     the first request.
        #
        #     For example, consider a situation where you make an initial request and
        #     the request times out. If you make the request again with the same request
        #     ID, the server can check to see whether the original operation
        #     was received. If it was, the server ignores the second request. This
        #     behavior prevents clients from mistakenly creating duplicate commitments.
        #
        #     The request ID must be a valid UUID, with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        class CreateSpokeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#update_spoke HubService.UpdateSpoke} method.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Optional. In the case of an update to an existing spoke, field mask is used to
        #     specify the fields to be overwritten. The fields specified in the
        #     update_mask are relative to the resource, not the full request. A field is
        #     overwritten if it is in the mask. If the user does not provide a mask, then
        #     all fields are overwritten.
        # @!attribute [rw] spoke
        #   @return [::Google::Cloud::NetworkConnectivity::V1::Spoke]
        #     Required. The state that the spoke should be in after the update.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A unique request ID (optional). If you specify this ID, you can use it
        #     in cases when you need to retry your request. When you need to retry, this
        #     ID lets the server know that it can ignore the request if it has already
        #     been completed. The server guarantees that for at least 60 minutes after
        #     the first request.
        #
        #     For example, consider a situation where you make an initial request and
        #     the request times out. If you make the request again with the same request
        #     ID, the server can check to see whether the original operation
        #     was received. If it was, the server ignores the second request. This
        #     behavior prevents clients from mistakenly creating duplicate commitments.
        #
        #     The request ID must be a valid UUID, with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        class UpdateSpokeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The request for {::Google::Cloud::NetworkConnectivity::V1::HubService::Client#delete_spoke HubService.DeleteSpoke}.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The name of the spoke to delete.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. A unique request ID (optional). If you specify this ID, you can use it
        #     in cases when you need to retry your request. When you need to retry, this
        #     ID lets the server know that it can ignore the request if it has already
        #     been completed. The server guarantees that for at least 60 minutes after
        #     the first request.
        #
        #     For example, consider a situation where you make an initial request and
        #     the request times out. If you make the request again with the same request
        #     ID, the server can check to see whether the original operation
        #     was received. If it was, the server ignores the second request. This
        #     behavior prevents clients from mistakenly creating duplicate commitments.
        #
        #     The request ID must be a valid UUID, with the exception that zero UUID is
        #     not supported (00000000-0000-0000-0000-000000000000).
        class DeleteSpokeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A collection of Cloud VPN tunnel resources. These resources should be
        # redundant HA VPN tunnels that all advertise the same prefixes to Google
        # Cloud. Alternatively, in a passive/active configuration, all tunnels
        # should be capable of advertising the same prefixes.
        # @!attribute [rw] uris
        #   @return [::Array<::String>]
        #     The URIs of linked VPN tunnel resources.
        # @!attribute [rw] site_to_site_data_transfer
        #   @return [::Boolean]
        #     A value that controls whether site-to-site data transfer is enabled for
        #     these resources. This field is set to false by default, but you must set it
        #     to true. Note that data transfer is available only in supported locations.
        class LinkedVpnTunnels
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A collection of VLAN attachment resources. These resources should
        # be redundant attachments that all advertise the same prefixes to Google
        # Cloud. Alternatively, in active/passive configurations, all attachments
        # should be capable of advertising the same prefixes.
        # @!attribute [rw] uris
        #   @return [::Array<::String>]
        #     The URIs of linked interconnect attachment resources
        # @!attribute [rw] site_to_site_data_transfer
        #   @return [::Boolean]
        #     A value that controls whether site-to-site data transfer is enabled for
        #     these resources. This field is set to false by default, but you must set it
        #     to true. Note that data transfer is available only in supported locations.
        class LinkedInterconnectAttachments
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A collection of router appliance instances. If you have multiple router
        # appliance instances connected to the same site, they should all be attached
        # to the same spoke.
        # @!attribute [rw] instances
        #   @return [::Array<::Google::Cloud::NetworkConnectivity::V1::RouterApplianceInstance>]
        #     The list of router appliance instances.
        # @!attribute [rw] site_to_site_data_transfer
        #   @return [::Boolean]
        #     A value that controls whether site-to-site data transfer is enabled for
        #     these resources. This field is set to false by default, but you must set it
        #     to true. Note that data transfer is available only in supported locations.
        class LinkedRouterApplianceInstances
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A router appliance instance is a Compute Engine virtual machine (VM) instance
        # that acts as a BGP speaker. A router appliance instance is specified by the
        # URI of the VM and the internal IP address of one of the VM's network
        # interfaces.
        # @!attribute [rw] virtual_machine
        #   @return [::String]
        #     The URI of the VM.
        # @!attribute [rw] ip_address
        #   @return [::String]
        #     The IP address on the VM to use for peering.
        class RouterApplianceInstance
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # The State enum represents the lifecycle stage of a Network Connectivity
        # Center resource.
        module State
          # No state information available
          STATE_UNSPECIFIED = 0

          # The resource's create operation is in progress
          CREATING = 1

          # The resource is active
          ACTIVE = 2

          # The resource's Delete operation is in progress
          DELETING = 3
        end
      end
    end
  end
end