# 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
        # ListSnapshotsRequest lists snapshots.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The volume for which to retrieve snapshot information,
        #     in the format
        #     `projects/{project_id}/locations/{location}/volumes/{volume_id}`.
        # @!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 ListSnapshotsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # ListSnapshotsResponse is the result of ListSnapshotsRequest.
        # @!attribute [rw] snapshots
        #   @return [::Array<::Google::Cloud::NetApp::V1::Snapshot>]
        #     A list of snapshots in the project for the specified volume.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     The token you can use to retrieve the next page of results. Not returned
        #     if there are no more results in the list.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListSnapshotsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # GetSnapshotRequest gets the state of a snapshot.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The snapshot resource name, in the format
        #     `projects/{project_id}/locations/{location}/volumes/{volume_id}/snapshots/{snapshot_id}`
        class GetSnapshotRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # CreateSnapshotRequest creates a snapshot.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The NetApp volume to create the snapshots of, in the format
        #     `projects/{project_id}/locations/{location}/volumes/{volume_id}`
        # @!attribute [rw] snapshot
        #   @return [::Google::Cloud::NetApp::V1::Snapshot]
        #     Required. A snapshot resource
        # @!attribute [rw] snapshot_id
        #   @return [::String]
        #     Required. ID of the snapshot to create.
        #     This value must start with a lowercase letter followed by up to 62
        #     lowercase letters, numbers, or hyphens, and cannot end with a hyphen.
        class CreateSnapshotRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # DeleteSnapshotRequest deletes a snapshot.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The snapshot resource name, in the format
        #     `projects/*/locations/*/volumes/*/snapshots/{snapshot_id}`
        class DeleteSnapshotRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # UpdateSnapshotRequest updates description and/or labels for a snapshot.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Mask of fields to update.  At least one path must be supplied in
        #     this field.
        # @!attribute [rw] snapshot
        #   @return [::Google::Cloud::NetApp::V1::Snapshot]
        #     Required. A snapshot resource
        class UpdateSnapshotRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [r] name
        #   @return [::String]
        #     Output only. The resource name of the snapshot.
        #     Format:
        #     `projects/{project_id}/locations/{location}/volumes/{volume_id}/snapshots/{snapshot_id}`.
        # @!attribute [r] state
        #   @return [::Google::Cloud::NetApp::V1::Snapshot::State]
        #     Output only. The snapshot state.
        # @!attribute [r] state_details
        #   @return [::String]
        #     Output only. State details of the storage pool
        # @!attribute [rw] description
        #   @return [::String]
        #     A description of the snapshot with 2048 characters or less.
        #     Requests with longer descriptions will be rejected.
        # @!attribute [r] used_bytes
        #   @return [::Float]
        #     Output only. Current storage usage for the snapshot in bytes.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the snapshot was created.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Resource labels to represent user provided metadata.
        class Snapshot
          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 Snapshot States
          module State
            # Unspecified Snapshot State
            STATE_UNSPECIFIED = 0

            # Snapshot State is Ready
            READY = 1

            # Snapshot State is Creating
            CREATING = 2

            # Snapshot State is Deleting
            DELETING = 3

            # Snapshot State is Updating
            UPDATING = 4

            # Snapshot State is Disabled
            DISABLED = 5

            # Snapshot State is Error
            ERROR = 6
          end
        end
      end
    end
  end
end