# frozen_string_literal: true

# Copyright 2022 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 BareMetalSolution
      module V2
        # An NFS share.
        # @!attribute [r] name
        #   @return [::String]
        #     Output only. The name of the NFS share.
        # @!attribute [r] nfs_share_id
        #   @return [::String]
        #     Output only. An identifier for the NFS share, generated by the backend.
        # @!attribute [rw] state
        #   @return [::Google::Cloud::BareMetalSolution::V2::NfsShare::State]
        #     The state of the NFS share.
        # @!attribute [rw] volume
        #   @return [::String]
        #     The volume containing the share.
        # @!attribute [rw] allowed_clients
        #   @return [::Array<::Google::Cloud::BareMetalSolution::V2::NfsShare::AllowedClient>]
        #     List of allowed access points.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Labels as key value pairs.
        class NfsShare
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Represents an 'access point' for the share.
          # @!attribute [rw] network
          #   @return [::String]
          #     The network the access point sits on.
          # @!attribute [rw] share_ip
          #   @return [::String]
          #     The IP address of the share on this network.
          # @!attribute [rw] allowed_clients_cidr
          #   @return [::String]
          #     The subnet of IP addresses permitted to access the share.
          # @!attribute [rw] mount_permissions
          #   @return [::Google::Cloud::BareMetalSolution::V2::NfsShare::MountPermissions]
          #     Mount permissions.
          # @!attribute [rw] allow_dev
          #   @return [::Boolean]
          #     Allow dev flag.  Which controls whether to allow creation of devices.
          # @!attribute [rw] allow_suid
          #   @return [::Boolean]
          #     Allow the setuid flag.
          # @!attribute [rw] no_root_squash
          #   @return [::Boolean]
          #     Disable root squashing, which is a feature of NFS.
          #     Root squash is a special mapping of the remote superuser (root) identity
          #     when using identity authentication.
          class AllowedClient
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

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

          # The possible states for this NFS share.
          module State
            # The share is in an unknown state.
            STATE_UNSPECIFIED = 0

            # The share has been provisioned.
            PROVISIONED = 1
          end

          # The possible mount permissions.
          module MountPermissions
            # Permissions were not specified.
            MOUNT_PERMISSIONS_UNSPECIFIED = 0

            # NFS share can be mount with read-only permissions.
            READ = 1

            # NFS share can be mount with read-write permissions.
            READ_WRITE = 2
          end
        end

        # Message for requesting NFS share information.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. Name of the resource.
        class GetNfsShareRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Message for requesting a list of NFS shares.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. Parent value for ListNfsSharesRequest.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Requested page size. The server might return fewer items than requested.
        #     If unspecified, server will pick an appropriate default.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     A token identifying a page of results from the server.
        # @!attribute [rw] filter
        #   @return [::String]
        #     List filter.
        class ListNfsSharesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Response message containing the list of NFS shares.
        # @!attribute [rw] nfs_shares
        #   @return [::Array<::Google::Cloud::BareMetalSolution::V2::NfsShare>]
        #     The list of NFS shares.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     A token identifying a page of results from the server.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListNfsSharesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Message requesting to updating a NFS share.
        # @!attribute [rw] nfs_share
        #   @return [::Google::Cloud::BareMetalSolution::V2::NfsShare]
        #     Required. The NFS share to update.
        #
        #     The `name` field is used to identify the NFS share to update.
        #     Format: projects/\\{project}/locations/\\{location}/nfsShares/\\{nfs_share}
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     The list of fields to update.
        #     The only currently supported fields are:
        #       `labels`
        class UpdateNfsShareRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end
      end
    end
  end
end