# frozen_string_literal: true

# Copyright 2023 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 NetApp
      module V1
        # GetStoragePoolRequest gets a Storage Pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the storage pool
        class GetStoragePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListStoragePoolsRequest lists Storage Pools.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. Parent value
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     The maximum number of items to return.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     The next_page_token value to use if there are additional
        #     results to retrieve for this list request.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Sort results. Supported values are "name", "name desc" or "" (unsorted).
        # @!attribute [rw] filter
        #   @return [::String]
        #     List filter.
        class ListStoragePoolsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListStoragePoolsResponse is the response to a ListStoragePoolsRequest.
        # @!attribute [rw] storage_pools
        #   @return [::Array<::Google::Cloud::NetApp::V1::StoragePool>]
        #     The list of StoragePools
        # @!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 ListStoragePoolsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CreateStoragePoolRequest creates a Storage Pool.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. Value for parent.
        # @!attribute [rw] storage_pool_id
        #   @return [::String]
        #     Required. Id of the requesting storage pool
        #     If auto-generating Id server-side, remove this field and
        #     id from the method_signature of Create RPC
        # @!attribute [rw] storage_pool
        #   @return [::Google::Cloud::NetApp::V1::StoragePool]
        #     Required. The required parameters to create a new storage pool.
        class CreateStoragePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpdateStoragePoolRequest updates a Storage Pool.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Field mask is used to specify the fields to be overwritten in the
        #     StoragePool resource by the update.
        #     The fields specified in the update_mask are relative to the resource, not
        #     the full request. A field will be overwritten if it is in the mask. If the
        #     user does not provide a mask then all fields will be overwritten.
        # @!attribute [rw] storage_pool
        #   @return [::Google::Cloud::NetApp::V1::StoragePool]
        #     Required. The pool being updated
        class UpdateStoragePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # DeleteStoragePoolRequest deletes a Storage Pool.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the storage pool
        class DeleteStoragePoolRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # StoragePool is a container for volumes with a service level and capacity.
        # Volumes can be created in a pool of sufficient available capacity.
        # StoragePool capacity is what you are billed for.
        # @!attribute [rw] name
        #   @return [::String]
        #     Identifier. Name of the storage pool
        # @!attribute [rw] service_level
        #   @return [::Google::Cloud::NetApp::V1::ServiceLevel]
        #     Required. Service level of the storage pool
        # @!attribute [rw] capacity_gib
        #   @return [::Integer]
        #     Required. Capacity in GIB of the pool
        # @!attribute [r] volume_capacity_gib
        #   @return [::Integer]
        #     Output only. Allocated size of all volumes in GIB in the storage pool
        # @!attribute [r] volume_count
        #   @return [::Integer]
        #     Output only. Volume count of the storage pool
        # @!attribute [r] state
        #   @return [::Google::Cloud::NetApp::V1::StoragePool::State]
        #     Output only. State of the storage pool
        # @!attribute [r] state_details
        #   @return [::String]
        #     Output only. State details of the storage pool
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. Create time of the storage pool
        # @!attribute [rw] description
        #   @return [::String]
        #     Description of the storage pool
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Labels as key value pairs
        # @!attribute [rw] network
        #   @return [::String]
        #     Required. VPC Network name.
        #     Format: projects/\\{project}/global/networks/\\{network}
        # @!attribute [rw] active_directory
        #   @return [::String]
        #     Specifies the Active Directory to be used for creating a SMB volume.
        # @!attribute [rw] kms_config
        #   @return [::String]
        #     Specifies the KMS config to be used for volume encryption.
        # @!attribute [rw] ldap_enabled
        #   @return [::Boolean]
        #     Flag indicating if the pool is NFS LDAP enabled or not.
        # @!attribute [rw] psa_range
        #   @return [::String]
        #     Name of the Private Service Access allocated range. If
        #     not provided, any available range will be chosen.
        # @!attribute [r] encryption_type
        #   @return [::Google::Cloud::NetApp::V1::EncryptionType]
        #     Output only. Specifies the current pool encryption key source.
        # @!attribute [rw] global_access_allowed
        #   @return [::Boolean]
        #     Deprecated. Used to allow SO pool to access AD or DNS server from other
        #     regions.
        class StoragePool
          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

          # The Storage Pool States
          module State
            # Unspecified Storage Pool State
            STATE_UNSPECIFIED = 0

            # Storage Pool State is Ready
            READY = 1

            # Storage Pool State is Creating
            CREATING = 2

            # Storage Pool State is Deleting
            DELETING = 3

            # Storage Pool State is Updating
            UPDATING = 4

            # Storage Pool State is Restoring
            RESTORING = 5

            # Storage Pool State is Disabled
            DISABLED = 6

            # Storage Pool State is Error
            ERROR = 7
          end
        end
      end
    end
  end
end