# frozen_string_literal: true

# Copyright 2024 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 Parallelstore
      module V1beta
        # A Parallelstore instance.
        # @!attribute [rw] name
        #   @return [::String]
        #     Identifier. The resource name of the instance, in the format
        #     `projects/{project}/locations/{location}/instances/{instance_id}`
        # @!attribute [rw] description
        #   @return [::String]
        #     Optional. The description of the instance. 2048 characters or less.
        # @!attribute [r] state
        #   @return [::Google::Cloud::Parallelstore::V1beta::Instance::State]
        #     Output only. The instance state.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the instance was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the instance was updated.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional. Cloud Labels are a flexible and lightweight mechanism for
        #     organizing cloud resources into groups that reflect a customer's
        #     organizational needs and deployment strategies. Cloud Labels can be used to
        #     filter collections of resources. They can be used to control how resource
        #     metrics are aggregated. And they can be used as arguments to policy
        #     management rules (e.g. route, firewall, load balancing, etc.).
        #
        #      * Label keys must be between 1 and 63 characters long and must conform to
        #        the following regular expression: `[a-z][a-z0-9_-]{0,62}`.
        #      * Label values must be between 0 and 63 characters long and must conform
        #        to the regular expression `[a-z0-9_-]{0,63}`.
        #      * No more than 64 labels can be associated with a given resource.
        #
        #     See https://goo.gl/xmQnxf for more information on and examples of labels.
        #
        #     If you plan to use labels in your own code, please note that additional
        #     characters may be allowed in the future. Therefore, you are advised to use
        #     an internal label representation, such as JSON, which doesn't rely upon
        #     specific characters being disallowed.  For example, representing labels
        #     as the string:  name + "_" + value  would prove problematic if we were to
        #     allow "_" in a future release.
        # @!attribute [rw] capacity_gib
        #   @return [::Integer]
        #     Required. Immutable. Storage capacity of Parallelstore instance in
        #     Gibibytes (GiB).
        # @!attribute [r] daos_version
        #   @return [::String]
        #     Output only. The version of DAOS software running in the instance
        # @!attribute [r] access_points
        #   @return [::Array<::String>]
        #     Output only. List of access_points.
        #     Contains a list of IPv4 addresses used for client side configuration.
        # @!attribute [rw] network
        #   @return [::String]
        #     Optional. Immutable. The name of the Google Compute Engine
        #     [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the
        #     instance is connected.
        # @!attribute [rw] reserved_ip_range
        #   @return [::String]
        #     Optional. Immutable. Contains the id of the allocated IP address range
        #     associated with the private service access connection for example,
        #     "test-default" associated with IP range 10.0.0.0/29. If no range id is
        #     provided all ranges will be considered.
        # @!attribute [r] effective_reserved_ip_range
        #   @return [::String]
        #     Output only. Immutable. Contains the id of the allocated IP address range
        #     associated with the private service access connection for example,
        #     "test-default" associated with IP range 10.0.0.0/29. This field is
        #     populated by the service and and contains the value currently used by the
        #     service.
        # @!attribute [rw] file_stripe_level
        #   @return [::Google::Cloud::Parallelstore::V1beta::FileStripeLevel]
        #     Optional. Stripe level for files.
        #     MIN better suited for small size files.
        #     MAX higher throughput performance for larger files.
        # @!attribute [rw] directory_stripe_level
        #   @return [::Google::Cloud::Parallelstore::V1beta::DirectoryStripeLevel]
        #     Optional. Stripe level for directories.
        #     MIN when directory has a small number of files.
        #     MAX when directory has a large number of files.
        class Instance
          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

          # Represents the different states of a Parallelstore instance.
          module State
            # Not set.
            STATE_UNSPECIFIED = 0

            # The instance is being created.
            CREATING = 1

            # The instance is available for use.
            ACTIVE = 2

            # The instance is being deleted.
            DELETING = 3

            # The instance is not usable.
            FAILED = 4
          end
        end

        # Message for requesting list of Instances
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The project and location for which to retrieve instance
        #     information, in the format `projects/{project_id}/locations/{location}`.
        #     For Parallelstore locations map to Google Cloud zones, for example
        #     **us-central1-a**.
        #     To retrieve instance information for all locations, use "-" for the
        #     `{location}` value.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. Requested page size. Server may return fewer items than
        #     requested. If unspecified, server will pick an appropriate default.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. A token identifying a page of results the server should return.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. Filtering results
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Hint for how to order the results
        class ListInstancesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Message for response to listing Instances
        # @!attribute [rw] instances
        #   @return [::Array<::Google::Cloud::Parallelstore::V1beta::Instance>]
        #     The list of Parallelstore Instances
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     A token identifying a page of results the server should return.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListInstancesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Request to get an instance's details.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The instance resource name, in the format
        #     `projects/{project_id}/locations/{location}/instances/{instance_id}`.
        class GetInstanceRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Request for
        # {::Google::Cloud::Parallelstore::V1beta::Parallelstore::Client#create_instance CreateInstance}
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The instance's project and location, in the format
        #     `projects/{project}/locations/{location}`.
        #     Locations map to Google Cloud zones, for example **us-west1-b**.
        # @!attribute [rw] instance_id
        #   @return [::String]
        #     Required. The logical name of the Parallelstore instance in the user
        #     project with the following restrictions:
        #
        #     * Must contain only lowercase letters, numbers, and hyphens.
        #     * Must start with a letter.
        #     * Must be between 1-63 characters.
        #     * Must end with a number or a letter.
        #     * Must be unique within the customer project / location
        # @!attribute [rw] instance
        #   @return [::Google::Cloud::Parallelstore::V1beta::Instance]
        #     Required. The instance to create.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. An optional request ID to identify requests. Specify a unique
        #     request ID so that if you must retry your request, the server will know to
        #     ignore the request if it has already been completed. The server will
        #     guarantee that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and t
        #     he request times out. If you make the request again with the same request
        #     ID, the server can check if original operation with the same request ID
        #     was received, and if so, will ignore the second request. This prevents
        #     clients from accidentally 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 CreateInstanceRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Message for updating a Instance
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Mask of fields to update .Field mask is used to specify the
        #     fields to be overwritten in the Instance resource by the update. At least
        #     one path must be supplied in this field. The fields specified in the
        #     update_mask are relative to the resource, not the full request.
        # @!attribute [rw] instance
        #   @return [::Google::Cloud::Parallelstore::V1beta::Instance]
        #     Required. The instance to update
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. An optional request ID to identify requests. Specify a unique
        #     request ID so that if you must retry your request, the server will know to
        #     ignore the request if it has already been completed. The server will
        #     guarantee that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and t
        #     he request times out. If you make the request again with the same request
        #     ID, the server can check if original operation with the same request ID
        #     was received, and if so, will ignore the second request. This prevents
        #     clients from accidentally 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 UpdateInstanceRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Message for deleting a Instance
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the resource
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. An optional request ID to identify requests. Specify a unique
        #     request ID so that if you must retry your request, the server will know to
        #     ignore the request if it has already been completed. The server will
        #     guarantee that for at least 60 minutes after the first request.
        #
        #     For example, consider a situation where you make an initial request and t
        #     he request times out. If you make the request again with the same request
        #     ID, the server can check if original operation with the same request ID
        #     was received, and if so, will ignore the second request. This prevents
        #     clients from accidentally 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 DeleteInstanceRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Represents the metadata of the long-running operation.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation was created.
        # @!attribute [r] end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation finished running.
        # @!attribute [r] target
        #   @return [::String]
        #     Output only. Server-defined resource path for the target of the operation.
        # @!attribute [r] verb
        #   @return [::String]
        #     Output only. Name of the verb executed by the operation.
        # @!attribute [r] status_message
        #   @return [::String]
        #     Output only. Human-readable status of the operation, if any.
        # @!attribute [r] requested_cancellation
        #   @return [::Boolean]
        #     Output only. Identifies whether the user has requested cancellation
        #     of the operation. Operations that have been cancelled successfully
        #     have [Operation.error][] value with a
        #     {::Google::Rpc::Status#code google.rpc.Status.code} of 1, corresponding to
        #     `Code.CANCELLED`.
        # @!attribute [r] api_version
        #   @return [::String]
        #     Output only. API version used to start the operation.
        class OperationMetadata
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Google Cloud Storage as a source.
        # @!attribute [rw] uri
        #   @return [::String]
        #     Required. URI to a Cloud Storage object in format:
        #     'gs://<bucket_name>/<path_inside_bucket>'.
        class SourceGcsBucket
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Google Cloud Storage as a destination.
        # @!attribute [rw] uri
        #   @return [::String]
        #     Required. URI to a Cloud Storage object in format:
        #     'gs://<bucket_name>/<path_inside_bucket>'.
        class DestinationGcsBucket
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Pa as a source.
        # @!attribute [rw] path
        #   @return [::String]
        #     Optional. Root directory path to the Paralellstore filesystem, starting
        #     with '/'. Defaults to '/' if unset.
        class SourceParallelstore
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Parallelstore as a destination.
        # @!attribute [rw] path
        #   @return [::String]
        #     Optional. Root directory path to the Paralellstore filesystem, starting
        #     with '/'. Defaults to '/' if unset.
        class DestinationParallelstore
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Message representing the request importing data from parallelstore to Cloud
        # Storage.
        # @!attribute [rw] source_gcs_bucket
        #   @return [::Google::Cloud::Parallelstore::V1beta::SourceGcsBucket]
        #     Cloud Storage source.
        # @!attribute [rw] destination_parallelstore
        #   @return [::Google::Cloud::Parallelstore::V1beta::DestinationParallelstore]
        #     Parallelstore destination.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the resource.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. An optional request ID to identify requests. Specify a unique
        #     request ID so that if you must retry your request, the server will know to
        #     ignore the request if it has already been completed. The server will
        #     guarantee that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and t
        #     he request times out. If you make the request again with the same request
        #     ID, the server can check if original operation with the same request ID
        #     was received, and if so, will ignore the second request. This prevents
        #     clients from accidentally 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).
        # @!attribute [rw] service_account
        #   @return [::String]
        #     Optional. User-specified Service Account (SA) credentials to be used when
        #     performing the transfer.
        #     Format: `projects/{project_id}/serviceAccounts/{service_account}`
        #     If unspecified, the Parallelstore service agent is used:
        #     service-<PROJECT_NUMBER>@gcp-sa-parallelstore.iam.gserviceaccount.com)
        class ImportDataRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Message representing the request exporting data from Cloud Storage to
        # parallelstore.
        # @!attribute [rw] source_parallelstore
        #   @return [::Google::Cloud::Parallelstore::V1beta::SourceParallelstore]
        #     Parallelstore source.
        # @!attribute [rw] destination_gcs_bucket
        #   @return [::Google::Cloud::Parallelstore::V1beta::DestinationGcsBucket]
        #     Cloud Storage destination.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the resource.
        # @!attribute [rw] request_id
        #   @return [::String]
        #     Optional. An optional request ID to identify requests. Specify a unique
        #     request ID so that if you must retry your request, the server will know to
        #     ignore the request if it has already been completed. The server will
        #     guarantee that for at least 60 minutes since the first request.
        #
        #     For example, consider a situation where you make an initial request and t
        #     he request times out. If you make the request again with the same request
        #     ID, the server can check if original operation with the same request ID
        #     was received, and if so, will ignore the second request. This prevents
        #     clients from accidentally 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).
        # @!attribute [rw] service_account
        #   @return [::String]
        #     Optional. User-specified Service Account (SA) credentials to be used when
        #     performing the transfer.
        #     Format: `projects/{project_id}/serviceAccounts/{service_account}`
        #     If unspecified, the Parallelstore service agent is used:
        #     service-<PROJECT_NUMBER>@gcp-sa-parallelstore.iam.gserviceaccount.com)
        class ExportDataRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ImportDataResponse is the response returned from ImportData rpc.
        class ImportDataResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ImportDataMetadata contains import data operation metadata
        # @!attribute [rw] operation_metadata
        #   @return [::Google::Cloud::Parallelstore::V1beta::TransferOperationMetadata]
        #     Contains the data transfer operation metadata.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation was created.
        # @!attribute [r] end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation finished running.
        # @!attribute [r] target
        #   @return [::String]
        #     Output only. Server-defined resource path for the target of the operation.
        # @!attribute [r] verb
        #   @return [::String]
        #     Output only. Name of the verb executed by the operation.
        # @!attribute [r] status_message
        #   @return [::String]
        #     Output only. Human-readable status of the operation, if any.
        # @!attribute [r] requested_cancellation
        #   @return [::Boolean]
        #     Output only. Identifies whether the user has requested cancellation
        #     of the operation. Operations that have successfully been cancelled
        #     have [Operation.error][] value with a
        #     {::Google::Rpc::Status#code google.rpc.Status.code} of 1, corresponding to
        #     `Code.CANCELLED`.
        # @!attribute [r] api_version
        #   @return [::String]
        #     Output only. API version used to start the operation.
        class ImportDataMetadata
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ExportDataResponse is the response returned from ExportData rpc
        class ExportDataResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ExportDataMetadata contains export data operation metadata
        # @!attribute [rw] operation_metadata
        #   @return [::Google::Cloud::Parallelstore::V1beta::TransferOperationMetadata]
        #     Contains the data transfer operation metadata.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation was created.
        # @!attribute [r] end_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time the operation finished running.
        # @!attribute [r] target
        #   @return [::String]
        #     Output only. Server-defined resource path for the target of the operation.
        # @!attribute [r] verb
        #   @return [::String]
        #     Output only. Name of the verb executed by the operation.
        # @!attribute [r] status_message
        #   @return [::String]
        #     Output only. Human-readable status of the operation, if any.
        # @!attribute [r] requested_cancellation
        #   @return [::Boolean]
        #     Output only. Identifies whether the user has requested cancellation
        #     of the operation. Operations that have successfully been cancelled
        #     have [Operation.error][] value with a
        #     {::Google::Rpc::Status#code google.rpc.Status.code} of 1, corresponding to
        #     `Code.CANCELLED`.
        # @!attribute [r] api_version
        #   @return [::String]
        #     Output only. API version used to start the operation.
        class ExportDataMetadata
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Represents the metadata of the long-running operation.
        # @!attribute [r] source_parallelstore
        #   @return [::Google::Cloud::Parallelstore::V1beta::SourceParallelstore]
        #     Output only. Parallelstore source.
        # @!attribute [r] source_gcs_bucket
        #   @return [::Google::Cloud::Parallelstore::V1beta::SourceGcsBucket]
        #     Output only. Cloud Storage source.
        # @!attribute [r] destination_gcs_bucket
        #   @return [::Google::Cloud::Parallelstore::V1beta::DestinationGcsBucket]
        #     Output only. Cloud Storage destination.
        # @!attribute [r] destination_parallelstore
        #   @return [::Google::Cloud::Parallelstore::V1beta::DestinationParallelstore]
        #     Output only. Parallelstore destination.
        # @!attribute [r] counters
        #   @return [::Google::Cloud::Parallelstore::V1beta::TransferCounters]
        #     Output only. Information about the progress of the transfer operation.
        # @!attribute [r] transfer_type
        #   @return [::Google::Cloud::Parallelstore::V1beta::TransferType]
        #     Output only. The type of transfer occurring.
        class TransferOperationMetadata
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A collection of counters that report the progress of a transfer operation.
        # @!attribute [rw] objects_found
        #   @return [::Integer]
        #     Objects found in the data source that are scheduled to be transferred,
        #     excluding any that are filtered based on object conditions or skipped due
        #     to sync.
        # @!attribute [rw] bytes_found
        #   @return [::Integer]
        #     Bytes found in the data source that are scheduled to be transferred,
        #     excluding any that are filtered based on object conditions or skipped due
        #     to sync.
        # @!attribute [rw] objects_skipped
        #   @return [::Integer]
        #     Objects in the data source that are not transferred because they already
        #     exist in the data destination.
        # @!attribute [rw] bytes_skipped
        #   @return [::Integer]
        #     Bytes in the data source that are not transferred because they already
        #     exist in the data destination.
        # @!attribute [rw] objects_copied
        #   @return [::Integer]
        #     Objects that are copied to the data destination.
        # @!attribute [rw] bytes_copied
        #   @return [::Integer]
        #     Bytes that are copied to the data destination.
        class TransferCounters
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Type of transfer that occurred.
        module TransferType
          # Zero is an illegal value.
          TRANSFER_TYPE_UNSPECIFIED = 0

          # Imports to Parallelstore.
          IMPORT = 1

          # Exports from Parallelstore.
          EXPORT = 2
        end

        # Represents the striping options for files.
        module FileStripeLevel
          # Default file striping
          FILE_STRIPE_LEVEL_UNSPECIFIED = 0

          # Minimum file striping
          FILE_STRIPE_LEVEL_MIN = 1

          # Medium file striping
          FILE_STRIPE_LEVEL_BALANCED = 2

          # Maximum file striping
          FILE_STRIPE_LEVEL_MAX = 3
        end

        # Represents the striping options for directories.
        module DirectoryStripeLevel
          # Default directory striping
          DIRECTORY_STRIPE_LEVEL_UNSPECIFIED = 0

          # Minimum directory striping
          DIRECTORY_STRIPE_LEVEL_MIN = 1

          # Medium directory striping
          DIRECTORY_STRIPE_LEVEL_BALANCED = 2

          # Maximum directory striping
          DIRECTORY_STRIPE_LEVEL_MAX = 3
        end
      end
    end
  end
end