cmd

package
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2021 License: Apache-2.0 Imports: 170 Imported by: 0

Documentation

Overview

Package cmd This file implements helper functions to validate AWS Signature Version '4' authorization header.

This package provides comprehensive helpers for following signature types. - Based on Authorization header. - Based on Query parameters. - Based on Form POST policy.

Package cmd This file implements helper functions to validate Streaming AWS Signature Version '4' authorization header.

Index

Constants

View Source
const (
	AdminUpdateUnexpectedFailure = "XMinioAdminUpdateUnexpectedFailure"
	AdminUpdateURLNotReachable   = "XMinioAdminUpdateURLNotReachable"
	AdminUpdateApplyFailure      = "XMinioAdminUpdateApplyFailure"
)

Admin API errors

View Source
const (
	// CommitPending - cache writeback with backend is pending.
	CommitPending cacheCommitStatus = "pending"

	// CommitComplete - cache writeback completed ok.
	CommitComplete cacheCommitStatus = "complete"

	// CommitFailed - cache writeback needs a retry.
	CommitFailed cacheCommitStatus = "failed"
)
View Source
const (
	// SSECustomerKeySize is the size of valid client provided encryption keys in bytes.
	// Currently AWS supports only AES256. So the SSE-C key size is fixed to 32 bytes.
	SSECustomerKeySize = 32

	// SSEIVSize is the size of the IV data
	SSEIVSize = 32 // 32 bytes

	// SSEDAREPackageBlockSize - SSE dare package block size.
	SSEDAREPackageBlockSize = 64 * 1024 // 64KiB bytes

	// SSEDAREPackageMetaSize - SSE dare package meta padding bytes.
	SSEDAREPackageMetaSize = 32 // 32 bytes

)
View Source
const (
	GatewayMinioSysTmp  = "minio.sys.tmp/"
	AzureBackendGateway = "azure"
	GCSBackendGateway   = "gcs"
	HDFSBackendGateway  = "hdfs"
	NASBackendGateway   = "nas"
	S3BackendGateway    = "s3"
)

GatewayMinioSysTmp prefix is used in Azure/GCS gateway for save metadata sent by Initialize Multipart Upload API.

View Source
const (
	ReservedMetadataPrefix      = "X-Minio-Internal-"
	ReservedMetadataPrefixLower = "x-minio-internal-"
)

ReservedMetadataPrefix is the prefix of a metadata key which is reserved and for internal use only.

View Source
const (

	// GlobalStaleUploadsExpiry - Expiry duration after which the uploads in multipart, tmp directory are deemed stale.
	GlobalStaleUploadsExpiry = time.Hour * 24 // 24 hrs.

	// GlobalStaleUploadsCleanupInterval - Cleanup interval when the stale uploads cleanup is initiated.
	GlobalStaleUploadsCleanupInterval = time.Hour * 12 // 12 hrs.

	// GlobalServiceExecutionInterval - Executes the Lifecycle events.
	GlobalServiceExecutionInterval = time.Hour * 24 // 24 hrs.

)
View Source
const (
	Unknown = BackendType(madmin.Unknown)
	// Filesystem backend.
	BackendFS = BackendType(madmin.FS)
	// Multi disk BackendErasure (single, distributed) backend.
	BackendErasure = BackendType(madmin.Erasure)
	// Gateway backend.
	BackendGateway = BackendType(madmin.Gateway)
)

Enum for different backend types.

View Source
const (
	DefaultBitrotAlgorithm = HighwayHash256S
)

DefaultBitrotAlgorithm is the default algorithm used for bitrot protection.

View Source
const DefaultSkewTime = 15 * time.Minute

DefaultSkewTime - skew time is 15 minutes between minio peers.

View Source
const (
	// Disabled means the lifecycle rule is inactive
	Disabled = "Disabled"
)
View Source
const (
	EnvErasureSetDriveCount = "MINIO_ERASURE_SET_DRIVE_COUNT"
)

Override set drive count for manual distribution.

View Source
const (
	EnvPrometheusAuthType = "MINIO_PROMETHEUS_AUTH_TYPE"
)

Standard env prometheus auth type

View Source
const (
	GlobalMinioDefaultPort = "9000"
)

minio configuration related constants.

View Source
const (

	// SSECacheEncrypted is the metadata key indicating that the object
	// is a cache entry encrypted with cache KMS master key in globalCacheKMS.
	SSECacheEncrypted = "X-Minio-Internal-Encrypted-Cache"
)
View Source
const SlashSeparator = "/"

SlashSeparator - slash separator.

View Source
const VersionPurgeStatusKey = "purgestatus"

VersionPurgeStatusKey denotes purge status in metadata

Variables

View Source
var (
	// GOPATH - GOPATH value at the time of build.
	GOPATH = ""

	// GOROOT - GOROOT value at the time of build.
	GOROOT = ""

	// Version - version time.RFC3339.
	Version = "DEVELOPMENT.GOGET"

	// ReleaseTag - release tag in TAG.%Y-%m-%dT%H-%M-%SZ.
	ReleaseTag = "DEVELOPMENT.GOGET"

	// CommitID - latest commit id.
	CommitID = "DEVELOPMENT.GOGET"

	// ShortCommitID - first 12 characters from CommitID.
	ShortCommitID = "DEVELOPMENT.GOGET"
)

DO NOT EDIT THIS FILE DIRECTLY. These are build-time constants set through ‘buildscripts/gen-ldflags.go’.

View Source
var (
	// CanonicalizeETag provides canonicalizeETag function alias.
	CanonicalizeETag = canonicalizeETag

	// MustGetUUID function alias.
	MustGetUUID = mustGetUUID

	// CleanMetadataKeys provides cleanMetadataKeys function alias.
	CleanMetadataKeys = cleanMetadataKeys

	// PathJoin function alias.
	PathJoin = pathJoin

	// ListObjects function alias.
	ListObjects = listObjects

	// FilterListEntries function alias.
	FilterListEntries = filterListEntries

	// IsStringEqual is string equal.
	IsStringEqual = isStringEqual
)
View Source
var (

	// GlobalKMS initialized KMS configuration
	GlobalKMS crypto.KMS

	// GlobalGatewaySSE sse options
	GlobalGatewaySSE gatewaySSE
)
View Source
var GlobalContext context.Context

GlobalContext context that is canceled when server is requested to shut down.

View Source
var GlobalFlags = []cli.Flag{

	cli.StringFlag{
		Name:   "config-dir, C",
		Value:  defaultConfigDir.Get(),
		Usage:  "[DEPRECATED] path to legacy configuration directory",
		Hidden: true,
	},
	cli.StringFlag{
		Name:  "certs-dir, S",
		Value: defaultCertsDir.Get(),
		Usage: "path to certs directory",
	},
	cli.BoolFlag{
		Name:  "quiet",
		Usage: "disable startup information",
	},
	cli.BoolFlag{
		Name:  "anonymous",
		Usage: "hide sensitive information from logging",
	},
	cli.BoolFlag{
		Name:  "json",
		Usage: "output server logs and startup information in json format",
	},

	cli.BoolFlag{
		Name:   "compat",
		Usage:  "enable strict S3 compatibility by turning off certain performance optimizations",
		Hidden: true,
	},

	cli.BoolFlag{
		Name:   "no-compat",
		Usage:  "disable strict S3 compatibility by turning on certain performance optimizations",
		Hidden: true,
	},
}

GlobalFlags - global flags for minio.

View Source
var GlobalServiceDoneCh <-chan struct{}

GlobalServiceDoneCh - Global service done channel.

View Source
var ObjectsHistogramIntervals = []objectHistogramInterval{
	{"LESS_THAN_1024_B", 0, humanize.KiByte - 1},
	{"BETWEEN_1024_B_AND_1_MB", humanize.KiByte, humanize.MiByte - 1},
	{"BETWEEN_1_MB_AND_10_MB", humanize.MiByte, humanize.MiByte*10 - 1},
	{"BETWEEN_10_MB_AND_64_MB", humanize.MiByte * 10, humanize.MiByte*64 - 1},
	{"BETWEEN_64_MB_AND_128_MB", humanize.MiByte * 64, humanize.MiByte*128 - 1},
	{"BETWEEN_128_MB_AND_512_MB", humanize.MiByte * 128, humanize.MiByte*512 - 1},
	{"GREATER_THAN_512_MB", humanize.MiByte * 512, math.MaxInt64},
}

ObjectsHistogramIntervals is the list of all intervals of object sizes to be included in objects histogram.

View Source
var ServerFlags = []cli.Flag{
	cli.StringFlag{
		Name:  "address",
		Value: ":" + GlobalMinioDefaultPort,
		Usage: "bind to a specific ADDRESS:PORT, ADDRESS can be an IP or hostname",
	},
}

ServerFlags - server command specific flags

Functions

func AuthMiddleware

func AuthMiddleware(h http.Handler) http.Handler

AuthMiddleware checks if the bearer token is valid and authorized.

func BucketAccessPolicyToPolicy

func BucketAccessPolicyToPolicy(policyInfo *miniogopolicy.BucketAccessPolicy) (*policy.Policy, error)

BucketAccessPolicyToPolicy - converts minio-go/policy.BucketAccessPolicy to policy.Policy.

func CheckLocalServerAddr

func CheckLocalServerAddr(serverAddr string) error

CheckLocalServerAddr - checks if serverAddr is valid and local host.

func CleanMinioInternalMetadataKeys

func CleanMinioInternalMetadataKeys(metadata map[string]string) map[string]string

CleanMinioInternalMetadataKeys removes X-Amz-Meta- prefix from minio internal encryption metadata that was sent by minio gateway

func ClusterCheckHandler

func ClusterCheckHandler(w http.ResponseWriter, r *http.Request)

ClusterCheckHandler returns if the server is ready for requests.

func ClusterReadCheckHandler

func ClusterReadCheckHandler(w http.ResponseWriter, r *http.Request)

ClusterReadCheckHandler returns if the server is ready for requests.

func ComputeCompleteMultipartMD5

func ComputeCompleteMultipartMD5(parts []CompletePart) string

ComputeCompleteMultipartMD5 calculates MD5 ETag for complete multipart responses

func CreateEndpoints

func CreateEndpoints(serverAddr string, foundLocal bool, args ...[]string) (Endpoints, SetupType, error)

CreateEndpoints - validates and creates new endpoints for given args.

func DecryptBlocksRequestR

func DecryptBlocksRequestR(inputReader io.Reader, h http.Header, seqNumber uint32, partStart int, oi ObjectInfo, copySource bool) (io.Reader, error)

DecryptBlocksRequestR - same as DecryptBlocksRequest but with a reader

func DecryptCopyRequestR

func DecryptCopyRequestR(client io.Reader, h http.Header, bucket, object string, seqNumber uint32, metadata map[string]string) (io.Reader, error)

DecryptCopyRequestR - same as DecryptCopyRequest, but with a Reader

func DecryptETag

func DecryptETag(key crypto.ObjectKey, object ObjectInfo) (string, error)

DecryptETag decrypts the ETag that is part of given object with the given object encryption key.

However, DecryptETag does not try to decrypt the ETag if it consists of a 128 bit hex value (32 hex chars) and exactly one '-' followed by a 32-bit number. This special case adresses randomly-generated ETags generated by the MinIO server when running in non-compat mode. These random ETags are not encrypt.

Calling DecryptETag with a non-randomly generated ETag will fail.

func DecryptObjectInfo

func DecryptObjectInfo(info *ObjectInfo, r *http.Request) (encrypted bool, err error)

DecryptObjectInfo tries to decrypt the provided object if it is encrypted. It fails if the object is encrypted and the HTTP headers don't contain SSE-C headers or the object is not encrypted but SSE-C headers are provided. (AWS behavior) DecryptObjectInfo returns 'ErrNone' if the object is not encrypted or the decryption succeeded.

DecryptObjectInfo also returns whether the object is encrypted or not.

func DecryptRequestWithSequenceNumberR

func DecryptRequestWithSequenceNumberR(client io.Reader, h http.Header, bucket, object string, seqNumber uint32, metadata map[string]string) (io.Reader, error)

DecryptRequestWithSequenceNumberR - same as DecryptRequestWithSequenceNumber but with a reader

func EncryptRequest

func EncryptRequest(content io.Reader, r *http.Request, bucket, object string, metadata map[string]string) (io.Reader, crypto.ObjectKey, error)

EncryptRequest takes the client provided content and encrypts the data with the client provided key. It also marks the object as client-side-encrypted and sets the correct headers.

func ErrorRespToObjectError

func ErrorRespToObjectError(err error, params ...string) error

ErrorRespToObjectError converts MinIO errors to minio object layer errors.

func Fallocate

func Fallocate(fd int, offset int64, len int64) error

Fallocate uses the linux Fallocate syscall, which helps us to be sure that subsequent writes on a file just created will not fail, in addition, file allocation will be contigous on the disk

func FromMinioClientMetadata

func FromMinioClientMetadata(metadata map[string][]string) map[string]string

FromMinioClientMetadata converts minio metadata to map[string]string

func GenETag

func GenETag() string

GenETag - generate UUID based ETag

func GetAllSets

func GetAllSets(args ...string) ([][]string, error)

GetAllSets - parses all ellipses input arguments, expands them into corresponding list of endpoints chunked evenly in accordance with a specific set size. For example: {1...64} is divided into 4 sets each of size 16. This applies to even distributed setup syntax as well.

func GetCurrentReleaseTime

func GetCurrentReleaseTime() (releaseTime time.Time, err error)

GetCurrentReleaseTime - returns this process's release time. If it is official minio version, parsed version is returned else minio binary's mod time is returned.

func GetLocalPeer

func GetLocalPeer(endpointServerPools EndpointServerPools) (localPeer string)

GetLocalPeer - returns local peer value, returns globalMinioAddr for FS and Erasure mode. In case of distributed server return the first element from the set of peers which indicate that they are local. There is always one entry that is local even with repeated server endpoints.

func GetObject

func GetObject(ctx context.Context, api ObjectLayer, bucket, object string, startOffset int64, length int64, writer io.Writer, etag string, opts ObjectOptions) (err error)

GetObject - TODO(aead): This function just acts as an adapter for GetObject tests and benchmarks since the GetObject method of the ObjectLayer interface has been removed. Once, the tests are adjusted to use GetObjectNInfo this function can be removed.

func GetPeerOnlineCount

func GetPeerOnlineCount() (nodesOnline, nodesOffline int)

GetPeerOnlineCount gets the count of online and offline nodes.

func GetProxyEndpointLocalIndex

func GetProxyEndpointLocalIndex(proxyEps []ProxyEndpoint) int

GetProxyEndpointLocalIndex returns index of the local proxy endpoint

func GetTotalCapacity

func GetTotalCapacity(diskInfo []madmin.Disk) (capacity uint64)

GetTotalCapacity gets the total capacity in the cluster.

func GetTotalCapacityFree

func GetTotalCapacityFree(diskInfo []madmin.Disk) (capacity uint64)

GetTotalCapacityFree gets the total capacity free in the cluster.

func GetTotalUsableCapacity

func GetTotalUsableCapacity(diskInfo []madmin.Disk, s StorageInfo) (capacity float64)

GetTotalUsableCapacity gets the total usable capacity in the cluster. This value is not an accurate representation of total usable in a multi-tenant deployment.

func GetTotalUsableCapacityFree

func GetTotalUsableCapacityFree(diskInfo []madmin.Disk, s StorageInfo) (capacity float64)

GetTotalUsableCapacityFree gets the total usable capacity free in the cluster. This value is not an accurate representation of total free in a multi-tenant deployment.

func GetVersion

func GetVersion(configFile string) (string, error)

GetVersion gets config version from backend

func HasPrefix

func HasPrefix(s string, prefix string) bool

HasPrefix - Prefix matcher string matches prefix in a platform specific way. For example on windows since its case insensitive we are supposed to do case insensitive checks.

func HasSuffix

func HasSuffix(s string, suffix string) bool

HasSuffix - Suffix matcher string matches suffix in a platform specific way. For example on windows since its case insensitive we are supposed to do case insensitive checks.

func IsBOSH

func IsBOSH() bool

IsBOSH returns true if minio is deployed from a bosh package

func IsBackendOnline

func IsBackendOnline(ctx context.Context, host string) bool

IsBackendOnline - verifies if the backend is reachable by performing a GET request on the URL. returns 'true' if backend is reachable.

func IsDCOS

func IsDCOS() bool

IsDCOS returns true if minio is running in DCOS.

func IsDocker

func IsDocker() bool

IsDocker - returns if the environment minio is running in docker or not. The check is a simple file existence check.

https://github.com/moby/moby/blob/master/daemon/initlayer/setup_unix.go#L25

"/.dockerenv":      "file",

func IsErr

func IsErr(err error, errs ...error) bool

IsErr returns whether given error is exact error.

func IsErrIgnored

func IsErrIgnored(err error, ignoredErrs ...error) bool

IsErrIgnored returns whether given error is ignored or not.

func IsKubernetes

func IsKubernetes() bool

IsKubernetes returns true if minio is running in kubernetes.

func IsKubernetesReplicaSet

func IsKubernetesReplicaSet() bool

IsKubernetesReplicaSet returns true if minio is running in kubernetes replica set.

func IsSourceBuild

func IsSourceBuild() bool

IsSourceBuild - returns if this binary is a non-official build from source code.

func IsValidBucketName

func IsValidBucketName(bucket string) bool

IsValidBucketName verifies that a bucket name is in accordance with Amazon's requirements (i.e. DNS naming conventions). It must be 3-63 characters long, and it must be a sequence of one or more labels separated by periods. Each label can contain lowercase ascii letters, decimal digits and hyphens, but must not begin or end with a hyphen. See: http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html

func IsValidObjectName

func IsValidObjectName(object string) bool

IsValidObjectName verifies an object name in accordance with Amazon's requirements. It cannot exceed 1024 characters and must be a valid UTF8 string.

See: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

You should avoid the following characters in a key name because of significant special handling for consistency across all applications.

Rejects strings with following characters.

- Backslash ("\")

additionally minio does not support object names with trailing SlashSeparator.

func IsValidObjectPrefix

func IsValidObjectPrefix(object string) bool

IsValidObjectPrefix verifies whether the prefix is a valid object name. Its valid to have a empty prefix.

func LivenessCheckHandler

func LivenessCheckHandler(w http.ResponseWriter, r *http.Request)

LivenessCheckHandler - Checks if the process is up. Always returns success.

func Load

func Load(configFile string, data interface{}) (quick.Config, error)

Load config from backend

func Main

func Main(args []string)

Main main for minio server.

func NewGatewayHTTPTransport

func NewGatewayHTTPTransport() *http.Transport

NewGatewayHTTPTransport returns a new http configuration used while communicating with the cloud backends.

func NewGatewayHTTPTransportWithClientCerts

func NewGatewayHTTPTransportWithClientCerts(clientCert, clientKey string) *http.Transport

NewGatewayHTTPTransportWithClientCerts returns a new http configuration used while communicating with the cloud backends.

func ObjectPathUpdated

func ObjectPathUpdated(s string)

ObjectPathUpdated indicates a path has been updated. The function will block until the entry has been picked up.

func ParseGatewayEndpoint

func ParseGatewayEndpoint(arg string) (endPoint string, secure bool, err error)

ParseGatewayEndpoint - Return endpoint.

func ParseSSECopyCustomerRequest

func ParseSSECopyCustomerRequest(h http.Header, metadata map[string]string) (key []byte, err error)

ParseSSECopyCustomerRequest parses the SSE-C header fields of the provided request. It returns the client provided key on success.

func ParseSSECustomerHeader

func ParseSSECustomerHeader(header http.Header) (key []byte, err error)

ParseSSECustomerHeader parses the SSE-C header fields and returns the client provided key on success.

func ParseSSECustomerRequest

func ParseSSECustomerRequest(r *http.Request) (key []byte, err error)

ParseSSECustomerRequest parses the SSE-C header fields of the provided request. It returns the client provided key on success.

func PolicyToBucketAccessPolicy

func PolicyToBucketAccessPolicy(bucketPolicy *policy.Policy) (*miniogopolicy.BucketAccessPolicy, error)

PolicyToBucketAccessPolicy converts a MinIO policy into a minio-go policy data structure.

func ReadinessCheckHandler

func ReadinessCheckHandler(w http.ResponseWriter, r *http.Request)

ReadinessCheckHandler Checks if the process is up. Always returns success.

func RegisterGatewayCommand

func RegisterGatewayCommand(cmd cli.Command) error

RegisterGatewayCommand registers a new command for gateway.

func ReportMetrics

func ReportMetrics(ctx context.Context, generators func() []MetricsGenerator) <-chan Metric

ReportMetrics reports serialized metrics to the channel passed for the metrics generated.

func Save

func Save(configFile string, data interface{}) error

Save config file to corresponding backend

func StartGateway

func StartGateway(ctx *cli.Context, gw Gateway)

StartGateway - handler for 'minio gateway <name>'.

func StorageReader

func StorageReader(storage StorageAPI, volume, path string, offset int64) io.Reader

StorageReader returns a new io.Reader which reads data to the file at the given disk, volume, path and offset.

func StorageWriter

func StorageWriter(storage StorageAPI, volume, path string) io.Writer

StorageWriter returns a new io.Writer which appends data to the file at the given disk, volume and path.

func ToMinioClientCompletePart

func ToMinioClientCompletePart(part CompletePart) minio.CompletePart

ToMinioClientCompletePart converts CompletePart to minio CompletePart

func ToMinioClientCompleteParts

func ToMinioClientCompleteParts(parts []CompletePart) []minio.CompletePart

ToMinioClientCompleteParts converts []CompletePart to minio []CompletePart

func ToMinioClientMetadata

func ToMinioClientMetadata(metadata map[string]string) map[string]string

ToMinioClientMetadata converts metadata to map[string]string

func ToMinioClientObjectInfoMetadata

func ToMinioClientObjectInfoMetadata(metadata map[string]string) map[string][]string

ToMinioClientObjectInfoMetadata convertes metadata to map[string][]string

func ToS3ETag

func ToS3ETag(etag string) string

ToS3ETag - return checksum to ETag

func Trace

func Trace(f http.HandlerFunc, logBody bool, w http.ResponseWriter, r *http.Request) trace.Info

Trace gets trace of http request

func UTCNow

func UTCNow() time.Time

UTCNow - returns current UTC time.

func ValidateGatewayArguments

func ValidateGatewayArguments(serverAddr, endpointAddr string) error

ValidateGatewayArguments - Validate gateway arguments.

func WebTrace

func WebTrace(ri *jsonrpc.RequestInfo) trace.Info

WebTrace gets trace of web request

Types

type APIError

type APIError struct {
	Code           string
	Description    string
	HTTPStatusCode int
}

APIError structure

type APIErrorCode

type APIErrorCode int

APIErrorCode type of error status.

const (
	ErrNone APIErrorCode = iota
	ErrAccessDenied
	ErrBadDigest
	ErrEntityTooSmall
	ErrEntityTooLarge
	ErrPolicyTooLarge
	ErrIncompleteBody
	ErrInternalError
	ErrInvalidAccessKeyID
	ErrInvalidBucketName
	ErrInvalidDigest
	ErrInvalidRange
	ErrInvalidCopyPartRange
	ErrInvalidCopyPartRangeSource
	ErrInvalidMaxKeys
	ErrInvalidEncodingMethod
	ErrInvalidMaxUploads
	ErrInvalidMaxParts
	ErrInvalidPartNumberMarker
	ErrInvalidPartNumber
	ErrInvalidRequestBody
	ErrInvalidCopySource
	ErrInvalidMetadataDirective
	ErrInvalidCopyDest
	ErrInvalidPolicyDocument
	ErrInvalidObjectState
	ErrMalformedXML
	ErrMissingContentLength
	ErrMissingContentMD5
	ErrMissingRequestBodyError
	ErrMissingSecurityHeader
	ErrNoSuchBucket
	ErrNoSuchBucketPolicy
	ErrNoSuchBucketLifecycle
	ErrNoSuchLifecycleConfiguration
	ErrNoSuchBucketSSEConfig
	ErrNoSuchCORSConfiguration
	ErrNoSuchWebsiteConfiguration
	ErrReplicationConfigurationNotFoundError
	ErrRemoteDestinationNotFoundError
	ErrReplicationDestinationMissingLock
	ErrRemoteTargetNotFoundError
	ErrReplicationRemoteConnectionError
	ErrBucketRemoteIdenticalToSource
	ErrBucketRemoteAlreadyExists
	ErrBucketRemoteLabelInUse
	ErrBucketRemoteArnTypeInvalid
	ErrBucketRemoteArnInvalid
	ErrBucketRemoteRemoveDisallowed
	ErrRemoteTargetNotVersionedError
	ErrReplicationSourceNotVersionedError
	ErrReplicationNeedsVersioningError
	ErrReplicationBucketNeedsVersioningError
	ErrObjectRestoreAlreadyInProgress
	ErrNoSuchKey
	ErrNoSuchUpload
	ErrInvalidVersionID
	ErrNoSuchVersion
	ErrNotImplemented
	ErrPreconditionFailed
	ErrRequestTimeTooSkewed
	ErrSignatureDoesNotMatch
	ErrMethodNotAllowed
	ErrInvalidPart
	ErrInvalidPartOrder
	ErrAuthorizationHeaderMalformed
	ErrMalformedPOSTRequest
	ErrPOSTFileRequired
	ErrSignatureVersionNotSupported
	ErrBucketNotEmpty
	ErrAllAccessDisabled
	ErrMalformedPolicy
	ErrMissingFields
	ErrMissingCredTag
	ErrCredMalformed
	ErrInvalidRegion
	ErrInvalidServiceS3
	ErrInvalidServiceSTS
	ErrInvalidRequestVersion
	ErrMissingSignTag
	ErrMissingSignHeadersTag
	ErrMalformedDate
	ErrMalformedPresignedDate
	ErrMalformedCredentialDate
	ErrMalformedCredentialRegion
	ErrMalformedExpires
	ErrNegativeExpires
	ErrAuthHeaderEmpty
	ErrExpiredPresignRequest
	ErrRequestNotReadyYet
	ErrUnsignedHeaders
	ErrMissingDateHeader
	ErrInvalidQuerySignatureAlgo
	ErrInvalidQueryParams
	ErrBucketAlreadyOwnedByYou
	ErrInvalidDuration
	ErrBucketAlreadyExists
	ErrMetadataTooLarge
	ErrUnsupportedMetadata
	ErrMaximumExpires
	ErrSlowDown
	ErrInvalidPrefixMarker
	ErrBadRequest
	ErrKeyTooLongError
	ErrInvalidBucketObjectLockConfiguration
	ErrObjectLockConfigurationNotFound
	ErrObjectLockConfigurationNotAllowed
	ErrNoSuchObjectLockConfiguration
	ErrObjectLocked
	ErrInvalidRetentionDate
	ErrPastObjectLockRetainDate
	ErrUnknownWORMModeDirective
	ErrBucketTaggingNotFound
	ErrObjectLockInvalidHeaders
	ErrInvalidTagDirective

	// SSE-S3 related API errors
	ErrInvalidEncryptionMethod

	// Server-Side-Encryption (with Customer provided key) related API errors.
	ErrInsecureSSECustomerRequest
	ErrSSEMultipartEncrypted
	ErrSSEEncryptedObject
	ErrInvalidEncryptionParameters
	ErrInvalidSSECustomerAlgorithm
	ErrInvalidSSECustomerKey
	ErrMissingSSECustomerKey
	ErrMissingSSECustomerKeyMD5
	ErrSSECustomerKeyMD5Mismatch
	ErrInvalidSSECustomerParameters
	ErrIncompatibleEncryptionMethod
	ErrKMSNotConfigured
	ErrKMSAuthFailure

	ErrNoAccessKey
	ErrInvalidToken

	// Bucket notification related errors.
	ErrEventNotification
	ErrARNNotification
	ErrRegionNotification
	ErrOverlappingFilterNotification
	ErrFilterNameInvalid
	ErrFilterNamePrefix
	ErrFilterNameSuffix
	ErrFilterValueInvalid
	ErrOverlappingConfigs
	ErrUnsupportedNotification

	// S3 extended errors.
	ErrContentSHA256Mismatch

	// MinIO extended errors.
	ErrReadQuorum
	ErrWriteQuorum
	ErrParentIsObject
	ErrStorageFull
	ErrRequestBodyParse
	ErrObjectExistsAsDirectory
	ErrInvalidObjectName
	ErrInvalidObjectNamePrefixSlash
	ErrInvalidResourceName
	ErrServerNotInitialized
	ErrOperationTimedOut
	ErrClientDisconnected
	ErrOperationMaxedOut
	ErrInvalidRequest
	// MinIO storage class error codes
	ErrInvalidStorageClass
	ErrBackendDown

	ErrMalformedJSON
	ErrAdminNoSuchUser
	ErrAdminNoSuchGroup
	ErrAdminGroupNotEmpty
	ErrAdminNoSuchPolicy
	ErrAdminInvalidArgument
	ErrAdminInvalidAccessKey
	ErrAdminInvalidSecretKey
	ErrAdminConfigNoQuorum
	ErrAdminConfigTooLarge
	ErrAdminConfigBadJSON
	ErrAdminConfigDuplicateKeys
	ErrAdminCredentialsMismatch
	ErrInsecureClientRequest
	ErrObjectTampered
	// Bucket Quota error codes
	ErrAdminBucketQuotaExceeded
	ErrAdminNoSuchQuotaConfiguration

	ErrHealNotImplemented
	ErrHealNoSuchProcess
	ErrHealInvalidClientToken
	ErrHealMissingBucket
	ErrHealAlreadyRunning
	ErrHealOverlappingPaths
	ErrIncorrectContinuationToken

	// S3 Select Errors
	ErrEmptyRequestBody
	ErrUnsupportedFunction
	ErrInvalidExpressionType
	ErrBusy
	ErrUnauthorizedAccess
	ErrExpressionTooLong
	ErrIllegalSQLFunctionArgument
	ErrInvalidKeyPath
	ErrInvalidCompressionFormat
	ErrInvalidFileHeaderInfo
	ErrInvalidJSONType
	ErrInvalidQuoteFields
	ErrInvalidRequestParameter
	ErrInvalidDataType
	ErrInvalidTextEncoding
	ErrInvalidDataSource
	ErrInvalidTableAlias
	ErrMissingRequiredParameter
	ErrObjectSerializationConflict
	ErrUnsupportedSQLOperation
	ErrUnsupportedSQLStructure
	ErrUnsupportedSyntax
	ErrUnsupportedRangeHeader
	ErrLexerInvalidChar
	ErrLexerInvalidOperator
	ErrLexerInvalidLiteral
	ErrLexerInvalidIONLiteral
	ErrParseExpectedDatePart
	ErrParseExpectedKeyword
	ErrParseExpectedTokenType
	ErrParseExpected2TokenTypes
	ErrParseExpectedNumber
	ErrParseExpectedRightParenBuiltinFunctionCall
	ErrParseExpectedTypeName
	ErrParseExpectedWhenClause
	ErrParseUnsupportedToken
	ErrParseUnsupportedLiteralsGroupBy
	ErrParseExpectedMember
	ErrParseUnsupportedSelect
	ErrParseUnsupportedCase
	ErrParseUnsupportedCaseClause
	ErrParseUnsupportedAlias
	ErrParseUnsupportedSyntax
	ErrParseUnknownOperator
	ErrParseMissingIdentAfterAt
	ErrParseUnexpectedOperator
	ErrParseUnexpectedTerm
	ErrParseUnexpectedToken
	ErrParseUnexpectedKeyword
	ErrParseExpectedExpression
	ErrParseExpectedLeftParenAfterCast
	ErrParseExpectedLeftParenValueConstructor
	ErrParseExpectedLeftParenBuiltinFunctionCall
	ErrParseExpectedArgumentDelimiter
	ErrParseCastArity
	ErrParseInvalidTypeParam
	ErrParseEmptySelect
	ErrParseSelectMissingFrom
	ErrParseExpectedIdentForGroupName
	ErrParseExpectedIdentForAlias
	ErrParseUnsupportedCallWithStar
	ErrParseNonUnaryAgregateFunctionCall
	ErrParseMalformedJoin
	ErrParseExpectedIdentForAt
	ErrParseAsteriskIsNotAloneInSelectList
	ErrParseCannotMixSqbAndWildcardInSelectList
	ErrParseInvalidContextForWildcardInSelectList
	ErrIncorrectSQLFunctionArgumentType
	ErrValueParseFailure
	ErrEvaluatorInvalidArguments
	ErrIntegerOverflow
	ErrLikeInvalidInputs
	ErrCastFailed
	ErrInvalidCast
	ErrEvaluatorInvalidTimestampFormatPattern
	ErrEvaluatorInvalidTimestampFormatPatternSymbolForParsing
	ErrEvaluatorTimestampFormatPatternDuplicateFields
	ErrEvaluatorTimestampFormatPatternHourClockAmPmMismatch
	ErrEvaluatorUnterminatedTimestampFormatPatternToken
	ErrEvaluatorInvalidTimestampFormatPatternToken
	ErrEvaluatorInvalidTimestampFormatPatternSymbol
	ErrEvaluatorBindingDoesNotExist
	ErrMissingHeaders
	ErrInvalidColumnIndex

	ErrAdminConfigNotificationTargetsFailed
	ErrAdminProfilerNotEnabled
	ErrInvalidDecompressedSize
	ErrAddUserInvalidArgument
	ErrAdminAccountNotEligible
	ErrAccountNotEligible
	ErrServiceAccountNotFound
	ErrPostPolicyConditionInvalidFormat
)

Error codes, non exhaustive list - http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html

type APIErrorResponse

type APIErrorResponse struct {
	XMLName    xml.Name `xml:"Error" json:"-"`
	Code       string
	Message    string
	Key        string `xml:"Key,omitempty" json:"Key,omitempty"`
	BucketName string `xml:"BucketName,omitempty" json:"BucketName,omitempty"`
	Resource   string
	Region     string `xml:"Region,omitempty" json:"Region,omitempty"`
	RequestID  string `xml:"RequestId" json:"RequestId"`
	HostID     string `xml:"HostId" json:"HostId"`
}

APIErrorResponse - error response format

type AdminError

type AdminError struct {
	Code       string
	Message    string
	StatusCode int
}

AdminError - is a generic error for all admin APIs.

func (AdminError) Error

func (ae AdminError) Error() string

type AllAccessDisabled

type AllAccessDisabled GenericError

AllAccessDisabled All access to this object has been disabled

func (AllAccessDisabled) Error

func (e AllAccessDisabled) Error() string

Error returns string an error formatted as the given text.

type AssumeRoleResponse

type AssumeRoleResponse struct {
	XMLName xml.Name `xml:"https://sts.amazonaws.com/doc/2011-06-15/ AssumeRoleResponse" json:"-"`

	Result           AssumeRoleResult `xml:"AssumeRoleResult"`
	ResponseMetadata struct {
		RequestID string `xml:"RequestId,omitempty"`
	} `xml:"ResponseMetadata,omitempty"`
}

AssumeRoleResponse contains the result of successful AssumeRole request.

type AssumeRoleResult

type AssumeRoleResult struct {
	// The identifiers for the temporary security credentials that the operation
	// returns.
	AssumedRoleUser AssumedRoleUser `xml:",omitempty"`

	// The temporary security credentials, which include an access key ID, a secret
	// access key, and a security (or session) token.
	//
	// Note: The size of the security token that STS APIs return is not fixed. We
	// strongly recommend that you make no assumptions about the maximum size. As
	// of this writing, the typical size is less than 4096 bytes, but that can vary.
	// Also, future updates to AWS might require larger sizes.
	Credentials auth.Credentials `xml:",omitempty"`

	// A percentage value that indicates the size of the policy in packed form.
	// The service rejects any policy with a packed size greater than 100 percent,
	// which means the policy exceeded the allowed space.
	PackedPolicySize int `xml:",omitempty"`
}

AssumeRoleResult - Contains the response to a successful AssumeRole request, including temporary credentials that can be used to make MinIO API requests.

type AssumeRoleWithClientGrantsResponse

type AssumeRoleWithClientGrantsResponse struct {
	XMLName          xml.Name           `xml:"https://sts.amazonaws.com/doc/2011-06-15/ AssumeRoleWithClientGrantsResponse" json:"-"`
	Result           ClientGrantsResult `xml:"AssumeRoleWithClientGrantsResult"`
	ResponseMetadata struct {
		RequestID string `xml:"RequestId,omitempty"`
	} `xml:"ResponseMetadata,omitempty"`
}

AssumeRoleWithClientGrantsResponse contains the result of successful AssumeRoleWithClientGrants request.

type AssumeRoleWithLDAPResponse

type AssumeRoleWithLDAPResponse struct {
	XMLName          xml.Name           `xml:"https://sts.amazonaws.com/doc/2011-06-15/ AssumeRoleWithLDAPIdentityResponse" json:"-"`
	Result           LDAPIdentityResult `xml:"AssumeRoleWithLDAPIdentityResult"`
	ResponseMetadata struct {
		RequestID string `xml:"RequestId,omitempty"`
	} `xml:"ResponseMetadata,omitempty"`
}

AssumeRoleWithLDAPResponse contains the result of successful AssumeRoleWithLDAPIdentity request

type AssumeRoleWithWebIdentityResponse

type AssumeRoleWithWebIdentityResponse struct {
	XMLName          xml.Name          `xml:"https://sts.amazonaws.com/doc/2011-06-15/ AssumeRoleWithWebIdentityResponse" json:"-"`
	Result           WebIdentityResult `xml:"AssumeRoleWithWebIdentityResult"`
	ResponseMetadata struct {
		RequestID string `xml:"RequestId,omitempty"`
	} `xml:"ResponseMetadata,omitempty"`
}

AssumeRoleWithWebIdentityResponse contains the result of successful AssumeRoleWithWebIdentity request.

type AssumedRoleUser

type AssumedRoleUser struct {
	// The ARN of the temporary security credentials that are returned from the
	// AssumeRole action. For more information about ARNs and how to use them in
	// policies, see IAM Identifiers (http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)
	// in Using IAM.
	//
	// Arn is a required field
	Arn string

	// A unique identifier that contains the role ID and the role session name of
	// the role that is being assumed. The role ID is generated by AWS when the
	// role is created.
	//
	// AssumedRoleId is a required field
	AssumedRoleID string `xml:"AssumeRoleId"`
}

AssumedRoleUser - The identifiers for the temporary security credentials that the operation returns. Please also see https://docs.aws.amazon.com/goto/WebAPI/sts-2011-06-15/AssumedRoleUser

type BackendDown

type BackendDown struct{}

BackendDown is returned for network errors or if the gateway's backend is down.

func (BackendDown) Error

func (e BackendDown) Error() string

type BackendMetrics

type BackendMetrics struct {
	// contains filtered or unexported fields
}

BackendMetrics - represents bytes served from backend

func NewMetrics

func NewMetrics() *BackendMetrics

NewMetrics - Prepare new BackendMetrics structure

func (*BackendMetrics) GetBytesReceived

func (s *BackendMetrics) GetBytesReceived() uint64

GetBytesReceived - Get total bytes received from gateway backend

func (*BackendMetrics) GetBytesSent

func (s *BackendMetrics) GetBytesSent() uint64

GetBytesSent - Get total bytes received from gateway backend

func (*BackendMetrics) GetRequests

func (s *BackendMetrics) GetRequests() RequestStats

GetRequests - Get total number of Get & Headrequests sent to gateway backend

func (*BackendMetrics) IncBytesReceived

func (s *BackendMetrics) IncBytesReceived(n uint64)

IncBytesReceived - Increase total bytes received from gateway backend

func (*BackendMetrics) IncBytesSent

func (s *BackendMetrics) IncBytesSent(n uint64)

IncBytesSent - Increase total bytes sent to gateway backend

func (*BackendMetrics) IncRequests

func (s *BackendMetrics) IncRequests(method string)

IncRequests - Increase request count sent to gateway backend by 1

type BackendType

type BackendType int

BackendType - represents different backend types.

type BitrotAlgorithm

type BitrotAlgorithm uint

BitrotAlgorithm specifies a algorithm used for bitrot protection.

const (
	// SHA256 represents the SHA-256 hash function
	SHA256 BitrotAlgorithm = 1 + iota
	// HighwayHash256 represents the HighwayHash-256 hash function
	HighwayHash256
	// HighwayHash256S represents the Streaming HighwayHash-256 hash function
	HighwayHash256S
	// BLAKE2b512 represents the BLAKE2b-512 hash function
	BLAKE2b512
)

func BitrotAlgorithmFromString

func BitrotAlgorithmFromString(s string) (a BitrotAlgorithm)

BitrotAlgorithmFromString returns a bitrot algorithm from the given string representation. It returns 0 if the string representation does not match any supported algorithm. The zero value of a bitrot algorithm is never supported.

func (BitrotAlgorithm) Available

func (a BitrotAlgorithm) Available() bool

Available reports whether the given algorithm is available.

func (*BitrotAlgorithm) DecodeMsg

func (z *BitrotAlgorithm) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (BitrotAlgorithm) EncodeMsg

func (z BitrotAlgorithm) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (BitrotAlgorithm) MarshalMsg

func (z BitrotAlgorithm) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (BitrotAlgorithm) Msgsize

func (z BitrotAlgorithm) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (BitrotAlgorithm) New

func (a BitrotAlgorithm) New() hash.Hash

New returns a new hash.Hash calculating the given bitrot algorithm.

func (BitrotAlgorithm) String

func (a BitrotAlgorithm) String() string

String returns the string identifier for a given bitrot algorithm. If the algorithm is not supported String panics.

func (*BitrotAlgorithm) UnmarshalMsg

func (z *BitrotAlgorithm) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type BitrotVerifier

type BitrotVerifier struct {
	// contains filtered or unexported fields
}

BitrotVerifier can be used to verify protected data.

func NewBitrotVerifier

func NewBitrotVerifier(algorithm BitrotAlgorithm, checksum []byte) *BitrotVerifier

NewBitrotVerifier returns a new BitrotVerifier implementing the given algorithm.

type Bucket

type Bucket struct {
	Name         string
	CreationDate string // time string of format "2006-01-02T15:04:05.000Z"
}

Bucket container for bucket metadata

type BucketAccessPolicy

type BucketAccessPolicy struct {
	Bucket string                     `json:"bucket"`
	Prefix string                     `json:"prefix"`
	Policy miniogopolicy.BucketPolicy `json:"policy"`
}

BucketAccessPolicy - Collection of canned bucket policy at a given prefix.

type BucketAlreadyExists

type BucketAlreadyExists GenericError

BucketAlreadyExists the requested bucket name is not available.

func (BucketAlreadyExists) Error

func (e BucketAlreadyExists) Error() string

type BucketAlreadyOwnedByYou

type BucketAlreadyOwnedByYou GenericError

BucketAlreadyOwnedByYou already owned by you.

func (BucketAlreadyOwnedByYou) Error

func (e BucketAlreadyOwnedByYou) Error() string

type BucketExists

type BucketExists GenericError

BucketExists bucket exists.

func (BucketExists) Error

func (e BucketExists) Error() string

type BucketInfo

type BucketInfo struct {
	// Name of the bucket.
	Name string

	// Date and time when the bucket was created.
	Created time.Time
}

BucketInfo - represents bucket metadata.

type BucketLifecycleNotFound

type BucketLifecycleNotFound GenericError

BucketLifecycleNotFound - no bucket lifecycle found.

func (BucketLifecycleNotFound) Error

func (e BucketLifecycleNotFound) Error() string

type BucketMetadata

type BucketMetadata struct {
	Name                        string
	Created                     time.Time
	LockEnabled                 bool // legacy not used anymore.
	PolicyConfigJSON            []byte
	NotificationConfigXML       []byte
	LifecycleConfigXML          []byte
	ObjectLockConfigXML         []byte
	VersioningConfigXML         []byte
	EncryptionConfigXML         []byte
	TaggingConfigXML            []byte
	QuotaConfigJSON             []byte
	ReplicationConfigXML        []byte
	BucketTargetsConfigJSON     []byte
	BucketTargetsConfigMetaJSON []byte
	// contains filtered or unexported fields
}

BucketMetadata contains bucket metadata. When adding/removing fields, regenerate the marshal code using the go generate above. Only changing meaning of fields requires a version bump. bucketMetadataFormat refers to the format. bucketMetadataVersion can be used to track a rolling upgrade of a field.

func (*BucketMetadata) DecodeMsg

func (z *BucketMetadata) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*BucketMetadata) EncodeMsg

func (z *BucketMetadata) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (*BucketMetadata) Load

func (b *BucketMetadata) Load(ctx context.Context, api ObjectLayer, name string) error

Load - loads the metadata of bucket by name from ObjectLayer api. If an error is returned the returned metadata will be default initialized.

func (*BucketMetadata) MarshalMsg

func (z *BucketMetadata) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*BucketMetadata) Msgsize

func (z *BucketMetadata) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*BucketMetadata) Save

func (b *BucketMetadata) Save(ctx context.Context, api ObjectLayer) error

Save config to supplied ObjectLayer api.

func (*BucketMetadata) UnmarshalMsg

func (z *BucketMetadata) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type BucketMetadataSys

type BucketMetadataSys struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

BucketMetadataSys captures all bucket metadata for a given cluster.

func NewBucketMetadataSys

func NewBucketMetadataSys() *BucketMetadataSys

NewBucketMetadataSys - creates new policy system.

func (*BucketMetadataSys) Get

func (sys *BucketMetadataSys) Get(bucket string) (BucketMetadata, error)

Get metadata for a bucket. If no metadata exists errConfigNotFound is returned and a new metadata is returned. Only a shallow copy is returned, so referenced data should not be modified, but can be replaced atomically.

This function should only be used with - GetBucketInfo - ListBuckets For all other bucket specific metadata, use the relevant calls implemented specifically for each of those features.

func (*BucketMetadataSys) GetBucketTarget

func (sys *BucketMetadataSys) GetBucketTarget(bucket string, arn string) (madmin.BucketTarget, error)

GetBucketTarget returns the target for the bucket and arn.

func (*BucketMetadataSys) GetBucketTargetsConfig

func (sys *BucketMetadataSys) GetBucketTargetsConfig(bucket string) (*madmin.BucketTargets, error)

GetBucketTargetsConfig returns configured bucket targets for this bucket The returned object may not be modified.

func (*BucketMetadataSys) GetConfig

func (sys *BucketMetadataSys) GetConfig(bucket string) (BucketMetadata, error)

GetConfig returns a specific configuration from the bucket metadata. The returned object may not be modified.

func (*BucketMetadataSys) GetLifecycleConfig

func (sys *BucketMetadataSys) GetLifecycleConfig(bucket string) (*lifecycle.Lifecycle, error)

GetLifecycleConfig returns configured lifecycle config The returned object may not be modified.

func (*BucketMetadataSys) GetNotificationConfig

func (sys *BucketMetadataSys) GetNotificationConfig(bucket string) (*event.Config, error)

GetNotificationConfig returns configured notification config The returned object may not be modified.

func (*BucketMetadataSys) GetObjectLockConfig

func (sys *BucketMetadataSys) GetObjectLockConfig(bucket string) (*objectlock.Config, error)

GetObjectLockConfig returns configured object lock config The returned object may not be modified.

func (*BucketMetadataSys) GetPolicyConfig

func (sys *BucketMetadataSys) GetPolicyConfig(bucket string) (*policy.Policy, error)

GetPolicyConfig returns configured bucket policy The returned object may not be modified.

func (*BucketMetadataSys) GetQuotaConfig

func (sys *BucketMetadataSys) GetQuotaConfig(bucket string) (*madmin.BucketQuota, error)

GetQuotaConfig returns configured bucket quota The returned object may not be modified.

func (*BucketMetadataSys) GetReplicationConfig

func (sys *BucketMetadataSys) GetReplicationConfig(ctx context.Context, bucket string) (*replication.Config, error)

GetReplicationConfig returns configured bucket replication config The returned object may not be modified.

func (*BucketMetadataSys) GetSSEConfig

func (sys *BucketMetadataSys) GetSSEConfig(bucket string) (*bucketsse.BucketSSEConfig, error)

GetSSEConfig returns configured SSE config The returned object may not be modified.

func (*BucketMetadataSys) GetTaggingConfig

func (sys *BucketMetadataSys) GetTaggingConfig(bucket string) (*tags.Tags, error)

GetTaggingConfig returns configured tagging config The returned object may not be modified.

func (*BucketMetadataSys) GetVersioningConfig

func (sys *BucketMetadataSys) GetVersioningConfig(bucket string) (*versioning.Versioning, error)

GetVersioningConfig returns configured versioning config The returned object may not be modified.

func (*BucketMetadataSys) Init

func (sys *BucketMetadataSys) Init(ctx context.Context, buckets []BucketInfo, objAPI ObjectLayer) error

Init - initializes bucket metadata system for all buckets.

func (*BucketMetadataSys) Remove

func (sys *BucketMetadataSys) Remove(bucket string)

Remove bucket metadata from memory.

func (*BucketMetadataSys) Reset

func (sys *BucketMetadataSys) Reset()

Reset the state of the BucketMetadataSys.

func (*BucketMetadataSys) Set

func (sys *BucketMetadataSys) Set(bucket string, meta BucketMetadata)

Set - sets a new metadata in-memory. Only a shallow copy is saved and fields with references cannot be modified without causing a race condition, so they should be replaced atomically and not appended to, etc. Data is not persisted to disk.

func (*BucketMetadataSys) Update

func (sys *BucketMetadataSys) Update(bucket string, configFile string, configData []byte) error

Update update bucket metadata for the specified config file. The configData data should not be modified after being sent here.

type BucketNameInvalid

type BucketNameInvalid GenericError

BucketNameInvalid - bucketname provided is invalid.

func (BucketNameInvalid) Error

func (e BucketNameInvalid) Error() string

Error returns string an error formatted as the given text.

type BucketNotEmpty

type BucketNotEmpty GenericError

BucketNotEmpty bucket is not empty.

func (BucketNotEmpty) Error

func (e BucketNotEmpty) Error() string

type BucketNotFound

type BucketNotFound GenericError

BucketNotFound bucket does not exist.

func (BucketNotFound) Error

func (e BucketNotFound) Error() string

type BucketObjectLockConfigNotFound

type BucketObjectLockConfigNotFound GenericError

BucketObjectLockConfigNotFound - no bucket object lock config found

func (BucketObjectLockConfigNotFound) Error

type BucketObjectLockSys

type BucketObjectLockSys struct{}

BucketObjectLockSys - map of bucket and retention configuration.

func NewBucketObjectLockSys

func NewBucketObjectLockSys() *BucketObjectLockSys

NewBucketObjectLockSys returns initialized BucketObjectLockSys

func (*BucketObjectLockSys) Get

func (sys *BucketObjectLockSys) Get(bucketName string) (r objectlock.Retention, err error)

Get - Get retention configuration.

type BucketOptions

type BucketOptions struct {
	Location          string
	LockEnabled       bool
	VersioningEnabled bool
}

BucketOptions represents bucket options for ObjectLayer bucket operations

type BucketPolicyNotFound

type BucketPolicyNotFound GenericError

BucketPolicyNotFound - no bucket policy found.

func (BucketPolicyNotFound) Error

func (e BucketPolicyNotFound) Error() string

type BucketQuotaConfigNotFound

type BucketQuotaConfigNotFound GenericError

BucketQuotaConfigNotFound - no bucket quota config found.

func (BucketQuotaConfigNotFound) Error

type BucketQuotaExceeded

type BucketQuotaExceeded GenericError

BucketQuotaExceeded - bucket quota exceeded.

func (BucketQuotaExceeded) Error

func (e BucketQuotaExceeded) Error() string

type BucketQuotaSys

type BucketQuotaSys struct {
	// contains filtered or unexported fields
}

BucketQuotaSys - map of bucket and quota configuration.

func NewBucketQuotaSys

func NewBucketQuotaSys() *BucketQuotaSys

NewBucketQuotaSys returns initialized BucketQuotaSys

func (*BucketQuotaSys) Get

func (sys *BucketQuotaSys) Get(bucketName string) (*madmin.BucketQuota, error)

Get - Get quota configuration.

type BucketRemoteAlreadyExists

type BucketRemoteAlreadyExists GenericError

BucketRemoteAlreadyExists remote already exists for this target type.

func (BucketRemoteAlreadyExists) Error

type BucketRemoteArnInvalid

type BucketRemoteArnInvalid GenericError

BucketRemoteArnInvalid arn needs to be specified.

func (BucketRemoteArnInvalid) Error

func (e BucketRemoteArnInvalid) Error() string

type BucketRemoteArnTypeInvalid

type BucketRemoteArnTypeInvalid GenericError

BucketRemoteArnTypeInvalid arn type for remote is not valid.

func (BucketRemoteArnTypeInvalid) Error

type BucketRemoteConnectionErr

type BucketRemoteConnectionErr GenericError

BucketRemoteConnectionErr remote target connection failure.

func (BucketRemoteConnectionErr) Error

type BucketRemoteDestinationNotFound

type BucketRemoteDestinationNotFound GenericError

BucketRemoteDestinationNotFound bucket does not exist.

func (BucketRemoteDestinationNotFound) Error

type BucketRemoteLabelInUse

type BucketRemoteLabelInUse GenericError

BucketRemoteLabelInUse remote already exists for this target label.

func (BucketRemoteLabelInUse) Error

func (e BucketRemoteLabelInUse) Error() string

type BucketRemoteRemoveDisallowed

type BucketRemoteRemoveDisallowed GenericError

BucketRemoteRemoveDisallowed when replication configuration exists

func (BucketRemoteRemoveDisallowed) Error

type BucketRemoteTargetNotFound

type BucketRemoteTargetNotFound GenericError

BucketRemoteTargetNotFound remote target does not exist.

func (BucketRemoteTargetNotFound) Error

type BucketRemoteTargetNotVersioned

type BucketRemoteTargetNotVersioned GenericError

BucketRemoteTargetNotVersioned remote target does not have versioning enabled.

func (BucketRemoteTargetNotVersioned) Error

type BucketReplicationConfigNotFound

type BucketReplicationConfigNotFound GenericError

BucketReplicationConfigNotFound - no bucket replication config found

func (BucketReplicationConfigNotFound) Error

type BucketReplicationDestinationMissingLock

type BucketReplicationDestinationMissingLock GenericError

BucketReplicationDestinationMissingLock bucket does not have object lock enabled.

func (BucketReplicationDestinationMissingLock) Error

type BucketReplicationSourceNotVersioned

type BucketReplicationSourceNotVersioned GenericError

BucketReplicationSourceNotVersioned replication source does not have versioning enabled.

func (BucketReplicationSourceNotVersioned) Error

type BucketSSEConfigNotFound

type BucketSSEConfigNotFound GenericError

BucketSSEConfigNotFound - no bucket encryption found

func (BucketSSEConfigNotFound) Error

func (e BucketSSEConfigNotFound) Error() string

type BucketSSEConfigSys

type BucketSSEConfigSys struct{}

BucketSSEConfigSys - in-memory cache of bucket encryption config

func NewBucketSSEConfigSys

func NewBucketSSEConfigSys() *BucketSSEConfigSys

NewBucketSSEConfigSys - Creates an empty in-memory bucket encryption configuration cache

func (*BucketSSEConfigSys) Get

Get - gets bucket encryption config for the given bucket.

type BucketTaggingNotFound

type BucketTaggingNotFound GenericError

BucketTaggingNotFound - no bucket tags found

func (BucketTaggingNotFound) Error

func (e BucketTaggingNotFound) Error() string

type BucketTargetSys

type BucketTargetSys struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

BucketTargetSys represents bucket targets subsystem

func NewBucketTargetSys

func NewBucketTargetSys() *BucketTargetSys

NewBucketTargetSys - creates new replication system.

func (*BucketTargetSys) GetRemoteArnWithLabel

func (sys *BucketTargetSys) GetRemoteArnWithLabel(ctx context.Context, bucket, tgtLabel string) *madmin.ARN

GetRemoteArnWithLabel returns bucket target's ARN given its target label

func (*BucketTargetSys) GetRemoteLabelWithArn

func (sys *BucketTargetSys) GetRemoteLabelWithArn(ctx context.Context, bucket, arnStr string) string

GetRemoteLabelWithArn returns a bucket target's label given its ARN

func (*BucketTargetSys) GetRemoteTargetClient

func (sys *BucketTargetSys) GetRemoteTargetClient(ctx context.Context, arn string) *TargetClient

GetRemoteTargetClient returns minio-go client for replication target instance

func (*BucketTargetSys) GetRemoteTargetWithLabel

func (sys *BucketTargetSys) GetRemoteTargetWithLabel(ctx context.Context, bucket, targetLabel string) *madmin.BucketTarget

GetRemoteTargetWithLabel returns bucket target given a target label

func (*BucketTargetSys) Init

func (sys *BucketTargetSys) Init(ctx context.Context, buckets []BucketInfo, objAPI ObjectLayer) error

Init initializes the bucket targets subsystem for buckets which have targets configured.

func (*BucketTargetSys) ListBucketTargets

func (sys *BucketTargetSys) ListBucketTargets(ctx context.Context, bucket string) (*madmin.BucketTargets, error)

ListBucketTargets - gets list of bucket targets for this bucket.

func (*BucketTargetSys) ListTargets

func (sys *BucketTargetSys) ListTargets(ctx context.Context, bucket, arnType string) (targets []madmin.BucketTarget)

ListTargets lists bucket targets across tenant or for individual bucket, and returns results filtered by arnType

func (*BucketTargetSys) RemoveTarget

func (sys *BucketTargetSys) RemoveTarget(ctx context.Context, bucket, arnStr string) error

RemoveTarget - removes a remote bucket target for this source bucket.

func (*BucketTargetSys) SetTarget

func (sys *BucketTargetSys) SetTarget(ctx context.Context, bucket string, tgt *madmin.BucketTarget, update bool) error

SetTarget - sets a new minio-go client target for this bucket.

func (*BucketTargetSys) UpdateAllTargets

func (sys *BucketTargetSys) UpdateAllTargets(bucket string, tgts *madmin.BucketTargets)

UpdateAllTargets updates target to reflect metadata updates

type BucketUsageInfo

type BucketUsageInfo struct {
	Size                   uint64            `json:"size"`
	ReplicationPendingSize uint64            `json:"objectsPendingReplicationTotalSize"`
	ReplicationFailedSize  uint64            `json:"objectsFailedReplicationTotalSize"`
	ReplicatedSize         uint64            `json:"objectsReplicatedTotalSize"`
	ReplicaSize            uint64            `json:"objectReplicaTotalSize"`
	ObjectsCount           uint64            `json:"objectsCount"`
	ObjectSizesHistogram   map[string]uint64 `json:"objectsSizesHistogram"`
}

BucketUsageInfo - bucket usage info provides - total size of the bucket - total objects in a bucket - object size histogram per bucket

type BucketVersioningSys

type BucketVersioningSys struct{}

BucketVersioningSys - policy subsystem.

func NewBucketVersioningSys

func NewBucketVersioningSys() *BucketVersioningSys

NewBucketVersioningSys - creates new versioning system.

func (*BucketVersioningSys) Enabled

func (sys *BucketVersioningSys) Enabled(bucket string) bool

Enabled enabled versioning?

func (*BucketVersioningSys) Get

func (sys *BucketVersioningSys) Get(bucket string) (*versioning.Versioning, error)

Get returns stored bucket policy

func (*BucketVersioningSys) Reset

func (sys *BucketVersioningSys) Reset()

Reset BucketVersioningSys to initial state.

func (*BucketVersioningSys) Suspended

func (sys *BucketVersioningSys) Suspended(bucket string) bool

Suspended suspended versioning?

type CacheChecksumInfoV1

type CacheChecksumInfoV1 struct {
	Algorithm string `json:"algorithm"`
	Blocksize int64  `json:"blocksize"`
}

CacheChecksumInfoV1 - carries checksums of individual blocks on disk.

type CacheDiskStats

type CacheDiskStats struct {
	// used cache size
	UsageSize uint64
	// total cache disk capacity
	TotalCapacity uint64
	// indicates if usage is high or low, if high value is '1', if low its '0'
	UsageState int32
	// indicates the current usage percentage of this cache disk
	UsagePercent uint64
	Dir          string
}

CacheDiskStats represents cache disk statistics such as current disk usage and available.

func (*CacheDiskStats) GetUsageLevelString

func (c *CacheDiskStats) GetUsageLevelString() (u string)

GetUsageLevelString gets the string representation for the usage level.

type CacheObjectLayer

type CacheObjectLayer interface {
	// Object operations.
	GetObjectNInfo(ctx context.Context, bucket, object string, rs *HTTPRangeSpec, h http.Header, lockType LockType, opts ObjectOptions) (gr *GetObjectReader, err error)
	GetObjectInfo(ctx context.Context, bucket, object string, opts ObjectOptions) (objInfo ObjectInfo, err error)
	DeleteObject(ctx context.Context, bucket, object string, opts ObjectOptions) (ObjectInfo, error)
	DeleteObjects(ctx context.Context, bucket string, objects []ObjectToDelete, opts ObjectOptions) ([]DeletedObject, []error)
	PutObject(ctx context.Context, bucket, object string, data *PutObjReader, opts ObjectOptions) (objInfo ObjectInfo, err error)
	CopyObject(ctx context.Context, srcBucket, srcObject, destBucket, destObject string, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (objInfo ObjectInfo, err error)
	// Storage operations.
	StorageInfo(ctx context.Context) CacheStorageInfo
	CacheStats() *CacheStats
}

CacheObjectLayer implements primitives for cache object API layer.

type CacheStats

type CacheStats struct {
	BytesServed  uint64
	Hits         uint64
	Misses       uint64
	GetDiskStats func() []CacheDiskStats
}

CacheStats - represents bytes served from cache, cache hits and cache misses.

type CacheStatusType

type CacheStatusType string

CacheStatusType - whether the request was served from cache.

const (
	// CacheHit - whether object was served from cache.
	CacheHit CacheStatusType = "HIT"

	// CacheMiss - object served from backend.
	CacheMiss CacheStatusType = "MISS"
)

func (CacheStatusType) String

func (c CacheStatusType) String() string

type CacheStorageInfo

type CacheStorageInfo struct {
	Total uint64 // Total cache disk space.
	Free  uint64 // Free cache available space.
}

CacheStorageInfo - represents total, free capacity of underlying cache storage.

type CheckPreconditionFn

type CheckPreconditionFn func(o ObjectInfo) bool

CheckPreconditionFn returns true if precondition check failed.

type ChecksumAlgo

type ChecksumAlgo uint8

ChecksumAlgo defines common type of different checksum algorithms

const (
	HighwayHash ChecksumAlgo = 1
)

List of currently supported checksum algorithms

func (*ChecksumAlgo) DecodeMsg

func (z *ChecksumAlgo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (ChecksumAlgo) EncodeMsg

func (z ChecksumAlgo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (ChecksumAlgo) MarshalMsg

func (z ChecksumAlgo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (ChecksumAlgo) Msgsize

func (z ChecksumAlgo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*ChecksumAlgo) UnmarshalMsg

func (z *ChecksumAlgo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type ChecksumInfo

type ChecksumInfo struct {
	PartNumber int
	Algorithm  BitrotAlgorithm
	Hash       []byte
}

ChecksumInfo - carries checksums of individual scattered parts per disk.

func (*ChecksumInfo) DecodeMsg

func (z *ChecksumInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*ChecksumInfo) EncodeMsg

func (z *ChecksumInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (ChecksumInfo) MarshalJSON

func (c ChecksumInfo) MarshalJSON() ([]byte, error)

MarshalJSON marshals the ChecksumInfo struct

func (*ChecksumInfo) MarshalMsg

func (z *ChecksumInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*ChecksumInfo) Msgsize

func (z *ChecksumInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*ChecksumInfo) UnmarshalJSON

func (c *ChecksumInfo) UnmarshalJSON(data []byte) error

UnmarshalJSON - custom checksum info unmarshaller

func (*ChecksumInfo) UnmarshalMsg

func (z *ChecksumInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type ClientGrantsResult

type ClientGrantsResult struct {
	// The identifiers for the temporary security credentials that the operation
	// returns.
	AssumedRoleUser AssumedRoleUser `xml:",omitempty"`

	// The intended audience (also known as client ID) of the web identity token.
	// This is traditionally the client identifier issued to the application that
	// requested the client grants.
	Audience string `xml:",omitempty"`

	// The temporary security credentials, which include an access key ID, a secret
	// access key, and a security (or session) token.
	//
	// Note: The size of the security token that STS APIs return is not fixed. We
	// strongly recommend that you make no assumptions about the maximum size. As
	// of this writing, the typical size is less than 4096 bytes, but that can vary.
	// Also, future updates to AWS might require larger sizes.
	Credentials auth.Credentials `xml:",omitempty"`

	// A percentage value that indicates the size of the policy in packed form.
	// The service rejects any policy with a packed size greater than 100 percent,
	// which means the policy exceeded the allowed space.
	PackedPolicySize int `xml:",omitempty"`

	// The issuing authority of the web identity token presented. For OpenID Connect
	// ID tokens, this contains the value of the iss field. For OAuth 2.0 access tokens,
	// this contains the value of the ProviderId parameter that was passed in the
	// AssumeRoleWithClientGrants request.
	Provider string `xml:",omitempty"`

	// The unique user identifier that is returned by the identity provider.
	// This identifier is associated with the Token that was submitted
	// with the AssumeRoleWithClientGrants call. The identifier is typically unique to
	// the user and the application that acquired the ClientGrantsToken (pairwise identifier).
	// For OpenID Connect ID tokens, this field contains the value returned by the identity
	// provider as the token's sub (Subject) claim.
	SubjectFromToken string `xml:",omitempty"`
}

ClientGrantsResult - Contains the response to a successful AssumeRoleWithClientGrants request, including temporary credentials that can be used to make MinIO API requests.

type CommonPrefix

type CommonPrefix struct {
	Prefix string
}

CommonPrefix container for prefix response in ListObjectsResponse

type CompleteMultipartUpload

type CompleteMultipartUpload struct {
	Parts []CompletePart `xml:"Part"`
}

CompleteMultipartUpload - represents list of parts which are completed, this is sent by the client during CompleteMultipartUpload request.

type CompleteMultipartUploadResponse

type CompleteMultipartUploadResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ CompleteMultipartUploadResult" json:"-"`

	Location string
	Bucket   string
	Key      string
	ETag     string
}

CompleteMultipartUploadResponse container for completed multipart upload response

type CompletePart

type CompletePart struct {
	// Part number identifying the part. This is a positive integer between 1 and
	// 10,000
	PartNumber int

	// Entity tag returned when the part was uploaded.
	ETag string
}

CompletePart - represents the part that was completed, this is sent by the client during CompleteMultipartUpload request.

type CompletedParts

type CompletedParts []CompletePart

CompletedParts - is a collection satisfying sort.Interface.

func (CompletedParts) Len

func (a CompletedParts) Len() int

func (CompletedParts) Less

func (a CompletedParts) Less(i, j int) bool

func (CompletedParts) Swap

func (a CompletedParts) Swap(i, j int)

type ConfigDir

type ConfigDir struct {
	// contains filtered or unexported fields
}

ConfigDir - points to a user set directory.

func (*ConfigDir) Get

func (dir *ConfigDir) Get() string

Get - returns current directory.

type ConfigSys

type ConfigSys struct{}

ConfigSys - config system.

func NewConfigSys

func NewConfigSys() *ConfigSys

NewConfigSys - creates new config system object.

func (*ConfigSys) Init

func (sys *ConfigSys) Init(objAPI ObjectLayer) error

Init - initializes config system from config.json.

func (*ConfigSys) Load

func (sys *ConfigSys) Load(objAPI ObjectLayer) error

Load - load config.json.

type ConnStats

type ConnStats struct {
	// contains filtered or unexported fields
}

ConnStats - Network statistics Count total input/output transferred bytes during the server's life.

type ConsoleLogger

type ConsoleLogger struct {
	Enable bool `json:"enable"`
}

ConsoleLogger is introduced to workaround the dependency about logrus

type CopyObjectPartResponse

type CopyObjectPartResponse struct {
	XMLName      xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ CopyPartResult" json:"-"`
	LastModified string   // time string of format "2006-01-02T15:04:05.000Z"
	ETag         string   // md5sum of the copied object part.
}

CopyObjectPartResponse container returns ETag and LastModified of the successfully copied object

type CopyObjectResponse

type CopyObjectResponse struct {
	XMLName      xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ CopyObjectResult" json:"-"`
	LastModified string   // time string of format "2006-01-02T15:04:05.000Z"
	ETag         string   // md5sum of the copied object.
}

CopyObjectResponse container returns ETag and LastModified of the successfully copied object

type DataUsageInfo

type DataUsageInfo struct {
	// LastUpdate is the timestamp of when the data usage info was last updated.
	// This does not indicate a full scan.
	LastUpdate time.Time `json:"lastUpdate"`

	// Objects total count across all buckets
	ObjectsTotalCount uint64 `json:"objectsCount"`

	// Objects total size across all buckets
	ObjectsTotalSize uint64 `json:"objectsTotalSize"`

	// Total Size for objects that have not yet been replicated
	ReplicationPendingSize uint64 `json:"objectsPendingReplicationTotalSize"`

	// Total size for objects that have witness one or more failures and will be retried
	ReplicationFailedSize uint64 `json:"objectsFailedReplicationTotalSize"`

	// Total size for objects that have been replicated to destination
	ReplicatedSize uint64 `json:"objectsReplicatedTotalSize"`

	// Total size for objects that are replicas
	ReplicaSize uint64 `json:"objectsReplicaTotalSize"`

	// Total number of buckets in this cluster
	BucketsCount uint64 `json:"bucketsCount"`

	// Buckets usage info provides following information across all buckets
	// - total size of the bucket
	// - total objects in a bucket
	// - object size histogram per bucket
	BucketsUsage map[string]BucketUsageInfo `json:"bucketsUsageInfo"`

	// Deprecated kept here for backward compatibility reasons.
	BucketSizes map[string]uint64 `json:"bucketsSizes"`
}

DataUsageInfo represents data usage stats of the underlying Object API

type DecryptBlocksReader

type DecryptBlocksReader struct {
	// contains filtered or unexported fields
}

DecryptBlocksReader - decrypts multipart parts, while implementing a io.Reader compatible interface.

func (*DecryptBlocksReader) Read

func (d *DecryptBlocksReader) Read(p []byte) (int, error)

type DeleteError

type DeleteError struct {
	Code      string
	Message   string
	Key       string
	VersionID string `xml:"VersionId"`
}

DeleteError structure.

type DeleteMarkerMTime

type DeleteMarkerMTime struct {
	time.Time
}

DeleteMarkerMTime is an embedded type containing time.Time for XML marshal

func (DeleteMarkerMTime) MarshalXML

func (t DeleteMarkerMTime) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error

MarshalXML encodes expiration date if it is non-zero and encodes empty string otherwise

type DeleteObjectsRequest

type DeleteObjectsRequest struct {
	// Element to enable quiet mode for the request
	Quiet bool
	// List of objects to be deleted
	Objects []ObjectToDelete `xml:"Object"`
}

DeleteObjectsRequest - xml carrying the object key names which needs to be deleted.

type DeleteObjectsResponse

type DeleteObjectsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ DeleteResult" json:"-"`

	// Collection of all deleted objects
	DeletedObjects []DeletedObject `xml:"Deleted,omitempty"`

	// Collection of errors deleting certain objects.
	Errors []DeleteError `xml:"Error,omitempty"`
}

DeleteObjectsResponse container for multiple object deletes.

type DeleteVersionsErrsResp

type DeleteVersionsErrsResp struct {
	Errs []error
}

DeleteVersionsErrsResp - collection of delete errors for bulk version deletes

type DeletedObject

type DeletedObject struct {
	DeleteMarker          bool   `xml:"DeleteMarker,omitempty"`
	DeleteMarkerVersionID string `xml:"DeleteMarkerVersionId,omitempty"`
	ObjectName            string `xml:"Key,omitempty"`
	VersionID             string `xml:"VersionId,omitempty"`

	// MinIO extensions to support delete marker replication
	// Replication status of DeleteMarker
	DeleteMarkerReplicationStatus string `xml:"DeleteMarkerReplicationStatus,omitempty"`
	// MTime of DeleteMarker on source that needs to be propagated to replica
	DeleteMarkerMTime DeleteMarkerMTime `xml:"DeleteMarkerMTime,omitempty"`
	// Status of versioned delete (of object or DeleteMarker)
	VersionPurgeStatus VersionPurgeStatusType `xml:"VersionPurgeStatus,omitempty"`
	// PurgeTransitioned is nonempty if object is in transition tier
	PurgeTransitioned string `xml:"PurgeTransitioned,omitempty"`
}

DeletedObject objects deleted

type DeletedObjectInfo

type DeletedObjectInfo struct {
	// Name of the bucket.
	Bucket string

	// Name of the object.
	Name string

	// Date and time when the object was last modified.
	ModTime time.Time

	// Version ID of this object.
	VersionID string

	// Indicates the deleted marker is latest
	IsLatest bool
}

DeletedObjectInfo - container for list objects versions deleted objects.

type DeletedObjectVersionInfo

type DeletedObjectVersionInfo struct {
	DeletedObject
	Bucket string
}

DeletedObjectVersionInfo has info on deleted object

type DiscoveryDocResp

type DiscoveryDocResp struct {
	DiscoveryDoc openid.DiscoveryDoc
	UIVersion    string `json:"uiVersion"`
	ClientID     string `json:"clientId"`
}

DiscoveryDocResp - OpenID discovery document reply.

type DiskInfo

type DiskInfo struct {
	Total      uint64
	Free       uint64
	Used       uint64
	UsedInodes uint64
	FSType     string
	RootDisk   bool
	Healing    bool
	Endpoint   string
	MountPath  string
	ID         string
	Error      string // carries the error over the network
}

DiskInfo is an extended type which returns current disk usage per path. The above means that any added/deleted fields are incompatible.

func (*DiskInfo) DecodeMsg

func (z *DiskInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*DiskInfo) EncodeMsg

func (z *DiskInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (*DiskInfo) MarshalMsg

func (z *DiskInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*DiskInfo) Msgsize

func (z *DiskInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*DiskInfo) UnmarshalMsg

func (z *DiskInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type DownloadZipArgs

type DownloadZipArgs struct {
	Objects    []string `json:"objects"`    // can be files or sub-directories
	Prefix     string   `json:"prefix"`     // current directory in the browser-ui
	BucketName string   `json:"bucketname"` // bucket name.
}

DownloadZipArgs - Argument for downloading a bunch of files as a zip file. JSON will look like: '{"bucketname":"testbucket","prefix":"john/pics/","objects":["hawaii/","maldives/","sanjose.jpg"]}'

type Encryption

type Encryption struct {
	EncryptionType sse.SSEAlgorithm `xml:"EncryptionType"`
	KMSContext     string           `xml:"KMSContext,omitempty"`
	KMSKeyID       string           `xml:"KMSKeyId,omitempty"`
}

Encryption specifies encryption setting on restored bucket

type Endpoint

type Endpoint struct {
	*url.URL
	IsLocal bool
}

Endpoint - any type of endpoint.

func NewEndpoint

func NewEndpoint(arg string) (ep Endpoint, e error)

NewEndpoint - returns new endpoint based on given arguments.

func (Endpoint) HTTPS

func (endpoint Endpoint) HTTPS() bool

HTTPS - returns true if secure for URLEndpointType.

func (Endpoint) String

func (endpoint Endpoint) String() string

func (Endpoint) Type

func (endpoint Endpoint) Type() EndpointType

Type - returns type of endpoint.

func (*Endpoint) UpdateIsLocal

func (endpoint *Endpoint) UpdateIsLocal() (err error)

UpdateIsLocal - resolves the host and updates if it is local or not.

type EndpointServerPools

type EndpointServerPools []PoolEndpoints

EndpointServerPools - list of list of endpoints

func (*EndpointServerPools) Add

Add add pool endpoints

func (EndpointServerPools) FirstLocal

func (l EndpointServerPools) FirstLocal() bool

FirstLocal returns true if the first endpoint is local.

func (EndpointServerPools) GetLocalPoolIdx

func (l EndpointServerPools) GetLocalPoolIdx(ep Endpoint) int

GetLocalPoolIdx returns the pool which endpoint belongs to locally. if ep is remote this code will return -1 poolIndex

func (EndpointServerPools) HTTPS

func (l EndpointServerPools) HTTPS() bool

HTTPS - returns true if secure for URLEndpointType.

func (EndpointServerPools) Hostnames

func (l EndpointServerPools) Hostnames() []string

Hostnames - returns list of unique hostnames

func (EndpointServerPools) Localhost

func (l EndpointServerPools) Localhost() string

Localhost - returns the local hostname from list of endpoints

func (EndpointServerPools) NEndpoints

func (l EndpointServerPools) NEndpoints() (count int)

NEndpoints - returns all nodes count

type EndpointType

type EndpointType int

EndpointType - enum for endpoint type.

const (
	// PathEndpointType - path style endpoint type enum.
	PathEndpointType EndpointType = iota + 1

	// URLEndpointType - URL style endpoint type enum.
	URLEndpointType
)

type Endpoints

type Endpoints []Endpoint

Endpoints - list of same type of endpoint.

func NewEndpoints

func NewEndpoints(args ...string) (endpoints Endpoints, err error)

NewEndpoints - returns new endpoint list based on input args.

func (Endpoints) GetAllStrings

func (endpoints Endpoints) GetAllStrings() (all []string)

GetAllStrings - returns allstring of all endpoints

func (Endpoints) GetString

func (endpoints Endpoints) GetString(i int) string

GetString - returns endpoint string of i-th endpoint (0-based), and empty string for invalid indexes.

func (Endpoints) HTTPS

func (endpoints Endpoints) HTTPS() bool

HTTPS - returns true if secure for URLEndpointType.

func (Endpoints) UpdateIsLocal

func (endpoints Endpoints) UpdateIsLocal(foundPrevLocal bool) error

UpdateIsLocal - resolves the host and discovers the local host.

type Erasure

type Erasure struct {
	// contains filtered or unexported fields
}

Erasure - erasure encoding details.

func NewErasure

func NewErasure(ctx context.Context, dataBlocks, parityBlocks int, blockSize int64) (e Erasure, err error)

NewErasure creates a new ErasureStorage.

func (Erasure) Decode

func (e Erasure) Decode(ctx context.Context, writer io.Writer, readers []io.ReaderAt, offset, length, totalLength int64, prefer []bool) (written int64, derr error)

Decode reads from readers, reconstructs data if needed and writes the data to the writer. A set of preferred drives can be supplied. In that case they will be used and the data reconstructed.

func (*Erasure) DecodeDataAndParityBlocks

func (e *Erasure) DecodeDataAndParityBlocks(ctx context.Context, data [][]byte) error

DecodeDataAndParityBlocks decodes the given erasure-coded data and verifies it. It returns an error if the decoding failed.

func (*Erasure) DecodeDataBlocks

func (e *Erasure) DecodeDataBlocks(data [][]byte) error

DecodeDataBlocks decodes the given erasure-coded data. It only decodes the data blocks but does not verify them. It returns an error if the decoding failed.

func (*Erasure) Encode

func (e *Erasure) Encode(ctx context.Context, src io.Reader, writers []io.Writer, buf []byte, quorum int) (total int64, err error)

Encode reads from the reader, erasure-encodes the data and writes to the writers.

func (*Erasure) EncodeData

func (e *Erasure) EncodeData(ctx context.Context, data []byte) ([][]byte, error)

EncodeData encodes the given data and returns the erasure-coded data. It returns an error if the erasure coding failed.

func (Erasure) Heal

func (e Erasure) Heal(ctx context.Context, readers []io.ReaderAt, writers []io.Writer, size int64) error

Heal heals the shard files on non-nil writers. Note that the quorum passed is 1 as healing should continue even if it has been successful healing only one shard file.

func (*Erasure) ShardFileOffset

func (e *Erasure) ShardFileOffset(startOffset, length, totalLength int64) int64

ShardFileOffset - returns the effective offset where erasure reading begins.

func (*Erasure) ShardFileSize

func (e *Erasure) ShardFileSize(totalLength int64) int64

ShardFileSize - returns final erasure size from original size.

func (*Erasure) ShardSize

func (e *Erasure) ShardSize() int64

ShardSize - returns actual shared size from erasure blockSize.

type ErasureAlgo

type ErasureAlgo uint8

ErasureAlgo defines common type of different erasure algorithms

const (
	ReedSolomon ErasureAlgo = 1
)

List of currently supported erasure coding algorithms

func (*ErasureAlgo) DecodeMsg

func (z *ErasureAlgo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (ErasureAlgo) EncodeMsg

func (z ErasureAlgo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (ErasureAlgo) MarshalMsg

func (z ErasureAlgo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (ErasureAlgo) Msgsize

func (z ErasureAlgo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (ErasureAlgo) String

func (e ErasureAlgo) String() string

func (*ErasureAlgo) UnmarshalMsg

func (z *ErasureAlgo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type ErasureInfo

type ErasureInfo struct {
	// Algorithm is the string representation of erasure-coding-algorithm
	Algorithm string `json:"algorithm"`
	// DataBlocks is the number of data blocks for erasure-coding
	DataBlocks int `json:"data"`
	// ParityBlocks is the number of parity blocks for erasure-coding
	ParityBlocks int `json:"parity"`
	// BlockSize is the size of one erasure-coded block
	BlockSize int64 `json:"blockSize"`
	// Index is the index of the current disk
	Index int `json:"index"`
	// Distribution is the distribution of the data and parity blocks
	Distribution []int `json:"distribution"`
	// Checksums holds all bitrot checksums of all erasure encoded blocks
	Checksums []ChecksumInfo `json:"checksum,omitempty"`
}

ErasureInfo holds erasure coding and bitrot related information.

func (*ErasureInfo) AddChecksumInfo

func (e *ErasureInfo) AddChecksumInfo(ckSumInfo ChecksumInfo)

AddChecksumInfo adds a checksum of a part.

func (*ErasureInfo) DecodeMsg

func (z *ErasureInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*ErasureInfo) EncodeMsg

func (z *ErasureInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (ErasureInfo) GetChecksumInfo

func (e ErasureInfo) GetChecksumInfo(partNumber int) (ckSum ChecksumInfo)

GetChecksumInfo - get checksum of a part.

func (*ErasureInfo) MarshalMsg

func (z *ErasureInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*ErasureInfo) Msgsize

func (z *ErasureInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (ErasureInfo) ShardFileSize

func (e ErasureInfo) ShardFileSize(totalLength int64) int64

ShardFileSize - returns final erasure size from original size.

func (ErasureInfo) ShardSize

func (e ErasureInfo) ShardSize() int64

ShardSize - returns actual shared size from erasure blockSize.

func (*ErasureInfo) UnmarshalMsg

func (z *ErasureInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type FSChecksumInfoV1

type FSChecksumInfoV1 struct {
	Algorithm string
	Blocksize int64
	Hashes    [][]byte
}

FSChecksumInfoV1 - carries checksums of individual blocks on disk.

func (FSChecksumInfoV1) MarshalJSON

func (c FSChecksumInfoV1) MarshalJSON() ([]byte, error)

MarshalJSON marshals the FSChecksumInfoV1 struct

func (*FSChecksumInfoV1) UnmarshalJSON

func (c *FSChecksumInfoV1) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals the the given data into the FSChecksumInfoV1 struct

type FSObjects

type FSObjects struct {
	GatewayUnsupported
	// contains filtered or unexported fields
}

FSObjects - Implements fs object layer.

func (*FSObjects) AbortMultipartUpload

func (fs *FSObjects) AbortMultipartUpload(ctx context.Context, bucket, object, uploadID string, opts ObjectOptions) error

AbortMultipartUpload - aborts an ongoing multipart operation signified by the input uploadID. This is an atomic operation doesn't require clients to initiate multiple such requests.

All parts are purged from all disks and reference to the uploadID would be removed from the system, rollback is not possible on this operation.

Implements S3 compatible Abort multipart API, slight difference is that this is an atomic idempotent operation. Subsequent calls have no affect and further requests to the same uploadID would not be honored.

func (*FSObjects) BackendInfo

func (fs *FSObjects) BackendInfo() madmin.BackendInfo

BackendInfo - returns backend information

func (*FSObjects) CompleteMultipartUpload

func (fs *FSObjects) CompleteMultipartUpload(ctx context.Context, bucket string, object string, uploadID string, parts []CompletePart, opts ObjectOptions) (oi ObjectInfo, e error)

CompleteMultipartUpload - completes an ongoing multipart transaction after receiving all the parts indicated by the client. Returns an md5sum calculated by concatenating all the individual md5sums of all the parts.

Implements S3 compatible Complete multipart API.

func (*FSObjects) CopyObject

func (fs *FSObjects) CopyObject(ctx context.Context, srcBucket, srcObject, dstBucket, dstObject string, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (oi ObjectInfo, err error)

CopyObject - copy object source object to destination object. if source object and destination object are same we only update metadata.

func (*FSObjects) CopyObjectPart

func (fs *FSObjects) CopyObjectPart(ctx context.Context, srcBucket, srcObject, dstBucket, dstObject, uploadID string, partID int,
	startOffset int64, length int64, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (pi PartInfo, e error)

CopyObjectPart - similar to PutObjectPart but reads data from an existing object. Internally incoming data is written to '.minio.sys/tmp' location and safely renamed to '.minio.sys/multipart' for reach parts.

func (*FSObjects) DeleteBucket

func (fs *FSObjects) DeleteBucket(ctx context.Context, bucket string, forceDelete bool) error

DeleteBucket - delete a bucket and all the metadata associated with the bucket including pending multipart, object metadata.

func (*FSObjects) DeleteBucketPolicy

func (fs *FSObjects) DeleteBucketPolicy(ctx context.Context, bucket string) error

DeleteBucketPolicy - only needed for FS in NAS mode

func (*FSObjects) DeleteObject

func (fs *FSObjects) DeleteObject(ctx context.Context, bucket, object string, opts ObjectOptions) (objInfo ObjectInfo, err error)

DeleteObject - deletes an object from a bucket, this operation is destructive and there are no rollbacks supported.

func (*FSObjects) DeleteObjectTags

func (fs *FSObjects) DeleteObjectTags(ctx context.Context, bucket, object string, opts ObjectOptions) (ObjectInfo, error)

DeleteObjectTags - delete object tags from an existing object

func (*FSObjects) DeleteObjects

func (fs *FSObjects) DeleteObjects(ctx context.Context, bucket string, objects []ObjectToDelete, opts ObjectOptions) ([]DeletedObject, []error)

DeleteObjects - deletes an object from a bucket, this operation is destructive and there are no rollbacks supported.

func (*FSObjects) GetBucketInfo

func (fs *FSObjects) GetBucketInfo(ctx context.Context, bucket string) (bi BucketInfo, e error)

GetBucketInfo - fetch bucket metadata info.

func (*FSObjects) GetBucketPolicy

func (fs *FSObjects) GetBucketPolicy(ctx context.Context, bucket string) (*policy.Policy, error)

GetBucketPolicy - only needed for FS in NAS mode

func (*FSObjects) GetMetrics

func (fs *FSObjects) GetMetrics(ctx context.Context) (*BackendMetrics, error)

GetMetrics - no op

func (*FSObjects) GetMultipartInfo

func (fs *FSObjects) GetMultipartInfo(ctx context.Context, bucket, object, uploadID string, opts ObjectOptions) (MultipartInfo, error)

GetMultipartInfo returns multipart metadata uploaded during newMultipartUpload, used by callers to verify object states - encrypted - compressed

func (*FSObjects) GetObjectInfo

func (fs *FSObjects) GetObjectInfo(ctx context.Context, bucket, object string, opts ObjectOptions) (oi ObjectInfo, e error)

GetObjectInfo - reads object metadata and replies back ObjectInfo.

func (*FSObjects) GetObjectNInfo

func (fs *FSObjects) GetObjectNInfo(ctx context.Context, bucket, object string, rs *HTTPRangeSpec, h http.Header, lockType LockType, opts ObjectOptions) (gr *GetObjectReader, err error)

GetObjectNInfo - returns object info and a reader for object content.

func (*FSObjects) GetObjectTags

func (fs *FSObjects) GetObjectTags(ctx context.Context, bucket, object string, opts ObjectOptions) (*tags.Tags, error)

GetObjectTags - get object tags from an existing object

func (*FSObjects) HealBucket

func (fs *FSObjects) HealBucket(ctx context.Context, bucket string, opts madmin.HealOpts) (madmin.HealResultItem,
	error)

HealBucket - no-op for fs, Valid only for Erasure.

func (*FSObjects) HealFormat

func (fs *FSObjects) HealFormat(ctx context.Context, dryRun bool) (madmin.HealResultItem, error)

HealFormat - no-op for fs, Valid only for Erasure.

func (*FSObjects) HealObject

func (fs *FSObjects) HealObject(ctx context.Context, bucket, object, versionID string, opts madmin.HealOpts) (
	res madmin.HealResultItem, err error)

HealObject - no-op for fs. Valid only for Erasure.

func (*FSObjects) HealObjects

func (fs *FSObjects) HealObjects(ctx context.Context, bucket, prefix string, opts madmin.HealOpts, fn HealObjectFn) (e error)

HealObjects - no-op for fs. Valid only for Erasure.

func (*FSObjects) Health

func (fs *FSObjects) Health(ctx context.Context, opts HealthOptions) HealthResult

Health returns health of the object layer

func (*FSObjects) IsCompressionSupported

func (fs *FSObjects) IsCompressionSupported() bool

IsCompressionSupported returns whether compression is applicable for this layer.

func (*FSObjects) IsEncryptionSupported

func (fs *FSObjects) IsEncryptionSupported() bool

IsEncryptionSupported returns whether server side encryption is implemented for this layer.

func (*FSObjects) IsListenSupported

func (fs *FSObjects) IsListenSupported() bool

IsListenSupported returns whether listen bucket notification is applicable for this layer.

func (*FSObjects) IsNotificationSupported

func (fs *FSObjects) IsNotificationSupported() bool

IsNotificationSupported returns whether bucket notification is applicable for this layer.

func (*FSObjects) IsTaggingSupported

func (fs *FSObjects) IsTaggingSupported() bool

IsTaggingSupported returns true, object tagging is supported in fs object layer.

func (*FSObjects) ListBuckets

func (fs *FSObjects) ListBuckets(ctx context.Context) ([]BucketInfo, error)

ListBuckets - list all s3 compatible buckets (directories) at fsPath.

func (*FSObjects) ListMultipartUploads

func (fs *FSObjects) ListMultipartUploads(ctx context.Context, bucket, object, keyMarker, uploadIDMarker, delimiter string, maxUploads int) (result ListMultipartsInfo, e error)

ListMultipartUploads - lists all the uploadIDs for the specified object. We do not support prefix based listing.

func (*FSObjects) ListObjectParts

func (fs *FSObjects) ListObjectParts(ctx context.Context, bucket, object, uploadID string, partNumberMarker, maxParts int, opts ObjectOptions) (result ListPartsInfo, e error)

ListObjectParts - lists all previously uploaded parts for a given object and uploadID. Takes additional input of part-number-marker to indicate where the listing should begin from.

Implements S3 compatible ListObjectParts API. The resulting ListPartsInfo structure is unmarshalled directly into XML and replied back to the client.

func (*FSObjects) ListObjectVersions

func (fs *FSObjects) ListObjectVersions(ctx context.Context, bucket, prefix, marker, versionMarker, delimiter string, maxKeys int) (loi ListObjectVersionsInfo, e error)

ListObjectVersions not implemented for FS mode.

func (*FSObjects) ListObjects

func (fs *FSObjects) ListObjects(ctx context.Context, bucket, prefix, marker, delimiter string, maxKeys int) (loi ListObjectsInfo, e error)

ListObjects - list all objects at prefix upto maxKeys., optionally delimited by '/'. Maintains the list pool state for future re-entrant list requests.

func (*FSObjects) ListObjectsV2

func (fs *FSObjects) ListObjectsV2(ctx context.Context, bucket, prefix, continuationToken, delimiter string, maxKeys int, fetchOwner bool, startAfter string) (result ListObjectsV2Info, err error)

ListObjectsV2 lists all blobs in bucket filtered by prefix

func (*FSObjects) LocalStorageInfo

func (fs *FSObjects) LocalStorageInfo(ctx context.Context) (StorageInfo, []error)

LocalStorageInfo - returns underlying storage statistics.

func (*FSObjects) MakeBucketWithLocation

func (fs *FSObjects) MakeBucketWithLocation(ctx context.Context, bucket string, opts BucketOptions) error

MakeBucketWithLocation - create a new bucket, returns if it already exists.

func (*FSObjects) NSScanner

func (fs *FSObjects) NSScanner(ctx context.Context, bf *bloomFilter, updates chan<- DataUsageInfo) error

NSScanner returns data usage stats of the current FS deployment

func (*FSObjects) NewMultipartUpload

func (fs *FSObjects) NewMultipartUpload(ctx context.Context, bucket, object string, opts ObjectOptions) (string, error)

NewMultipartUpload - initialize a new multipart upload, returns a unique id. The unique id returned here is of UUID form, for each subsequent request each UUID is unique.

Implements S3 compatible initiate multipart API.

func (*FSObjects) NewNSLock

func (fs *FSObjects) NewNSLock(bucket string, objects ...string) RWLocker

NewNSLock - initialize a new namespace RWLocker instance.

func (*FSObjects) PutObject

func (fs *FSObjects) PutObject(ctx context.Context, bucket string, object string, r *PutObjReader, opts ObjectOptions) (objInfo ObjectInfo, err error)

PutObject - creates an object upon reading from the input stream until EOF, writes data directly to configured filesystem path. Additionally writes `fs.json` which carries the necessary metadata for future object operations.

func (*FSObjects) PutObjectPart

func (fs *FSObjects) PutObjectPart(ctx context.Context, bucket, object, uploadID string, partID int, r *PutObjReader, opts ObjectOptions) (pi PartInfo, e error)

PutObjectPart - reads incoming data until EOF for the part file on an ongoing multipart transaction. Internally incoming data is written to '.minio.sys/tmp' location and safely renamed to '.minio.sys/multipart' for reach parts.

func (*FSObjects) PutObjectTags

func (fs *FSObjects) PutObjectTags(ctx context.Context, bucket, object string, tags string, opts ObjectOptions) (ObjectInfo, error)

PutObjectTags - replace or add tags to an existing object

func (*FSObjects) ReadHealth

func (fs *FSObjects) ReadHealth(ctx context.Context) bool

ReadHealth returns "read" health of the object layer

func (*FSObjects) SetBucketPolicy

func (fs *FSObjects) SetBucketPolicy(ctx context.Context, bucket string, p *policy.Policy) error

SetBucketPolicy - only needed for FS in NAS mode

func (*FSObjects) SetDriveCounts

func (fs *FSObjects) SetDriveCounts() []int

SetDriveCounts no-op

func (*FSObjects) Shutdown

func (fs *FSObjects) Shutdown(ctx context.Context) error

Shutdown - should be called when process shuts down.

func (*FSObjects) StorageInfo

func (fs *FSObjects) StorageInfo(ctx context.Context) (StorageInfo, []error)

StorageInfo - returns underlying storage statistics.

func (*FSObjects) Walk

func (fs *FSObjects) Walk(ctx context.Context, bucket, prefix string, results chan<- ObjectInfo, opts ObjectOptions) error

Walk a bucket, optionally prefix recursively, until we have returned all the content to objectInfo channel, it is callers responsibility to allocate a receive channel for ObjectInfo, upon any unhandled error walker returns error. Optionally if context.Done() is received then Walk() stops the walker.

type FileInfo

type FileInfo struct {
	// Name of the volume.
	Volume string

	// Name of the file.
	Name string

	// Version of the file.
	VersionID string

	// Indicates if the version is the latest
	IsLatest bool

	// Deleted is set when this FileInfo represents
	// a deleted marker for a versioned bucket.
	Deleted bool

	// TransitionStatus is set to Pending/Complete for transitioned
	// entries based on state of transition
	TransitionStatus string

	// DataDir of the file
	DataDir string

	// Indicates if this object is still in V1 format.
	XLV1 bool

	// Date and time when the file was last modified, if Deleted
	// is 'true' this value represents when while was deleted.
	ModTime time.Time

	// Total file size.
	Size int64

	// File mode bits.
	Mode uint32

	// File metadata
	Metadata map[string]string

	// All the parts per object.
	Parts []ObjectPartInfo

	// Erasure info for all objects.
	Erasure ErasureInfo

	// DeleteMarkerReplicationStatus is set when this FileInfo represents
	// replication on a DeleteMarker
	MarkDeleted                   bool // mark this version as deleted
	DeleteMarkerReplicationStatus string
	VersionPurgeStatus            VersionPurgeStatusType

	Data []byte // optionally carries object data

	NumVersions      int
	SuccessorModTime time.Time
}

FileInfo - represents file stat information. The above means that any added/deleted fields are incompatible.

func (*FileInfo) AddObjectPart

func (fi *FileInfo) AddObjectPart(partNumber int, partETag string, partSize int64, actualSize int64)

AddObjectPart - add a new object part in order.

func (*FileInfo) DecodeMsg

func (z *FileInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*FileInfo) EncodeMsg

func (z *FileInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (FileInfo) IsValid

func (fi FileInfo) IsValid() bool

IsValid - tells if erasure info fields are valid.

func (*FileInfo) MarshalMsg

func (z *FileInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*FileInfo) Msgsize

func (z *FileInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (FileInfo) ObjectToPartOffset

func (fi FileInfo) ObjectToPartOffset(ctx context.Context, offset int64) (partIndex int, partOffset int64, err error)

ObjectToPartOffset - translate offset of an object to offset of its individual part.

func (FileInfo) ToObjectInfo

func (fi FileInfo) ToObjectInfo(bucket, object string) ObjectInfo

ToObjectInfo - Converts metadata to object info.

func (*FileInfo) UnmarshalMsg

func (z *FileInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type FileInfoVersions

type FileInfoVersions struct {
	// Name of the volume.
	Volume string

	// Name of the file.
	Name string

	IsEmptyDir bool

	// Represents the latest mod time of the
	// latest version.
	LatestModTime time.Time

	Versions []FileInfo
}

FileInfoVersions represent a list of versions for a given file.

func (*FileInfoVersions) DecodeMsg

func (z *FileInfoVersions) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*FileInfoVersions) EncodeMsg

func (z *FileInfoVersions) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (*FileInfoVersions) MarshalMsg

func (z *FileInfoVersions) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*FileInfoVersions) Msgsize

func (z *FileInfoVersions) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*FileInfoVersions) UnmarshalMsg

func (z *FileInfoVersions) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type FileLogger

type FileLogger struct {
	Enable   bool   `json:"enable"`
	Filename string `json:"filename"`
}

FileLogger is introduced to workaround the dependency about logrus

type FilesInfo

type FilesInfo struct {
	Files       []FileInfo
	IsTruncated bool
}

FilesInfo represent a list of files, additionally indicates if the list is last.

func (*FilesInfo) DecodeMsg

func (z *FilesInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*FilesInfo) EncodeMsg

func (z *FilesInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (*FilesInfo) MarshalMsg

func (z *FilesInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*FilesInfo) Msgsize

func (z *FilesInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*FilesInfo) UnmarshalMsg

func (z *FilesInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type FilesInfoVersions

type FilesInfoVersions struct {
	FilesVersions []FileInfoVersions
	IsTruncated   bool
}

FilesInfoVersions represents a list of file versions, additionally indicates if the list is last.

func (*FilesInfoVersions) DecodeMsg

func (z *FilesInfoVersions) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*FilesInfoVersions) EncodeMsg

func (z *FilesInfoVersions) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (*FilesInfoVersions) MarshalMsg

func (z *FilesInfoVersions) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*FilesInfoVersions) Msgsize

func (z *FilesInfoVersions) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*FilesInfoVersions) UnmarshalMsg

func (z *FilesInfoVersions) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type Gateway

type Gateway interface {
	// Name returns the unique name of the gateway.
	Name() string

	// NewGatewayLayer returns a new  ObjectLayer.
	NewGatewayLayer(creds auth.Credentials) (ObjectLayer, error)

	// Returns true if gateway is ready for production.
	Production() bool
}

Gateway represents a gateway backend.

type GatewayLocker

type GatewayLocker struct {
	ObjectLayer
	// contains filtered or unexported fields
}

GatewayLocker implements custom NewNSLock implementation

func (*GatewayLocker) NewNSLock

func (l *GatewayLocker) NewNSLock(bucket string, objects ...string) RWLocker

NewNSLock - implements gateway level locker

func (*GatewayLocker) Walk

func (l *GatewayLocker) Walk(ctx context.Context, bucket, prefix string, results chan<- ObjectInfo, opts ObjectOptions) error

Walk - implements common gateway level Walker, to walk on all objects recursively at a prefix

type GatewayUnsupported

type GatewayUnsupported struct{}

GatewayUnsupported list of unsupported call stubs for gateway.

func (GatewayUnsupported) AbortMultipartUpload

func (a GatewayUnsupported) AbortMultipartUpload(ctx context.Context, bucket string, object string, uploadID string, opts ObjectOptions) error

AbortMultipartUpload aborts a ongoing multipart upload

func (GatewayUnsupported) BackendInfo

func (a GatewayUnsupported) BackendInfo() madmin.BackendInfo

BackendInfo returns the underlying backend information

func (GatewayUnsupported) CompleteMultipartUpload

func (a GatewayUnsupported) CompleteMultipartUpload(ctx context.Context, bucket string, object string, uploadID string, uploadedParts []CompletePart, opts ObjectOptions) (oi ObjectInfo, err error)

CompleteMultipartUpload completes ongoing multipart upload and finalizes object

func (GatewayUnsupported) CopyObject

func (a GatewayUnsupported) CopyObject(ctx context.Context, srcBucket string, srcObject string, destBucket string, destObject string,
	srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (objInfo ObjectInfo, err error)

CopyObject copies a blob from source container to destination container.

func (GatewayUnsupported) CopyObjectPart

func (a GatewayUnsupported) CopyObjectPart(ctx context.Context, srcBucket, srcObject, destBucket, destObject, uploadID string, partID int, startOffset, length int64, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (pi PartInfo, err error)

CopyObjectPart copy part of object to uploadID for another object

func (GatewayUnsupported) DeleteBucketLifecycle

func (a GatewayUnsupported) DeleteBucketLifecycle(ctx context.Context, bucket string) error

DeleteBucketLifecycle deletes all lifecycle policies on a bucket

func (GatewayUnsupported) DeleteBucketPolicy

func (a GatewayUnsupported) DeleteBucketPolicy(ctx context.Context, bucket string) error

DeleteBucketPolicy deletes all policies on bucket

func (GatewayUnsupported) DeleteBucketSSEConfig

func (a GatewayUnsupported) DeleteBucketSSEConfig(ctx context.Context, bucket string) error

DeleteBucketSSEConfig deletes bucket encryption config on a bucket

func (GatewayUnsupported) DeleteObjectTags

func (a GatewayUnsupported) DeleteObjectTags(ctx context.Context, bucket, object string, opts ObjectOptions) (ObjectInfo, error)

DeleteObjectTags - not implemented.

func (GatewayUnsupported) GetBucketLifecycle

func (a GatewayUnsupported) GetBucketLifecycle(ctx context.Context, bucket string) (*lifecycle.Lifecycle, error)

GetBucketLifecycle retrieves lifecycle configuration of a bucket.

func (GatewayUnsupported) GetBucketPolicy

func (a GatewayUnsupported) GetBucketPolicy(ctx context.Context, bucket string) (bucketPolicy *policy.Policy, err error)

GetBucketPolicy will get policy on bucket

func (GatewayUnsupported) GetBucketSSEConfig

func (a GatewayUnsupported) GetBucketSSEConfig(ctx context.Context, bucket string) (*bucketsse.BucketSSEConfig, error)

GetBucketSSEConfig returns bucket encryption config on a bucket

func (GatewayUnsupported) GetBucketVersioning

func (a GatewayUnsupported) GetBucketVersioning(ctx context.Context, bucket string) (*versioning.Versioning, error)

GetBucketVersioning retrieves versioning configuration of a bucket.

func (GatewayUnsupported) GetMetrics

func (a GatewayUnsupported) GetMetrics(ctx context.Context) (*BackendMetrics, error)

GetMetrics - no op

func (GatewayUnsupported) GetMultipartInfo

func (a GatewayUnsupported) GetMultipartInfo(ctx context.Context, bucket string, object string, uploadID string, opts ObjectOptions) (MultipartInfo, error)

GetMultipartInfo returns metadata associated with the uploadId

func (GatewayUnsupported) GetObjectTags

func (a GatewayUnsupported) GetObjectTags(ctx context.Context, bucket, object string, opts ObjectOptions) (*tags.Tags, error)

GetObjectTags - not implemented.

func (GatewayUnsupported) HealBucket

func (a GatewayUnsupported) HealBucket(ctx context.Context, bucket string, opts madmin.HealOpts) (madmin.HealResultItem, error)

HealBucket - Not implemented stub

func (GatewayUnsupported) HealFormat

func (a GatewayUnsupported) HealFormat(ctx context.Context, dryRun bool) (madmin.HealResultItem, error)

HealFormat - Not implemented stub

func (GatewayUnsupported) HealObject

func (a GatewayUnsupported) HealObject(ctx context.Context, bucket, object, versionID string, opts madmin.HealOpts) (h madmin.HealResultItem, e error)

HealObject - Not implemented stub

func (GatewayUnsupported) HealObjects

func (a GatewayUnsupported) HealObjects(ctx context.Context, bucket, prefix string, opts madmin.HealOpts, fn HealObjectFn) (e error)

HealObjects - Not implemented stub

func (GatewayUnsupported) Health

Health - No Op.

func (GatewayUnsupported) IsCompressionSupported

func (a GatewayUnsupported) IsCompressionSupported() bool

IsCompressionSupported returns whether compression is applicable for this layer.

func (GatewayUnsupported) IsEncryptionSupported

func (a GatewayUnsupported) IsEncryptionSupported() bool

IsEncryptionSupported returns whether server side encryption is implemented for this layer.

func (GatewayUnsupported) IsListenSupported

func (a GatewayUnsupported) IsListenSupported() bool

IsListenSupported returns whether listen bucket notification is applicable for this layer.

func (GatewayUnsupported) IsNotificationSupported

func (a GatewayUnsupported) IsNotificationSupported() bool

IsNotificationSupported returns whether bucket notification is applicable for this layer.

func (GatewayUnsupported) IsTaggingSupported

func (a GatewayUnsupported) IsTaggingSupported() bool

IsTaggingSupported returns whether object tagging is supported or not for this layer.

func (GatewayUnsupported) ListMultipartUploads

func (a GatewayUnsupported) ListMultipartUploads(ctx context.Context, bucket string, prefix string, keyMarker string, uploadIDMarker string, delimiter string, maxUploads int) (lmi ListMultipartsInfo, err error)

ListMultipartUploads lists all multipart uploads.

func (GatewayUnsupported) ListObjectParts

func (a GatewayUnsupported) ListObjectParts(ctx context.Context, bucket string, object string, uploadID string, partNumberMarker int, maxParts int, opts ObjectOptions) (lpi ListPartsInfo, err error)

ListObjectParts returns all object parts for specified object in specified bucket

func (GatewayUnsupported) ListObjectVersions

func (a GatewayUnsupported) ListObjectVersions(ctx context.Context, bucket, prefix, marker, versionMarker, delimiter string, maxKeys int) (ListObjectVersionsInfo, error)

ListObjectVersions returns all object parts for specified object in specified bucket

func (GatewayUnsupported) ListObjectsV2

func (a GatewayUnsupported) ListObjectsV2(ctx context.Context, bucket, prefix, continuationToken, delimiter string, maxKeys int, fetchOwner bool, startAfter string) (result ListObjectsV2Info, err error)

ListObjectsV2 - Not implemented stub

func (GatewayUnsupported) LocalStorageInfo

func (a GatewayUnsupported) LocalStorageInfo(ctx context.Context) (StorageInfo, []error)

LocalStorageInfo returns the local disks information, mainly used in prometheus - for gateway this just a no-op

func (GatewayUnsupported) NSScanner

func (a GatewayUnsupported) NSScanner(ctx context.Context, bf *bloomFilter, updates chan<- DataUsageInfo) error

NSScanner - scanner is not implemented for gateway

func (GatewayUnsupported) NewMultipartUpload

func (a GatewayUnsupported) NewMultipartUpload(ctx context.Context, bucket string, object string, opts ObjectOptions) (uploadID string, err error)

NewMultipartUpload upload object in multiple parts

func (GatewayUnsupported) NewNSLock

func (a GatewayUnsupported) NewNSLock(bucket string, objects ...string) RWLocker

NewNSLock is a dummy stub for gateway.

func (GatewayUnsupported) PutObjectPart

func (a GatewayUnsupported) PutObjectPart(ctx context.Context, bucket string, object string, uploadID string, partID int, data *PutObjReader, opts ObjectOptions) (pi PartInfo, err error)

PutObjectPart puts a part of object in bucket

func (GatewayUnsupported) PutObjectTags

func (a GatewayUnsupported) PutObjectTags(ctx context.Context, bucket, object string, tags string, opts ObjectOptions) (ObjectInfo, error)

PutObjectTags - not implemented.

func (GatewayUnsupported) ReadHealth

func (a GatewayUnsupported) ReadHealth(_ context.Context) bool

ReadHealth - No Op.

func (GatewayUnsupported) SetBucketLifecycle

func (a GatewayUnsupported) SetBucketLifecycle(ctx context.Context, bucket string, lifecycle *lifecycle.Lifecycle) error

SetBucketLifecycle enables lifecycle policies on a bucket.

func (GatewayUnsupported) SetBucketPolicy

func (a GatewayUnsupported) SetBucketPolicy(ctx context.Context, bucket string, bucketPolicy *policy.Policy) error

SetBucketPolicy sets policy on bucket

func (GatewayUnsupported) SetBucketSSEConfig

func (a GatewayUnsupported) SetBucketSSEConfig(ctx context.Context, bucket string, config *bucketsse.BucketSSEConfig) error

SetBucketSSEConfig sets bucket encryption config on a bucket

func (GatewayUnsupported) SetBucketVersioning

func (a GatewayUnsupported) SetBucketVersioning(ctx context.Context, bucket string, v *versioning.Versioning) error

SetBucketVersioning enables versioning on a bucket.

func (GatewayUnsupported) SetDriveCounts

func (a GatewayUnsupported) SetDriveCounts() []int

SetDriveCounts no-op

func (GatewayUnsupported) Walk

func (a GatewayUnsupported) Walk(ctx context.Context, bucket, prefix string, results chan<- ObjectInfo, opts ObjectOptions) error

Walk - Not implemented stub

type GaugeMetricType

type GaugeMetricType string

GaugeMetricType for the types of metrics supported

type GenericError

type GenericError struct {
	Bucket    string
	Object    string
	VersionID string
	Err       error
}

GenericError - generic object layer error.

func (GenericError) Unwrap

func (e GenericError) Unwrap() error

Unwrap the error to its underlying error.

type GetBucketPolicyArgs

type GetBucketPolicyArgs struct {
	BucketName string `json:"bucketName"`
	Prefix     string `json:"prefix"`
}

GetBucketPolicyArgs - get bucket policy args.

func (*GetBucketPolicyArgs) ToKeyValue

func (args *GetBucketPolicyArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for GetBucketPolicyArgs

type GetBucketPolicyRep

type GetBucketPolicyRep struct {
	UIVersion string                     `json:"uiVersion"`
	Policy    miniogopolicy.BucketPolicy `json:"policy"`
}

GetBucketPolicyRep - get bucket policy reply.

type GetObjectInfoFn

type GetObjectInfoFn func(ctx context.Context, bucket, object string, opts ObjectOptions) (ObjectInfo, error)

GetObjectInfoFn is the signature of GetObjectInfo function.

type GetObjectReader

type GetObjectReader struct {
	ObjInfo ObjectInfo
	// contains filtered or unexported fields
}

GetObjectReader is a type that wraps a reader with a lock to provide a ReadCloser interface that unlocks on Close()

func NewGetObjectReaderFromReader

func NewGetObjectReaderFromReader(r io.Reader, oi ObjectInfo, opts ObjectOptions, cleanupFns ...func()) (*GetObjectReader, error)

NewGetObjectReaderFromReader sets up a GetObjectReader with a given reader. This ignores any object properties.

func (*GetObjectReader) Close

func (g *GetObjectReader) Close() error

Close - calls the cleanup actions in reverse order

func (*GetObjectReader) Read

func (g *GetObjectReader) Read(p []byte) (n int, err error)

Read - to implement Reader interface.

type GroupInfo

type GroupInfo struct {
	Version int      `json:"version"`
	Status  string   `json:"status"`
	Members []string `json:"members"`
}

GroupInfo contains info about a group

type HTTPAPIStats

type HTTPAPIStats struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

HTTPAPIStats holds statistics information about a given API in the requests.

func (*HTTPAPIStats) Dec

func (stats *HTTPAPIStats) Dec(api string)

Dec increments the api stats counter.

func (*HTTPAPIStats) Inc

func (stats *HTTPAPIStats) Inc(api string)

Inc increments the api stats counter.

func (*HTTPAPIStats) Load

func (stats *HTTPAPIStats) Load() map[string]int

Load returns the recorded stats.

type HTTPConsoleLoggerSys

type HTTPConsoleLoggerSys struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

HTTPConsoleLoggerSys holds global console logger state

func NewConsoleLogger

func NewConsoleLogger(ctx context.Context) *HTTPConsoleLoggerSys

NewConsoleLogger - creates new HTTPConsoleLoggerSys with all nodes subscribed to the console logging pub sub system

func (*HTTPConsoleLoggerSys) Content

func (sys *HTTPConsoleLoggerSys) Content() (logs []log.Entry)

Content returns the console stdout log

func (*HTTPConsoleLoggerSys) Endpoint

func (sys *HTTPConsoleLoggerSys) Endpoint() string

Endpoint - dummy function for interface compatibility

func (*HTTPConsoleLoggerSys) HasLogListeners

func (sys *HTTPConsoleLoggerSys) HasLogListeners() bool

HasLogListeners returns true if console log listeners are registered for this node or peers

func (*HTTPConsoleLoggerSys) Send

func (sys *HTTPConsoleLoggerSys) Send(e interface{}, logKind string) error

Send log message 'e' to console and publish to console log pubsub system

func (*HTTPConsoleLoggerSys) SetNodeName

func (sys *HTTPConsoleLoggerSys) SetNodeName(endpointServerPools EndpointServerPools)

SetNodeName - sets the node name if any after distributed setup has initialized

func (*HTTPConsoleLoggerSys) String

func (sys *HTTPConsoleLoggerSys) String() string

String - stringer function for interface compatibility

func (*HTTPConsoleLoggerSys) Subscribe

func (sys *HTTPConsoleLoggerSys) Subscribe(subCh chan interface{}, doneCh <-chan struct{}, node string, last int, logKind string, filter func(entry interface{}) bool)

Subscribe starts console logging for this node.

func (*HTTPConsoleLoggerSys) Validate

func (sys *HTTPConsoleLoggerSys) Validate() error

Validate if HTTPConsoleLoggerSys is valid, always returns nil right now

type HTTPRangeSpec

type HTTPRangeSpec struct {
	// Does the range spec refer to a suffix of the object?
	IsSuffixLength bool

	// Start and end offset specified in range spec
	Start, End int64
}

HTTPRangeSpec represents a range specification as supported by S3 GET object request.

Case 1: Not present -> represented by a nil RangeSpec Case 2: bytes=1-10 (absolute start and end offsets) -> RangeSpec{false, 1, 10} Case 3: bytes=10- (absolute start offset with end offset unspecified) -> RangeSpec{false, 10, -1} Case 4: bytes=-30 (suffix length specification) -> RangeSpec{true, -30, -1}

func (*HTTPRangeSpec) GetLength

func (h *HTTPRangeSpec) GetLength(resourceSize int64) (rangeLength int64, err error)

GetLength - get length of range

func (*HTTPRangeSpec) GetOffsetLength

func (h *HTTPRangeSpec) GetOffsetLength(resourceSize int64) (start, length int64, err error)

GetOffsetLength computes the start offset and length of the range given the size of the resource

func (*HTTPRangeSpec) String

func (h *HTTPRangeSpec) String(resourceSize int64) string

String returns stringified representation of range for a particular resource size.

type HTTPStats

type HTTPStats struct {
	// contains filtered or unexported fields
}

HTTPStats holds statistics information about HTTP requests made by all clients

type HealObjectFn

type HealObjectFn func(bucket, object, versionID string) error

HealObjectFn closure function heals the object.

type HealthOptions

type HealthOptions struct {
	Maintenance bool
}

HealthOptions takes input options to return sepcific information

type HealthResult

type HealthResult struct {
	Healthy       bool
	HealingDrives int
	PoolID, SetID int
	WriteQuorum   int
}

HealthResult returns the current state of the system, also additionally with any specific heuristic information which was queried

type Help

type Help struct {
	SubSys          string         `json:"subSys"`
	Description     string         `json:"description"`
	MultipleTargets bool           `json:"multipleTargets"`
	KeysHelp        config.HelpKVS `json:"keysHelp"`
}

Help - return sub-system level help

func GetHelp

func GetHelp(subSys, key string, envOnly bool) (Help, error)

GetHelp - returns help for sub-sys, a key for a sub-system or all the help.

type IAMEtcdStore

type IAMEtcdStore struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

IAMEtcdStore implements IAMStorageAPI

type IAMObjectStore

type IAMObjectStore struct {
	// Protect assignment to objAPI
	sync.RWMutex
	// contains filtered or unexported fields
}

IAMObjectStore implements IAMStorageAPI

type IAMStorageAPI

type IAMStorageAPI interface {
	// contains filtered or unexported methods
}

IAMStorageAPI defines an interface for the IAM persistence layer

type IAMSys

type IAMSys struct {
	sync.Mutex
	// contains filtered or unexported fields
}

IAMSys - config system.

func NewIAMSys

func NewIAMSys() *IAMSys

NewIAMSys - creates new config system object.

func (*IAMSys) AddUsersToGroup

func (sys *IAMSys) AddUsersToGroup(group string, members []string) error

AddUsersToGroup - adds users to a group, creating the group if needed. No error if user(s) already are in the group.

func (*IAMSys) CreateUser

func (sys *IAMSys) CreateUser(accessKey string, uinfo madmin.UserInfo) error

CreateUser - create new user credentials and policy, if user already exists they shall be rewritten with new inputs.

func (*IAMSys) CurrentPolicies

func (sys *IAMSys) CurrentPolicies(policyName string) string

CurrentPolicies - returns comma separated policy string, from an input policy after validating if there are any current policies which exist on MinIO corresponding to the input.

func (*IAMSys) DeletePolicy

func (sys *IAMSys) DeletePolicy(policyName string) error

DeletePolicy - deletes a canned policy from backend or etcd.

func (*IAMSys) DeleteServiceAccount

func (sys *IAMSys) DeleteServiceAccount(ctx context.Context, accessKey string) error

DeleteServiceAccount - delete a service account

func (*IAMSys) DeleteUser

func (sys *IAMSys) DeleteUser(accessKey string) error

DeleteUser - delete user (only for long-term users not STS users).

func (*IAMSys) EnableLDAPSys

func (sys *IAMSys) EnableLDAPSys()

EnableLDAPSys - enable ldap system users type.

func (*IAMSys) GetCombinedPolicy

func (sys *IAMSys) GetCombinedPolicy(policies ...string) iampolicy.Policy

GetCombinedPolicy returns a combined policy combining all policies

func (*IAMSys) GetGroupDescription

func (sys *IAMSys) GetGroupDescription(group string) (gd madmin.GroupDesc, err error)

GetGroupDescription - builds up group description

func (*IAMSys) GetServiceAccountParent

func (sys *IAMSys) GetServiceAccountParent(ctx context.Context, accessKey string) (string, error)

GetServiceAccountParent - gets information about a service account

func (*IAMSys) GetUser

func (sys *IAMSys) GetUser(accessKey string) (cred auth.Credentials, ok bool)

GetUser - get user credentials

func (*IAMSys) GetUserInfo

func (sys *IAMSys) GetUserInfo(name string) (u madmin.UserInfo, err error)

GetUserInfo - get info on a user.

func (*IAMSys) InfoPolicy

func (sys *IAMSys) InfoPolicy(policyName string) (iampolicy.Policy, error)

InfoPolicy - expands the canned policy into its JSON structure.

func (*IAMSys) Init

func (sys *IAMSys) Init(ctx context.Context, objAPI ObjectLayer)

Init - initializes config system by reading entries from config/iam

func (*IAMSys) InitStore

func (sys *IAMSys) InitStore(objAPI ObjectLayer)

InitStore initializes IAM stores

func (*IAMSys) Initialized

func (sys *IAMSys) Initialized() bool

Initialized check if IAM is initialized

func (*IAMSys) IsAllowed

func (sys *IAMSys) IsAllowed(args iampolicy.Args) bool

IsAllowed - checks given policy args is allowed to continue the Rest API.

func (*IAMSys) IsAllowedLDAPSTS

func (sys *IAMSys) IsAllowedLDAPSTS(args iampolicy.Args, parentUser string) bool

IsAllowedLDAPSTS - checks for LDAP specific claims and values

func (*IAMSys) IsAllowedSTS

func (sys *IAMSys) IsAllowedSTS(args iampolicy.Args, parentUser string) bool

IsAllowedSTS is meant for STS based temporary credentials, which implements claims validation and verification other than applying policies.

func (*IAMSys) IsAllowedServiceAccount

func (sys *IAMSys) IsAllowedServiceAccount(args iampolicy.Args, parent string) bool

IsAllowedServiceAccount - checks if the given service account is allowed to perform actions. The permission of the parent user is checked first

func (*IAMSys) IsServiceAccount

func (sys *IAMSys) IsServiceAccount(name string) (bool, string, error)

IsServiceAccount - returns if given key is a service account

func (*IAMSys) IsTempUser

func (sys *IAMSys) IsTempUser(name string) (bool, string, error)

IsTempUser - returns if given key is a temporary user.

func (*IAMSys) ListGroups

func (sys *IAMSys) ListGroups() (r []string, err error)

ListGroups - lists groups.

func (*IAMSys) ListPolicies

func (sys *IAMSys) ListPolicies() (map[string]iampolicy.Policy, error)

ListPolicies - lists all canned policies.

func (*IAMSys) ListServiceAccounts

func (sys *IAMSys) ListServiceAccounts(ctx context.Context, accessKey string) ([]string, error)

ListServiceAccounts - lists all services accounts associated to a specific user

func (*IAMSys) ListUsers

func (sys *IAMSys) ListUsers() (map[string]madmin.UserInfo, error)

ListUsers - list all users.

func (*IAMSys) Load

func (sys *IAMSys) Load(ctx context.Context, store IAMStorageAPI) error

Load - loads all credentials

func (*IAMSys) LoadGroup

func (sys *IAMSys) LoadGroup(objAPI ObjectLayer, group string) error

LoadGroup - loads a specific group from storage, and updates the memberships cache. If the specified group does not exist in storage, it is removed from in-memory maps as well - this simplifies the implementation for group removal. This is called only via IAM notifications.

func (*IAMSys) LoadPolicy

func (sys *IAMSys) LoadPolicy(objAPI ObjectLayer, policyName string) error

LoadPolicy - reloads a specific canned policy from backend disks or etcd.

func (*IAMSys) LoadPolicyMapping

func (sys *IAMSys) LoadPolicyMapping(objAPI ObjectLayer, userOrGroup string, isGroup bool) error

LoadPolicyMapping - loads the mapped policy for a user or group from storage into server memory.

func (*IAMSys) LoadServiceAccount

func (sys *IAMSys) LoadServiceAccount(accessKey string) error

LoadServiceAccount - reloads a specific service account from backend disks or etcd.

func (*IAMSys) LoadUser

func (sys *IAMSys) LoadUser(objAPI ObjectLayer, accessKey string, userType IAMUserType) error

LoadUser - reloads a specific user from backend disks or etcd.

func (*IAMSys) NewServiceAccount

func (sys *IAMSys) NewServiceAccount(ctx context.Context, parentUser string, groups []string, sessionPolicy *iampolicy.Policy) (auth.Credentials, error)

NewServiceAccount - create a new service account

func (*IAMSys) PolicyDBGet

func (sys *IAMSys) PolicyDBGet(name string, isGroup bool) ([]string, error)

PolicyDBGet - gets policy set on a user or group. Since a user may be a member of multiple groups, this function returns an array of applicable policies

func (*IAMSys) PolicyDBSet

func (sys *IAMSys) PolicyDBSet(name, policy string, isGroup bool) error

PolicyDBSet - sets a policy for a user or group in the PolicyDB.

func (*IAMSys) RemoveUsersFromGroup

func (sys *IAMSys) RemoveUsersFromGroup(group string, members []string) error

RemoveUsersFromGroup - remove users from group. If no users are given, and the group is empty, deletes the group as well.

func (*IAMSys) SetGroupStatus

func (sys *IAMSys) SetGroupStatus(group string, enabled bool) error

SetGroupStatus - enable/disabled a group

func (*IAMSys) SetPolicy

func (sys *IAMSys) SetPolicy(policyName string, p iampolicy.Policy) error

SetPolicy - sets a new name policy.

func (*IAMSys) SetTempUser

func (sys *IAMSys) SetTempUser(accessKey string, cred auth.Credentials, policyName string) error

SetTempUser - set temporary user credentials, these credentials have an expiry.

func (*IAMSys) SetUserSecretKey

func (sys *IAMSys) SetUserSecretKey(accessKey string, secretKey string) error

SetUserSecretKey - sets user secret key

func (*IAMSys) SetUserStatus

func (sys *IAMSys) SetUserStatus(accessKey string, status madmin.AccountStatus) error

SetUserStatus - sets current user status, supports disabled or enabled.

type IAMUserType

type IAMUserType int

IAMUserType represents a user type inside MinIO server

type IncompleteBody

type IncompleteBody GenericError

IncompleteBody You did not provide the number of bytes specified by the Content-Length HTTP header.

func (IncompleteBody) Error

func (e IncompleteBody) Error() string

Error returns string an error formatted as the given text.

type InitiateMultipartUploadResponse

type InitiateMultipartUploadResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ InitiateMultipartUploadResult" json:"-"`

	Bucket   string
	Key      string
	UploadID string `xml:"UploadId"`
}

InitiateMultipartUploadResponse container for InitiateMultiPartUpload response, provides uploadID to start MultiPart upload

type Initiator

type Initiator Owner

Initiator inherit from Owner struct, fields are same

type InsufficientReadQuorum

type InsufficientReadQuorum GenericError

InsufficientReadQuorum storage cannot satisfy quorum for read operation.

func (InsufficientReadQuorum) Error

func (e InsufficientReadQuorum) Error() string

func (InsufficientReadQuorum) Unwrap

func (e InsufficientReadQuorum) Unwrap() error

Unwrap the error.

type InsufficientWriteQuorum

type InsufficientWriteQuorum GenericError

InsufficientWriteQuorum storage cannot satisfy quorum for write operation.

func (InsufficientWriteQuorum) Error

func (e InsufficientWriteQuorum) Error() string

func (InsufficientWriteQuorum) Unwrap

func (e InsufficientWriteQuorum) Unwrap() error

Unwrap the error.

type InvalidArgument

type InvalidArgument GenericError

InvalidArgument incorrect input argument

func (InvalidArgument) Error

func (e InvalidArgument) Error() string

type InvalidETag

type InvalidETag struct{}

InvalidETag error returned when the etag has changed on disk

func (InvalidETag) Error

func (e InvalidETag) Error() string

type InvalidMarkerPrefixCombination

type InvalidMarkerPrefixCombination struct {
	Marker, Prefix string
}

InvalidMarkerPrefixCombination - invalid marker and prefix combination.

func (InvalidMarkerPrefixCombination) Error

type InvalidPart

type InvalidPart struct {
	PartNumber int
	ExpETag    string
	GotETag    string
}

InvalidPart One or more of the specified parts could not be found

func (InvalidPart) Error

func (e InvalidPart) Error() string

type InvalidRange

type InvalidRange struct {
	OffsetBegin  int64
	OffsetEnd    int64
	ResourceSize int64
}

InvalidRange - invalid range typed error.

func (InvalidRange) Error

func (e InvalidRange) Error() string

type InvalidUploadID

type InvalidUploadID struct {
	Bucket   string
	Object   string
	UploadID string
}

InvalidUploadID invalid upload id.

func (InvalidUploadID) Error

func (e InvalidUploadID) Error() string

type InvalidUploadIDKeyCombination

type InvalidUploadIDKeyCombination struct {
	UploadIDMarker, KeyMarker string
}

InvalidUploadIDKeyCombination - invalid upload id and key marker combination.

func (InvalidUploadIDKeyCombination) Error

type InvalidVersionID

type InvalidVersionID GenericError

InvalidVersionID invalid version id

func (InvalidVersionID) Error

func (e InvalidVersionID) Error() string

type IsLeafDirFunc

type IsLeafDirFunc func(string, string) bool

IsLeafDirFunc - A function isLeafDir of type isLeafDirFunc is used to detect if an entry is empty directory.

type IsLeafFunc

type IsLeafFunc func(string, string) bool

IsLeafFunc - A function isLeaf of type isLeafFunc is used to detect if an entry is a leaf entry. There are 2 scenarios where isLeaf should behave differently depending on the backend:

  1. FS backend object listing - isLeaf is true if the entry has no trailing "/"
  2. Erasure backend object listing - isLeaf is true if the entry is a directory and contains xl.meta

type KeyValueMap

type KeyValueMap map[string]string

KeyValueMap extends builtin map to support setting and getting select fields like BucketName, ObjectName, Prefix, etc.

func (KeyValueMap) Bucket

func (km KeyValueMap) Bucket() string

Bucket returns the BucketName

func (KeyValueMap) Hostname

func (km KeyValueMap) Hostname() string

Hostname returns the Hostname

func (KeyValueMap) Object

func (km KeyValueMap) Object() string

Object returns the ObjectName

func (KeyValueMap) Objects

func (km KeyValueMap) Objects() []string

Objects returns the Objects

func (KeyValueMap) Policy

func (km KeyValueMap) Policy() string

Policy returns the Policy

func (KeyValueMap) Prefix

func (km KeyValueMap) Prefix() string

Prefix returns the Prefix

func (*KeyValueMap) SetBucket

func (km *KeyValueMap) SetBucket(bucket string)

SetBucket sets the given bucket to the KeyValueMap

func (*KeyValueMap) SetExpiry

func (km *KeyValueMap) SetExpiry(expiry int64)

SetExpiry sets the expiry to the KeyValueMap

func (*KeyValueMap) SetHostname

func (km *KeyValueMap) SetHostname(hostname string)

SetHostname sets the hostname to the KeyValueMap

func (*KeyValueMap) SetMarker

func (km *KeyValueMap) SetMarker(marker string)

SetMarker sets the given marker to the KeyValueMap

func (*KeyValueMap) SetObject

func (km *KeyValueMap) SetObject(object string)

SetObject sets the given object to the KeyValueMap

func (*KeyValueMap) SetObjects

func (km *KeyValueMap) SetObjects(objects []string)

SetObjects sets the list of objects to the KeyValueMap

func (*KeyValueMap) SetPolicy

func (km *KeyValueMap) SetPolicy(policy string)

SetPolicy sets the given policy to the KeyValueMap

func (*KeyValueMap) SetPrefix

func (km *KeyValueMap) SetPrefix(prefix string)

SetPrefix sets the given prefix to the KeyValueMap

func (*KeyValueMap) SetUsername

func (km *KeyValueMap) SetUsername(username string)

SetUsername sets the username to the KeyValueMap

func (KeyValueMap) Username

func (km KeyValueMap) Username() string

Username returns the Username

type LDAPIdentityResult

type LDAPIdentityResult struct {
	Credentials auth.Credentials `xml:",omitempty"`
}

LDAPIdentityResult - contains credentials for a successful AssumeRoleWithLDAPIdentity request.

type LifecycleSys

type LifecycleSys struct{}

LifecycleSys - Bucket lifecycle subsystem.

func NewLifecycleSys

func NewLifecycleSys() *LifecycleSys

NewLifecycleSys - creates new lifecycle system.

func (*LifecycleSys) Get

func (sys *LifecycleSys) Get(bucketName string) (lc *lifecycle.Lifecycle, err error)

Get - gets lifecycle config associated to a given bucket name.

type ListAllBucketPoliciesArgs

type ListAllBucketPoliciesArgs struct {
	BucketName string `json:"bucketName"`
}

ListAllBucketPoliciesArgs - get all bucket policies.

func (*ListAllBucketPoliciesArgs) ToKeyValue

func (args *ListAllBucketPoliciesArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for ListAllBucketPoliciesArgs

type ListAllBucketPoliciesRep

type ListAllBucketPoliciesRep struct {
	UIVersion string               `json:"uiVersion"`
	Policies  []BucketAccessPolicy `json:"policies"`
}

ListAllBucketPoliciesRep - get all bucket policy reply.

type ListBucketsRep

type ListBucketsRep struct {
	Buckets   []WebBucketInfo `json:"buckets"`
	UIVersion string          `json:"uiVersion"`
}

ListBucketsRep - list buckets response

type ListBucketsResponse

type ListBucketsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListAllMyBucketsResult" json:"-"`

	Owner Owner

	// Container for one or more buckets.
	Buckets struct {
		Buckets []Bucket `xml:"Bucket"`
	} // Buckets are nested
}

ListBucketsResponse - format for list buckets response

type ListDirFunc

type ListDirFunc func(bucket, prefixDir, prefixEntry string) (emptyDir bool, entries []string, delayIsLeaf bool)

ListDirFunc - "listDir" function of type listDirFunc returned by listDirFactory() - explained below.

type ListMultipartUploadsResponse

type ListMultipartUploadsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListMultipartUploadsResult" json:"-"`

	Bucket             string
	KeyMarker          string
	UploadIDMarker     string `xml:"UploadIdMarker"`
	NextKeyMarker      string
	NextUploadIDMarker string `xml:"NextUploadIdMarker"`
	Delimiter          string
	Prefix             string
	EncodingType       string `xml:"EncodingType,omitempty"`
	MaxUploads         int
	IsTruncated        bool

	// List of pending uploads.
	Uploads []Upload `xml:"Upload"`

	// Delimed common prefixes.
	CommonPrefixes []CommonPrefix
}

ListMultipartUploadsResponse - format for list multipart uploads response.

type ListMultipartsInfo

type ListMultipartsInfo struct {
	// Together with upload-id-marker, this parameter specifies the multipart upload
	// after which listing should begin.
	KeyMarker string

	// Together with key-marker, specifies the multipart upload after which listing
	// should begin. If key-marker is not specified, the upload-id-marker parameter
	// is ignored.
	UploadIDMarker string

	// When a list is truncated, this element specifies the value that should be
	// used for the key-marker request parameter in a subsequent request.
	NextKeyMarker string

	// When a list is truncated, this element specifies the value that should be
	// used for the upload-id-marker request parameter in a subsequent request.
	NextUploadIDMarker string

	// Maximum number of multipart uploads that could have been included in the
	// response.
	MaxUploads int

	// Indicates whether the returned list of multipart uploads is truncated. A
	// value of true indicates that the list was truncated. The list can be truncated
	// if the number of multipart uploads exceeds the limit allowed or specified
	// by max uploads.
	IsTruncated bool

	// List of all pending uploads.
	Uploads []MultipartInfo

	// When a prefix is provided in the request, The result contains only keys
	// starting with the specified prefix.
	Prefix string

	// A character used to truncate the object prefixes.
	// NOTE: only supported delimiter is '/'.
	Delimiter string

	// CommonPrefixes contains all (if there are any) keys between Prefix and the
	// next occurrence of the string specified by delimiter.
	CommonPrefixes []string

	EncodingType string // Not supported yet.
}

ListMultipartsInfo - represnets bucket resources for incomplete multipart uploads.

func FromMinioClientListMultipartsInfo

func FromMinioClientListMultipartsInfo(lmur minio.ListMultipartUploadsResult) ListMultipartsInfo

FromMinioClientListMultipartsInfo converts minio ListMultipartUploadsResult to ListMultipartsInfo

func (ListMultipartsInfo) Lookup

func (lm ListMultipartsInfo) Lookup(uploadID string) bool

Lookup - returns if uploadID is valid

type ListObjectVersionsInfo

type ListObjectVersionsInfo struct {
	// Indicates whether the returned list objects response is truncated. A
	// value of true indicates that the list was truncated. The list can be truncated
	// if the number of objects exceeds the limit allowed or specified
	// by max keys.
	IsTruncated bool

	// When response is truncated (the IsTruncated element value in the response is true),
	// you can use the key name in this field as marker in the subsequent
	// request to get next set of objects.
	//
	// NOTE: AWS S3 returns NextMarker only if you have delimiter request parameter specified,
	//       MinIO always returns NextMarker.
	NextMarker string

	// NextVersionIDMarker may be set of IsTruncated is true
	NextVersionIDMarker string

	// List of objects info for this request.
	Objects []ObjectInfo

	// List of prefixes for this request.
	Prefixes []string
}

ListObjectVersionsInfo - container for list objects versions.

type ListObjectsArgs

type ListObjectsArgs struct {
	BucketName string `json:"bucketName"`
	Prefix     string `json:"prefix"`
	Marker     string `json:"marker"`
}

ListObjectsArgs - list object args.

func (*ListObjectsArgs) ToKeyValue

func (args *ListObjectsArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for ListObjectsArgs

type ListObjectsInfo

type ListObjectsInfo struct {
	// Indicates whether the returned list objects response is truncated. A
	// value of true indicates that the list was truncated. The list can be truncated
	// if the number of objects exceeds the limit allowed or specified
	// by max keys.
	IsTruncated bool

	// When response is truncated (the IsTruncated element value in the response is true),
	// you can use the key name in this field as marker in the subsequent
	// request to get next set of objects.
	//
	// NOTE: AWS S3 returns NextMarker only if you have delimiter request parameter specified,
	//       MinIO always returns NextMarker.
	NextMarker string

	// List of objects info for this request.
	Objects []ObjectInfo

	// List of prefixes for this request.
	Prefixes []string
}

ListObjectsInfo - container for list objects.

func FromMinioClientListBucketResult

func FromMinioClientListBucketResult(bucket string, result minio.ListBucketResult) ListObjectsInfo

FromMinioClientListBucketResult converts minio ListBucketResult to ListObjectsInfo

type ListObjectsRep

type ListObjectsRep struct {
	Objects   []WebObjectInfo `json:"objects"`
	Writable  bool            `json:"writable"` // Used by client to show "upload file" button.
	UIVersion string          `json:"uiVersion"`
}

ListObjectsRep - list objects response.

type ListObjectsResponse

type ListObjectsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListBucketResult" json:"-"`

	Name   string
	Prefix string
	Marker string

	// When response is truncated (the IsTruncated element value in the response
	// is true), you can use the key name in this field as marker in the subsequent
	// request to get next set of objects. Server lists objects in alphabetical
	// order Note: This element is returned only if you have delimiter request parameter
	// specified. If response does not include the NextMaker and it is truncated,
	// you can use the value of the last Key in the response as the marker in the
	// subsequent request to get the next set of object keys.
	NextMarker string `xml:"NextMarker,omitempty"`

	MaxKeys   int
	Delimiter string
	// A flag that indicates whether or not ListObjects returned all of the results
	// that satisfied the search criteria.
	IsTruncated bool

	Contents       []Object
	CommonPrefixes []CommonPrefix

	// Encoding type used to encode object keys in the response.
	EncodingType string `xml:"EncodingType,omitempty"`
}

ListObjectsResponse - format for list objects response.

type ListObjectsV2Info

type ListObjectsV2Info struct {
	// Indicates whether the returned list objects response is truncated. A
	// value of true indicates that the list was truncated. The list can be truncated
	// if the number of objects exceeds the limit allowed or specified
	// by max keys.
	IsTruncated bool

	// When response is truncated (the IsTruncated element value in the response
	// is true), you can use the key name in this field as marker in the subsequent
	// request to get next set of objects.
	//
	// NOTE: This element is returned only if you have delimiter request parameter
	// specified.
	ContinuationToken     string
	NextContinuationToken string

	// List of objects info for this request.
	Objects []ObjectInfo

	// List of prefixes for this request.
	Prefixes []string
}

ListObjectsV2Info - container for list objects version 2.

func FromMinioClientListBucketResultToV2Info

func FromMinioClientListBucketResultToV2Info(bucket string, result minio.ListBucketResult) ListObjectsV2Info

FromMinioClientListBucketResultToV2Info converts minio ListBucketResult to ListObjectsV2Info

func FromMinioClientListBucketV2Result

func FromMinioClientListBucketV2Result(bucket string, result minio.ListBucketV2Result) ListObjectsV2Info

FromMinioClientListBucketV2Result converts minio ListBucketResult to ListObjectsInfo

type ListObjectsV2Response

type ListObjectsV2Response struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListBucketResult" json:"-"`

	Name       string
	Prefix     string
	StartAfter string `xml:"StartAfter,omitempty"`
	// When response is truncated (the IsTruncated element value in the response
	// is true), you can use the key name in this field as marker in the subsequent
	// request to get next set of objects. Server lists objects in alphabetical
	// order Note: This element is returned only if you have delimiter request parameter
	// specified. If response does not include the NextMaker and it is truncated,
	// you can use the value of the last Key in the response as the marker in the
	// subsequent request to get the next set of object keys.
	ContinuationToken     string `xml:"ContinuationToken,omitempty"`
	NextContinuationToken string `xml:"NextContinuationToken,omitempty"`

	KeyCount  int
	MaxKeys   int
	Delimiter string
	// A flag that indicates whether or not ListObjects returned all of the results
	// that satisfied the search criteria.
	IsTruncated bool

	Contents       []Object
	CommonPrefixes []CommonPrefix

	// Encoding type used to encode object keys in the response.
	EncodingType string `xml:"EncodingType,omitempty"`
}

ListObjectsV2Response - format for list objects response.

type ListPartsInfo

type ListPartsInfo struct {
	// Name of the bucket.
	Bucket string

	// Name of the object.
	Object string

	// Upload ID identifying the multipart upload whose parts are being listed.
	UploadID string

	// The class of storage used to store the object.
	StorageClass string

	// Part number after which listing begins.
	PartNumberMarker int

	// When a list is truncated, this element specifies the last part in the list,
	// as well as the value to use for the part-number-marker request parameter
	// in a subsequent request.
	NextPartNumberMarker int

	// Maximum number of parts that were allowed in the response.
	MaxParts int

	// Indicates whether the returned list of parts is truncated.
	IsTruncated bool

	// List of all parts.
	Parts []PartInfo

	// Any metadata set during InitMultipartUpload, including encryption headers.
	UserDefined map[string]string
}

ListPartsInfo - represents list of all parts.

func FromMinioClientListPartsInfo

func FromMinioClientListPartsInfo(lopr minio.ListObjectPartsResult) ListPartsInfo

FromMinioClientListPartsInfo converts minio ListObjectPartsResult to ListPartsInfo

type ListPartsResponse

type ListPartsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListPartsResult" json:"-"`

	Bucket   string
	Key      string
	UploadID string `xml:"UploadId"`

	Initiator Initiator
	Owner     Owner

	// The class of storage used to store the object.
	StorageClass string

	PartNumberMarker     int
	NextPartNumberMarker int
	MaxParts             int
	IsTruncated          bool

	// List of parts.
	Parts []Part `xml:"Part"`
}

ListPartsResponse - format for list parts response.

type ListVersionsResponse

type ListVersionsResponse struct {
	XMLName xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ ListVersionsResult" json:"-"`

	Name      string
	Prefix    string
	KeyMarker string

	// When response is truncated (the IsTruncated element value in the response
	// is true), you can use the key name in this field as marker in the subsequent
	// request to get next set of objects. Server lists objects in alphabetical
	// order Note: This element is returned only if you have delimiter request parameter
	// specified. If response does not include the NextMaker and it is truncated,
	// you can use the value of the last Key in the response as the marker in the
	// subsequent request to get the next set of object keys.
	NextKeyMarker string `xml:"NextKeyMarker,omitempty"`

	// When the number of responses exceeds the value of MaxKeys,
	// NextVersionIdMarker specifies the first object version not
	// returned that satisfies the search criteria. Use this value
	// for the version-id-marker request parameter in a subsequent request.
	NextVersionIDMarker string `xml:"NextVersionIdMarker"`

	// Marks the last version of the Key returned in a truncated response.
	VersionIDMarker string `xml:"VersionIdMarker"`

	MaxKeys   int
	Delimiter string
	// A flag that indicates whether or not ListObjects returned all of the results
	// that satisfied the search criteria.
	IsTruncated bool

	CommonPrefixes []CommonPrefix
	Versions       []ObjectVersion

	// Encoding type used to encode object keys in the response.
	EncodingType string `xml:"EncodingType,omitempty"`
}

ListVersionsResponse - format for list bucket versions response.

type LocationResponse

type LocationResponse struct {
	XMLName  xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ LocationConstraint" json:"-"`
	Location string   `xml:",chardata"`
}

LocationResponse - format for location response.

type LockType

type LockType int

LockType represents required locking for ObjectLayer operations

type LoginArgs

type LoginArgs struct {
	Username string `json:"username" form:"username"`
	Password string `json:"password" form:"password"`
}

LoginArgs - login arguments.

func (*LoginArgs) ToKeyValue

func (args *LoginArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for LoginArgs

type LoginRep

type LoginRep struct {
	Token     string `json:"token"`
	UIVersion string `json:"uiVersion"`
}

LoginRep - login reply.

type LoginSTSArgs

type LoginSTSArgs struct {
	Token string `json:"token" form:"token"`
}

LoginSTSArgs - login arguments.

func (*LoginSTSArgs) ToKeyValue

func (args *LoginSTSArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for LoginSTSArgs

type MakeBucketArgs

type MakeBucketArgs struct {
	BucketName string `json:"bucketName"`
}

MakeBucketArgs - make bucket args.

func (*MakeBucketArgs) ToKeyValue

func (args *MakeBucketArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for MakeBucketArgs

type MalformedUploadID

type MalformedUploadID struct {
	UploadID string
}

MalformedUploadID malformed upload id.

func (MalformedUploadID) Error

func (e MalformedUploadID) Error() string

type MappedPolicy

type MappedPolicy struct {
	Version  int    `json:"version"`
	Policies string `json:"policy"`
}

MappedPolicy represents a policy name mapped to a user or group

type MetadataEntry

type MetadataEntry struct {
	Name  string `xml:"Name"`
	Value string `xml:"Value"`
}

MetadataEntry denotes name and value.

type MethodNotAllowed

type MethodNotAllowed GenericError

MethodNotAllowed on the object

func (MethodNotAllowed) Error

func (e MethodNotAllowed) Error() string

type Metric

type Metric struct {
	Description          MetricDescription `json:"Description"`
	StaticLabels         map[string]string `json:"StaticLabels"`
	Value                float64           `json:"Value"`
	VariableLabels       map[string]string `json:"VariableLabels"`
	HistogramBucketLabel string            `json:"HistogramBucketLabel"`
	Histogram            map[string]uint64 `json:"Histogram"`
}

Metric captures the details for a metric

type MetricDescription

type MetricDescription struct {
	Namespace MetricNamespace `json:"MetricNamespace"`
	Subsystem MetricSubsystem `json:"Subsystem"`
	Name      MetricName      `json:"MetricName"`
	Help      string          `json:"Help"`
	Type      GaugeMetricType `json:"Type"`
}

MetricDescription describes the metric

type MetricName

type MetricName string

MetricName are the individual names for the metric.

type MetricNamespace

type MetricNamespace string

MetricNamespace is top level grouping of metrics to create the metric name.

type MetricSubsystem

type MetricSubsystem string

MetricSubsystem is the sub grouping for metrics within a namespace.

type MetricsGenerator

type MetricsGenerator func() MetricsGroup

MetricsGenerator are functions that generate metric groups.

func GetAllGenerators

func GetAllGenerators() []MetricsGenerator

GetAllGenerators gets all the metric generators.

func GetGeneratorsForPeer

func GetGeneratorsForPeer() []MetricsGenerator

GetGeneratorsForPeer - gets the generators to report to peer.

func GetGlobalGenerators

func GetGlobalGenerators() []MetricsGenerator

GetGlobalGenerators gets all the generators the report global metrics pre calculated.

func GetSingleNodeGenerators

func GetSingleNodeGenerators() []MetricsGenerator

GetSingleNodeGenerators gets the metrics that are local

type MetricsGroup

type MetricsGroup struct {
	Metrics []Metric
	// contains filtered or unexported fields
}

MetricsGroup are a group of metrics that are initialized together.

type MetricsTransport

type MetricsTransport struct {
	Transport *http.Transport
	Metrics   *BackendMetrics
}

MetricsTransport is a custom wrapper around Transport to track metrics

func (MetricsTransport) RoundTrip

func (m MetricsTransport) RoundTrip(r *http.Request) (*http.Response, error)

RoundTrip implements the RoundTrip method for MetricsTransport

type MultipartInfo

type MultipartInfo struct {
	// Name of the bucket.
	Bucket string

	// Name of the object.
	Object string

	// Upload ID identifying the multipart upload whose parts are being listed.
	UploadID string

	// Date and time at which the multipart upload was initiated.
	Initiated time.Time

	// Any metadata set during InitMultipartUpload, including encryption headers.
	UserDefined map[string]string
}

MultipartInfo captures metadata information about the uploadId this data structure is used primarily for some internal purposes for verifying upload type such as was the upload - encrypted - compressed

type NotImplemented

type NotImplemented struct {
	API string
}

NotImplemented If a feature is not implemented

func (NotImplemented) Error

func (e NotImplemented) Error() string

type NotificationGroup

type NotificationGroup struct {
	// contains filtered or unexported fields
}

A NotificationGroup is a collection of goroutines working on subtasks that are part of the same overall task.

A zero NotificationGroup is valid and does not cancel on error.

func WithNPeers

func WithNPeers(nerrs int) *NotificationGroup

WithNPeers returns a new NotificationGroup with length of errs slice upto nerrs, upon Wait() errors are returned collected from all tasks.

func (*NotificationGroup) Go

func (g *NotificationGroup) Go(ctx context.Context, f func() error, index int, addr xnet.Host)

Go calls the given function in a new goroutine.

The first call to return a non-nil error will be collected in errs slice and returned by Wait().

func (*NotificationGroup) Wait

Wait blocks until all function calls from the Go method have returned, then returns the slice of errors from all function calls.

type NotificationPeerErr

type NotificationPeerErr struct {
	Host xnet.Host // Remote host on which the rpc call was initiated
	Err  error     // Error returned by the remote peer for an rpc call
}

NotificationPeerErr returns error associated for a remote peer.

type NotificationSys

type NotificationSys struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

NotificationSys - notification system.

func NewNotificationSys

func NewNotificationSys(endpoints EndpointServerPools) *NotificationSys

NewNotificationSys - creates new notification system object.

func (*NotificationSys) AddRulesMap

func (sys *NotificationSys) AddRulesMap(bucketName string, rulesMap event.RulesMap)

AddRulesMap - adds rules map for bucket name.

func (*NotificationSys) BackgroundHealStatus

func (sys *NotificationSys) BackgroundHealStatus() ([]madmin.BgHealState, []NotificationPeerErr)

BackgroundHealStatus - returns background heal status of all peers

func (*NotificationSys) CPUInfo

func (sys *NotificationSys) CPUInfo(ctx context.Context) []madmin.ServerCPUInfo

CPUInfo - CPU information

func (*NotificationSys) ConfiguredTargetIDs

func (sys *NotificationSys) ConfiguredTargetIDs() []event.TargetID

ConfiguredTargetIDs - returns list of configured target id's

func (*NotificationSys) DeleteBucketMetadata

func (sys *NotificationSys) DeleteBucketMetadata(ctx context.Context, bucketName string)

DeleteBucketMetadata - calls DeleteBucketMetadata call on all peers

func (*NotificationSys) DeletePolicy

func (sys *NotificationSys) DeletePolicy(policyName string) []NotificationPeerErr

DeletePolicy - deletes policy across all peers.

func (*NotificationSys) DeleteServiceAccount

func (sys *NotificationSys) DeleteServiceAccount(accessKey string) []NotificationPeerErr

DeleteServiceAccount - deletes a specific service account across all peers

func (*NotificationSys) DeleteUser

func (sys *NotificationSys) DeleteUser(accessKey string) []NotificationPeerErr

DeleteUser - deletes a specific user across all peers

func (*NotificationSys) DiskHwInfo

func (sys *NotificationSys) DiskHwInfo(ctx context.Context) []madmin.ServerDiskHwInfo

DiskHwInfo - Disk HW information

func (*NotificationSys) DispatchNetPerfChan

func (sys *NotificationSys) DispatchNetPerfChan(ctx context.Context) chan madmin.ServerNetHealthInfo

DispatchNetPerfChan - Net perf information from other nodes

func (*NotificationSys) DispatchNetPerfInfo

func (sys *NotificationSys) DispatchNetPerfInfo(ctx context.Context) []madmin.ServerNetHealthInfo

DispatchNetPerfInfo - Net perf information from other nodes

func (*NotificationSys) DownloadProfilingData

func (sys *NotificationSys) DownloadProfilingData(ctx context.Context, writer io.Writer) bool

DownloadProfilingData - download profiling data from all remote peers.

func (*NotificationSys) DrivePerfInfo

func (sys *NotificationSys) DrivePerfInfo(ctx context.Context) []madmin.ServerDrivesInfo

DrivePerfInfo - Drive perf information

func (*NotificationSys) DrivePerfInfoChan

func (sys *NotificationSys) DrivePerfInfoChan(ctx context.Context) chan madmin.ServerDrivesInfo

DrivePerfInfoChan - Drive perf information

func (*NotificationSys) GetARNList

func (sys *NotificationSys) GetARNList(onlyActive bool) []string

GetARNList - returns available ARNs.

func (*NotificationSys) GetBandwidthReports

func (sys *NotificationSys) GetBandwidthReports(ctx context.Context, buckets ...string) bandwidth.Report

GetBandwidthReports - gets the bandwidth report from all nodes including self.

func (*NotificationSys) GetClusterMetrics

func (sys *NotificationSys) GetClusterMetrics(ctx context.Context) chan Metric

GetClusterMetrics - gets the cluster metrics from all nodes excluding self.

func (*NotificationSys) GetLocalDiskIDs

func (sys *NotificationSys) GetLocalDiskIDs(ctx context.Context) (localDiskIDs [][]string)

GetLocalDiskIDs - return disk ids of the local disks of the peers.

func (*NotificationSys) GetLocks

func (sys *NotificationSys) GetLocks(ctx context.Context, r *http.Request) []*PeerLocks

GetLocks - makes GetLocks RPC call on all peers.

func (*NotificationSys) Init

func (sys *NotificationSys) Init(ctx context.Context, buckets []BucketInfo, objAPI ObjectLayer) error

Init - initializes notification system from notification.xml and listenxl.meta of all buckets.

func (*NotificationSys) LoadBucketMetadata

func (sys *NotificationSys) LoadBucketMetadata(ctx context.Context, bucketName string)

LoadBucketMetadata - calls LoadBucketMetadata call on all peers

func (*NotificationSys) LoadGroup

func (sys *NotificationSys) LoadGroup(group string) []NotificationPeerErr

LoadGroup - loads a specific group on all peers.

func (*NotificationSys) LoadPolicy

func (sys *NotificationSys) LoadPolicy(policyName string) []NotificationPeerErr

LoadPolicy - reloads a specific modified policy across all peers

func (*NotificationSys) LoadPolicyMapping

func (sys *NotificationSys) LoadPolicyMapping(userOrGroup string, isGroup bool) []NotificationPeerErr

LoadPolicyMapping - reloads a policy mapping across all peers

func (*NotificationSys) LoadServiceAccount

func (sys *NotificationSys) LoadServiceAccount(accessKey string) []NotificationPeerErr

LoadServiceAccount - reloads a specific service account across all peers

func (*NotificationSys) LoadUser

func (sys *NotificationSys) LoadUser(accessKey string, temp bool) []NotificationPeerErr

LoadUser - reloads a specific user across all peers

func (*NotificationSys) MemInfo

func (sys *NotificationSys) MemInfo(ctx context.Context) []madmin.ServerMemInfo

MemInfo - Mem information

func (*NotificationSys) NetInfo

NetInfo - Net information

func (*NotificationSys) NetPerfParallelInfo

func (sys *NotificationSys) NetPerfParallelInfo(ctx context.Context) madmin.ServerNetHealthInfo

NetPerfParallelInfo - Performs Net parallel tests

func (*NotificationSys) OsInfo

func (sys *NotificationSys) OsInfo(ctx context.Context) []madmin.ServerOsInfo

OsInfo - Os information

func (*NotificationSys) ProcInfo

func (sys *NotificationSys) ProcInfo(ctx context.Context) []madmin.ServerProcInfo

ProcInfo - Process information

func (*NotificationSys) RemoveAllRemoteTargets

func (sys *NotificationSys) RemoveAllRemoteTargets()

RemoveAllRemoteTargets - closes and removes all notification targets.

func (*NotificationSys) RemoveNotification

func (sys *NotificationSys) RemoveNotification(bucketName string)

RemoveNotification - removes all notification configuration for bucket name.

func (*NotificationSys) RemoveRulesMap

func (sys *NotificationSys) RemoveRulesMap(bucketName string, rulesMap event.RulesMap)

RemoveRulesMap - removes rules map for bucket name.

func (*NotificationSys) Send

func (sys *NotificationSys) Send(args eventArgs)

Send - sends event data to all matching targets.

func (*NotificationSys) ServerInfo

func (sys *NotificationSys) ServerInfo() []madmin.ServerProperties

ServerInfo - calls ServerInfo RPC call on all peers.

func (*NotificationSys) ServerUpdate

func (sys *NotificationSys) ServerUpdate(ctx context.Context, u *url.URL, sha256Sum []byte, lrTime time.Time) []NotificationPeerErr

ServerUpdate - updates remote peers.

func (*NotificationSys) SignalService

func (sys *NotificationSys) SignalService(sig serviceSignal) []NotificationPeerErr

SignalService - calls signal service RPC call on all peers.

func (*NotificationSys) StartProfiling

func (sys *NotificationSys) StartProfiling(profiler string) []NotificationPeerErr

StartProfiling - start profiling on remote peers, by initiating a remote RPC.

type ObjReaderFn

type ObjReaderFn func(inputReader io.Reader, h http.Header, pcfn CheckPreconditionFn, cleanupFns ...func()) (r *GetObjectReader, err error)

ObjReaderFn is a function type that takes a reader and returns GetObjectReader and an error. Request headers are passed to provide encryption parameters. cleanupFns allow cleanup funcs to be registered for calling after usage of the reader.

func NewGetObjectReader

func NewGetObjectReader(rs *HTTPRangeSpec, oi ObjectInfo, opts ObjectOptions, cleanUpFns ...func()) (
	fn ObjReaderFn, off, length int64, err error)

NewGetObjectReader creates a new GetObjectReader. The cleanUpFns are called on Close() in reverse order as passed here. NOTE: It is assumed that clean up functions do not panic (otherwise, they may not all run!).

type Object

type Object struct {
	Key          string
	LastModified string // time string of format "2006-01-02T15:04:05.000Z"
	ETag         string
	Size         int64

	// Owner of the object.
	Owner Owner

	// The class of storage used to store the object.
	StorageClass string

	// UserMetadata user-defined metadata
	UserMetadata StringMap `xml:"UserMetadata,omitempty"`
}

Object container for object metadata

type ObjectAlreadyExists

type ObjectAlreadyExists GenericError

ObjectAlreadyExists object already exists.

func (ObjectAlreadyExists) Error

func (e ObjectAlreadyExists) Error() string

type ObjectExistsAsDirectory

type ObjectExistsAsDirectory GenericError

ObjectExistsAsDirectory object already exists as a directory.

func (ObjectExistsAsDirectory) Error

func (e ObjectExistsAsDirectory) Error() string

type ObjectInfo

type ObjectInfo struct {
	// Name of the bucket.
	Bucket string

	// Name of the object.
	Name string

	// Date and time when the object was last modified.
	ModTime time.Time

	// Total object size.
	Size int64

	// IsDir indicates if the object is prefix.
	IsDir bool

	// Hex encoded unique entity tag of the object.
	ETag string

	// The ETag stored in the gateway backend
	InnerETag string

	// Version ID of this object.
	VersionID string

	// IsLatest indicates if this is the latest current version
	// latest can be true for delete marker or a version.
	IsLatest bool

	// DeleteMarker indicates if the versionId corresponds
	// to a delete marker on an object.
	DeleteMarker bool

	// TransitionStatus indicates if transition is complete/pending
	TransitionStatus string

	// RestoreExpires indicates date a restored object expires
	RestoreExpires time.Time

	// RestoreOngoing indicates if a restore is in progress
	RestoreOngoing bool

	// A standard MIME type describing the format of the object.
	ContentType string

	// Specifies what content encodings have been applied to the object and thus
	// what decoding mechanisms must be applied to obtain the object referenced
	// by the Content-Type header field.
	ContentEncoding string

	// Date and time at which the object is no longer able to be cached
	Expires time.Time

	// CacheStatus sets status of whether this is a cache hit/miss
	CacheStatus CacheStatusType
	// CacheLookupStatus sets whether a cacheable response is present in the cache
	CacheLookupStatus CacheStatusType

	// Specify object storage class
	StorageClass string

	ReplicationStatus replication.StatusType
	// User-Defined metadata
	UserDefined map[string]string

	// User-Defined object tags
	UserTags string

	// List of individual parts, maximum size of upto 10,000
	Parts []ObjectPartInfo `json:"-"`

	// Implements writer and reader used by CopyObject API
	Writer       io.WriteCloser `json:"-"`
	Reader       *hash.Reader   `json:"-"`
	PutObjReader *PutObjReader  `json:"-"`

	// Date and time when the object was last accessed.
	AccTime time.Time

	Legacy bool // indicates object on disk is in legacy data format

	VersionPurgeStatus VersionPurgeStatusType

	// The total count of all versions of this object
	NumVersions int
	//  The modtime of the successor object version if any
	SuccessorModTime time.Time
	// contains filtered or unexported fields
}

ObjectInfo - represents object metadata.

func FromMinioClientObjectInfo

func FromMinioClientObjectInfo(bucket string, oi minio.ObjectInfo) ObjectInfo

FromMinioClientObjectInfo converts minio ObjectInfo to gateway ObjectInfo

func (ObjectInfo) Clone

func (o ObjectInfo) Clone() (cinfo ObjectInfo)

Clone - Returns a cloned copy of current objectInfo

func (*ObjectInfo) DecryptedSize

func (o *ObjectInfo) DecryptedSize() (int64, error)

DecryptedSize returns the size of the object after decryption in bytes. It returns an error if the object is not encrypted or marked as encrypted but has an invalid size.

func (*ObjectInfo) EncryptedSize

func (o *ObjectInfo) EncryptedSize() int64

EncryptedSize returns the size of the object after encryption. An encrypted object is always larger than a plain object except for zero size objects.

func (ObjectInfo) GetActualETag

func (o ObjectInfo) GetActualETag(h http.Header) string

GetActualETag - returns the actual etag of the stored object decrypts SSE objects.

func (ObjectInfo) GetActualSize

func (o ObjectInfo) GetActualSize() (int64, error)

GetActualSize - returns the actual size of the stored object

func (*ObjectInfo) GetDecryptedRange

func (o *ObjectInfo) GetDecryptedRange(rs *HTTPRangeSpec) (encOff, encLength, skipLen int64, seqNumber uint32, partStart int, err error)

GetDecryptedRange - To decrypt the range (off, length) of the decrypted object stream, we need to read the range (encOff, encLength) of the encrypted object stream to decrypt it, and compute skipLen, the number of bytes to skip in the beginning of the encrypted range.

In addition we also compute the object part number for where the requested range starts, along with the DARE sequence number within that part. For single part objects, the partStart will be 0.

func (ObjectInfo) IsCacheable

func (o ObjectInfo) IsCacheable() bool

IsCacheable returns if the object should be saved in the cache.

func (ObjectInfo) IsCompressed

func (o ObjectInfo) IsCompressed() bool

IsCompressed returns true if the object is marked as compressed.

func (ObjectInfo) IsCompressedOK

func (o ObjectInfo) IsCompressedOK() (bool, error)

IsCompressedOK returns whether the object is compressed and can be decompressed.

type ObjectLayer

type ObjectLayer interface {
	// Locking operations on object.
	NewNSLock(bucket string, objects ...string) RWLocker

	// Storage operations.
	Shutdown(context.Context) error
	NSScanner(ctx context.Context, bf *bloomFilter, updates chan<- DataUsageInfo) error

	BackendInfo() madmin.BackendInfo
	StorageInfo(ctx context.Context) (StorageInfo, []error)
	LocalStorageInfo(ctx context.Context) (StorageInfo, []error)

	// Bucket operations.
	MakeBucketWithLocation(ctx context.Context, bucket string, opts BucketOptions) error
	GetBucketInfo(ctx context.Context, bucket string) (bucketInfo BucketInfo, err error)
	ListBuckets(ctx context.Context) (buckets []BucketInfo, err error)
	DeleteBucket(ctx context.Context, bucket string, forceDelete bool) error
	ListObjects(ctx context.Context, bucket, prefix, marker, delimiter string, maxKeys int) (result ListObjectsInfo, err error)
	ListObjectsV2(ctx context.Context, bucket, prefix, continuationToken, delimiter string, maxKeys int, fetchOwner bool, startAfter string) (result ListObjectsV2Info, err error)
	ListObjectVersions(ctx context.Context, bucket, prefix, marker, versionMarker, delimiter string, maxKeys int) (result ListObjectVersionsInfo, err error)
	// Walk lists all objects including versions, delete markers.
	Walk(ctx context.Context, bucket, prefix string, results chan<- ObjectInfo, opts ObjectOptions) error

	// GetObjectNInfo returns a GetObjectReader that satisfies the
	// ReadCloser interface. The Close method unlocks the object
	// after reading, so it must always be called after usage.
	//
	// IMPORTANTLY, when implementations return err != nil, this
	// function MUST NOT return a non-nil ReadCloser.
	GetObjectNInfo(ctx context.Context, bucket, object string, rs *HTTPRangeSpec, h http.Header, lockType LockType, opts ObjectOptions) (reader *GetObjectReader, err error)
	GetObjectInfo(ctx context.Context, bucket, object string, opts ObjectOptions) (objInfo ObjectInfo, err error)
	PutObject(ctx context.Context, bucket, object string, data *PutObjReader, opts ObjectOptions) (objInfo ObjectInfo, err error)
	CopyObject(ctx context.Context, srcBucket, srcObject, destBucket, destObject string, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (objInfo ObjectInfo, err error)
	DeleteObject(ctx context.Context, bucket, object string, opts ObjectOptions) (ObjectInfo, error)
	DeleteObjects(ctx context.Context, bucket string, objects []ObjectToDelete, opts ObjectOptions) ([]DeletedObject, []error)

	// Multipart operations.
	ListMultipartUploads(ctx context.Context, bucket, prefix, keyMarker, uploadIDMarker, delimiter string, maxUploads int) (result ListMultipartsInfo, err error)
	NewMultipartUpload(ctx context.Context, bucket, object string, opts ObjectOptions) (uploadID string, err error)
	CopyObjectPart(ctx context.Context, srcBucket, srcObject, destBucket, destObject string, uploadID string, partID int,
		startOffset int64, length int64, srcInfo ObjectInfo, srcOpts, dstOpts ObjectOptions) (info PartInfo, err error)
	PutObjectPart(ctx context.Context, bucket, object, uploadID string, partID int, data *PutObjReader, opts ObjectOptions) (info PartInfo, err error)
	GetMultipartInfo(ctx context.Context, bucket, object, uploadID string, opts ObjectOptions) (info MultipartInfo, err error)
	ListObjectParts(ctx context.Context, bucket, object, uploadID string, partNumberMarker int, maxParts int, opts ObjectOptions) (result ListPartsInfo, err error)
	AbortMultipartUpload(ctx context.Context, bucket, object, uploadID string, opts ObjectOptions) error
	CompleteMultipartUpload(ctx context.Context, bucket, object, uploadID string, uploadedParts []CompletePart, opts ObjectOptions) (objInfo ObjectInfo, err error)

	// Policy operations
	SetBucketPolicy(context.Context, string, *policy.Policy) error
	GetBucketPolicy(context.Context, string) (*policy.Policy, error)
	DeleteBucketPolicy(context.Context, string) error

	// Supported operations check
	IsNotificationSupported() bool
	IsListenSupported() bool
	IsEncryptionSupported() bool
	IsTaggingSupported() bool
	IsCompressionSupported() bool

	SetDriveCounts() []int // list of erasure stripe size for each pool in order.

	// Healing operations.
	HealFormat(ctx context.Context, dryRun bool) (madmin.HealResultItem, error)
	HealBucket(ctx context.Context, bucket string, opts madmin.HealOpts) (madmin.HealResultItem, error)
	HealObject(ctx context.Context, bucket, object, versionID string, opts madmin.HealOpts) (madmin.HealResultItem, error)
	HealObjects(ctx context.Context, bucket, prefix string, opts madmin.HealOpts, fn HealObjectFn) error

	// Backend related metrics
	GetMetrics(ctx context.Context) (*BackendMetrics, error)

	// Returns health of the backend
	Health(ctx context.Context, opts HealthOptions) HealthResult
	ReadHealth(ctx context.Context) bool

	// ObjectTagging operations
	PutObjectTags(context.Context, string, string, string, ObjectOptions) (ObjectInfo, error)
	GetObjectTags(context.Context, string, string, ObjectOptions) (*tags.Tags, error)
	DeleteObjectTags(context.Context, string, string, ObjectOptions) (ObjectInfo, error)
}

ObjectLayer implements primitives for object API layer.

func NewFSObjectLayer

func NewFSObjectLayer(fsPath string) (ObjectLayer, error)

NewFSObjectLayer - initialize new fs object layer.

func NewGatewayLayerWithLocker

func NewGatewayLayerWithLocker(gwLayer ObjectLayer) ObjectLayer

NewGatewayLayerWithLocker - initialize gateway with locker.

type ObjectNameInvalid

type ObjectNameInvalid GenericError

ObjectNameInvalid - object name provided is invalid.

func (ObjectNameInvalid) Error

func (e ObjectNameInvalid) Error() string

Error returns string an error formatted as the given text.

type ObjectNamePrefixAsSlash

type ObjectNamePrefixAsSlash GenericError

ObjectNamePrefixAsSlash - object name has a slash as prefix.

func (ObjectNamePrefixAsSlash) Error

func (e ObjectNamePrefixAsSlash) Error() string

Error returns string an error formatted as the given text.

type ObjectNameTooLong

type ObjectNameTooLong GenericError

ObjectNameTooLong - object name too long.

func (ObjectNameTooLong) Error

func (e ObjectNameTooLong) Error() string

Error returns string an error formatted as the given text.

type ObjectNotFound

type ObjectNotFound GenericError

ObjectNotFound object does not exist.

func (ObjectNotFound) Error

func (e ObjectNotFound) Error() string

type ObjectOptions

type ObjectOptions struct {
	ServerSideEncryption encrypt.ServerSide
	VersionSuspended     bool      // indicates if the bucket was previously versioned but is currently suspended.
	Versioned            bool      // indicates if the bucket is versioned
	WalkVersions         bool      // indicates if the we are interested in walking versions
	VersionID            string    // Specifies the versionID which needs to be overwritten or read
	MTime                time.Time // Is only set in POST/PUT operations
	Expires              time.Time // Is only used in POST/PUT operations

	DeleteMarker                  bool                                                  // Is only set in DELETE operations for delete marker replication
	UserDefined                   map[string]string                                     // only set in case of POST/PUT operations
	PartNumber                    int                                                   // only useful in case of GetObject/HeadObject
	CheckPrecondFn                CheckPreconditionFn                                   // only set during GetObject/HeadObject/CopyObjectPart preconditional valuation
	DeleteMarkerReplicationStatus string                                                // Is only set in DELETE operations
	VersionPurgeStatus            VersionPurgeStatusType                                // Is only set in DELETE operations for delete marker version to be permanently deleted.
	TransitionStatus              string                                                // status of the transition
	NoLock                        bool                                                  // indicates to lower layers if the caller is expecting to hold locks.
	ProxyRequest                  bool                                                  // only set for GET/HEAD in active-active replication scenario
	ProxyHeaderSet                bool                                                  // only set for GET/HEAD in active-active replication scenario
	ParentIsObject                func(ctx context.Context, bucket, parent string) bool // Used to verify if parent is an object.

	// Use the maximum parity (N/2), used when
	// saving server configuration files
	MaxParity bool
}

ObjectOptions represents object options for ObjectLayer object operations

type ObjectPartInfo

type ObjectPartInfo struct {
	ETag       string `json:"etag,omitempty"`
	Number     int    `json:"number"`
	Size       int64  `json:"size"`
	ActualSize int64  `json:"actualSize"`
}

ObjectPartInfo Info of each part kept in the multipart metadata file after CompleteMultipartUpload() is called.

func (*ObjectPartInfo) DecodeMsg

func (z *ObjectPartInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (*ObjectPartInfo) EncodeMsg

func (z *ObjectPartInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (*ObjectPartInfo) MarshalMsg

func (z *ObjectPartInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (*ObjectPartInfo) Msgsize

func (z *ObjectPartInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*ObjectPartInfo) UnmarshalMsg

func (z *ObjectPartInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type ObjectToDelete

type ObjectToDelete struct {
	ObjectName string `xml:"Key"`
	VersionID  string `xml:"VersionId"`
	// Replication status of DeleteMarker
	DeleteMarkerReplicationStatus string `xml:"DeleteMarkerReplicationStatus"`
	// Status of versioned delete (of object or DeleteMarker)
	VersionPurgeStatus VersionPurgeStatusType `xml:"VersionPurgeStatus"`
	// Version ID of delete marker
	DeleteMarkerVersionID string `xml:"DeleteMarkerVersionId"`
	// PurgeTransitioned is nonempty if object is in transition tier
	PurgeTransitioned string `xml:"PurgeTransitioned"`
}

ObjectToDelete carries key name for the object to delete.

type ObjectTooLarge

type ObjectTooLarge GenericError

ObjectTooLarge error returned when the size of the object > max object size allowed (5G) per request.

func (ObjectTooLarge) Error

func (e ObjectTooLarge) Error() string

type ObjectTooSmall

type ObjectTooSmall GenericError

ObjectTooSmall error returned when the size of the object < what is expected.

func (ObjectTooSmall) Error

func (e ObjectTooSmall) Error() string

type ObjectVersion

type ObjectVersion struct {
	Object
	IsLatest  bool
	VersionID string `xml:"VersionId"`
	// contains filtered or unexported fields
}

ObjectVersion container for object version metadata

func (ObjectVersion) MarshalXML

func (o ObjectVersion) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML - marshal ObjectVersion

type OperationTimedOut

type OperationTimedOut struct {
}

OperationTimedOut - a timeout occurred.

func (OperationTimedOut) Error

func (e OperationTimedOut) Error() string

type OutputLocation

type OutputLocation struct {
	S3 S3Location `xml:"S3,omitempty"`
}

OutputLocation specifies bucket where object needs to be restored

func (*OutputLocation) IsEmpty

func (o *OutputLocation) IsEmpty() bool

IsEmpty returns true if output location not specified.

type Owner

type Owner struct {
	ID          string
	DisplayName string
}

Owner - bucket owner/principal

type ParentIsObject

type ParentIsObject GenericError

ParentIsObject object access is denied.

func (ParentIsObject) Error

func (e ParentIsObject) Error() string

type Part

type Part struct {
	PartNumber   int
	LastModified string
	ETag         string
	Size         int64
}

Part container for part metadata.

type PartInfo

type PartInfo struct {
	// Part number that identifies the part. This is a positive integer between
	// 1 and 10,000.
	PartNumber int

	// Date and time at which the part was uploaded.
	LastModified time.Time

	// Entity tag returned when the part was initially uploaded.
	ETag string

	// Size in bytes of the part.
	Size int64

	// Decompressed Size.
	ActualSize int64
}

PartInfo - represents individual part metadata.

func FromMinioClientObjectPart

func FromMinioClientObjectPart(op minio.ObjectPart) PartInfo

FromMinioClientObjectPart converts minio ObjectPart to PartInfo

type PartTooBig

type PartTooBig struct{}

PartTooBig returned if size of part is bigger than the allowed limit.

func (PartTooBig) Error

func (e PartTooBig) Error() string

type PartTooSmall

type PartTooSmall struct {
	PartSize   int64
	PartNumber int
	PartETag   string
}

PartTooSmall - error if part size is less than 5MB.

func (PartTooSmall) Error

func (e PartTooSmall) Error() string

type PeerLocks

type PeerLocks struct {
	Addr  string
	Locks map[string][]lockRequesterInfo
}

PeerLocks holds server information result of one node

type PolicyStatus

type PolicyStatus struct {
	XMLName  xml.Name `xml:"http://s3.amazonaws.com/doc/2006-03-01/ PolicyStatus" json:"-"`
	IsPublic string
}

PolicyStatus captures information returned by GetBucketPolicyStatusHandler

type PolicySys

type PolicySys struct{}

PolicySys - policy subsystem.

func NewPolicySys

func NewPolicySys() *PolicySys

NewPolicySys - creates new policy system.

func (*PolicySys) Get

func (sys *PolicySys) Get(bucket string) (*policy.Policy, error)

Get returns stored bucket policy

func (*PolicySys) IsAllowed

func (sys *PolicySys) IsAllowed(args policy.Args) bool

IsAllowed - checks given policy args is allowed to continue the Rest API.

type PoolEndpoints

type PoolEndpoints struct {
	SetCount     int
	DrivesPerSet int
	Endpoints    Endpoints
}

PoolEndpoints represent endpoints in a given pool along with its setCount and setDriveCount.

type PostPolicyForm

type PostPolicyForm struct {
	Expiration time.Time // Expiration date and time of the POST policy.
	Conditions struct {
		Policies []struct {
			Operator string
			Key      string
			Value    string
		}
		ContentLengthRange contentLengthRange
	}
}

PostPolicyForm provides strict static type conversion and validation for Amazon S3's POST policy JSON string.

type PostResponse

type PostResponse struct {
	Bucket   string
	Key      string
	ETag     string
	Location string
}

PostResponse container for POST object request when success_action_status is set to 201

type PreConditionFailed

type PreConditionFailed struct{}

PreConditionFailed - Check if copy precondition failed

func (PreConditionFailed) Error

func (e PreConditionFailed) Error() string

type PrefixAccessDenied

type PrefixAccessDenied GenericError

PrefixAccessDenied object access is denied.

func (PrefixAccessDenied) Error

func (e PrefixAccessDenied) Error() string

type PresignedGetArgs

type PresignedGetArgs struct {
	// Host header required for signed headers.
	HostName string `json:"host"`

	// Bucket name of the object to be presigned.
	BucketName string `json:"bucket"`

	// Object name to be presigned.
	ObjectName string `json:"object"`

	// Expiry in seconds.
	Expiry int64 `json:"expiry"`
}

PresignedGetArgs - presigned-get API args.

func (*PresignedGetArgs) ToKeyValue

func (args *PresignedGetArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for PresignedGetArgs

type PresignedGetRep

type PresignedGetRep struct {
	UIVersion string `json:"uiVersion"`
	// Presigned URL of the object.
	URL string `json:"url"`
}

PresignedGetRep - presigned-get URL reply.

type ProxyEndpoint

type ProxyEndpoint struct {
	Endpoint
	Transport http.RoundTripper
}

ProxyEndpoint - endpoint used for proxy redirects See proxyRequest() for details.

func GetProxyEndpoints

func GetProxyEndpoints(endpointServerPools EndpointServerPools) []ProxyEndpoint

GetProxyEndpoints - get all endpoints that can be used to proxy list request.

type PutObjReader

type PutObjReader struct {
	*hash.Reader // actual data stream
	// contains filtered or unexported fields
}

PutObjReader is a type that wraps sio.EncryptReader and underlying hash.Reader in a struct

func NewPutObjReader

func NewPutObjReader(rawReader *hash.Reader) *PutObjReader

NewPutObjReader returns a new PutObjReader. It uses given hash.Reader's MD5Current method to construct md5sum when requested downstream.

func (*PutObjReader) MD5CurrentHexString

func (p *PutObjReader) MD5CurrentHexString() string

MD5CurrentHexString returns the current MD5Sum or encrypted MD5Sum as a hex encoded string

func (*PutObjReader) Size

func (p *PutObjReader) Size() int64

Size returns the absolute number of bytes the Reader will return during reading. It returns -1 for unlimited data.

func (*PutObjReader) WithEncryption

func (p *PutObjReader) WithEncryption(encReader *hash.Reader, objEncKey *crypto.ObjectKey) (*PutObjReader, error)

WithEncryption sets up encrypted reader and the sealing for content md5sum using objEncKey. Unsealed md5sum is computed from the rawReader setup when NewPutObjReader was called. It returns an error if called on an uninitialized PutObjReader.

type RWLocker

type RWLocker interface {
	GetLock(ctx context.Context, timeout *dynamicTimeout) (newCtx context.Context, timedOutErr error)
	Unlock()
	GetRLock(ctx context.Context, timeout *dynamicTimeout) (newCtx context.Context, timedOutErr error)
	RUnlock()
}

RWLocker - locker interface to introduce GetRLock, RUnlock.

type RangeInfo

type RangeInfo struct {
	Range string
	File  string
	Size  int64
}

RangeInfo has the range, file and range length information for a cached range.

func (*RangeInfo) Empty

func (r *RangeInfo) Empty() bool

Empty returns true if this is an empty struct

type RemoveBucketArgs

type RemoveBucketArgs struct {
	BucketName string `json:"bucketName"`
}

RemoveBucketArgs - remove bucket args.

func (*RemoveBucketArgs) ToKeyValue

func (args *RemoveBucketArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for RemoveBucketArgs

type RemoveObjectArgs

type RemoveObjectArgs struct {
	Objects    []string `json:"objects"`    // Contains objects, prefixes.
	BucketName string   `json:"bucketname"` // Contains bucket name.
}

RemoveObjectArgs - args to remove an object, JSON will look like.

{
    "bucketname": "testbucket",
    "objects": [
        "photos/hawaii/",
        "photos/maldives/",
        "photos/sanjose.jpg"
    ]
}

func (*RemoveObjectArgs) ToKeyValue

func (args *RemoveObjectArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for RemoveObjectArgs

type ReplicationPool

type ReplicationPool struct {
	// contains filtered or unexported fields
}

ReplicationPool describes replication pool

func NewReplicationPool

func NewReplicationPool(ctx context.Context, o ObjectLayer, sz int) *ReplicationPool

NewReplicationPool creates a pool of replication workers of specified size

func (*ReplicationPool) AddWorker

func (p *ReplicationPool) AddWorker()

AddWorker adds a replication worker to the pool

func (*ReplicationPool) Resize

func (p *ReplicationPool) Resize(n int)

Resize replication pool to new size

type RequestStats

type RequestStats struct {
	Get  uint64 `json:"Get"`
	Head uint64 `json:"Head"`
	Put  uint64 `json:"Put"`
	Post uint64 `json:"Post"`
}

RequestStats - counts for Get and Head requests

type RestoreObjectRequest

type RestoreObjectRequest struct {
	XMLName          xml.Name           `xml:"http://s3.amazonaws.com/doc/2006-03-01/ RestoreRequest" json:"-"`
	Days             int                `xml:"Days,omitempty"`
	Type             RestoreRequestType `xml:"Type,omitempty"`
	Tier             string             `xml:"Tier,-"`
	Description      string             `xml:"Description,omitempty"`
	SelectParameters *SelectParameters  `xml:"SelectParameters,omitempty"`
	OutputLocation   OutputLocation     `xml:"OutputLocation,omitempty"`
}

RestoreObjectRequest - xml to restore a transitioned object

type RestoreRequestType

type RestoreRequestType string

RestoreRequestType represents type of restore.

const (
	// SelectRestoreRequest specifies select request. This is the only valid value
	SelectRestoreRequest RestoreRequestType = "SELECT"
)

type S3Location

type S3Location struct {
	BucketName   string          `xml:"BucketName,omitempty"`
	Encryption   Encryption      `xml:"Encryption,omitempty"`
	Prefix       string          `xml:"Prefix,omitempty"`
	StorageClass string          `xml:"StorageClass,omitempty"`
	Tagging      *tags.Tags      `xml:"Tagging,omitempty"`
	UserMetadata []MetadataEntry `xml:"UserMetadata"`
}

S3Location specifies s3 location that receives result of a restore object request

type STSError

type STSError struct {
	Code           string
	Description    string
	HTTPStatusCode int
}

STSError structure

type STSErrorCode

type STSErrorCode int

STSErrorCode type of error status.

const (
	ErrSTSNone STSErrorCode = iota
	ErrSTSAccessDenied
	ErrSTSMissingParameter
	ErrSTSInvalidParameterValue
	ErrSTSWebIdentityExpiredToken
	ErrSTSClientGrantsExpiredToken
	ErrSTSInvalidClientGrantsToken
	ErrSTSMalformedPolicyDocument
	ErrSTSNotInitialized
	ErrSTSInternalError
)

Error codes, non exhaustive list - http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html

type STSErrorResponse

type STSErrorResponse struct {
	XMLName xml.Name `xml:"https://sts.amazonaws.com/doc/2011-06-15/ ErrorResponse" json:"-"`
	Error   struct {
		Type    string `xml:"Type"`
		Code    string `xml:"Code"`
		Message string `xml:"Message"`
	} `xml:"Error"`
	RequestID string `xml:"RequestId"`
}

STSErrorResponse - error response format

type SealMD5CurrFn

type SealMD5CurrFn func([]byte) []byte

SealMD5CurrFn seals md5sum with object encryption key and returns sealed md5sum

type SelectParameters

type SelectParameters struct {
	s3select.S3Select
}

SelectParameters specifies sql select parameters

func (*SelectParameters) IsEmpty

func (sp *SelectParameters) IsEmpty() bool

IsEmpty returns true if no select parameters set

func (*SelectParameters) UnmarshalXML

func (sp *SelectParameters) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML - decodes XML data.

type ServerConnStats

type ServerConnStats struct {
	TotalInputBytes  uint64 `json:"transferred"`
	TotalOutputBytes uint64 `json:"received"`
	Throughput       uint64 `json:"throughput,omitempty"`
	S3InputBytes     uint64 `json:"transferredS3"`
	S3OutputBytes    uint64 `json:"receivedS3"`
}

ServerConnStats holds transferred bytes from/to the server

type ServerHTTPAPIStats

type ServerHTTPAPIStats struct {
	APIStats map[string]int `json:"apiStats"`
}

ServerHTTPAPIStats holds total number of HTTP operations from/to the server, including the average duration the call was spent.

type ServerHTTPStats

type ServerHTTPStats struct {
	S3RequestsInQueue int32              `json:"s3RequestsInQueue"`
	CurrentS3Requests ServerHTTPAPIStats `json:"currentS3Requests"`
	TotalS3Requests   ServerHTTPAPIStats `json:"totalS3Requests"`
	TotalS3Errors     ServerHTTPAPIStats `json:"totalS3Errors"`
}

ServerHTTPStats holds all type of http operations performed to/from the server including their average execution time.

type ServerInfo

type ServerInfo struct {
	Error string          `json:"error"`
	Addr  string          `json:"addr"`
	Data  *ServerInfoData `json:"data"`
}

ServerInfo holds server information result of one node

type ServerInfoData

type ServerInfoData struct {
	ConnStats  ServerConnStats  `json:"network"`
	HTTPStats  ServerHTTPStats  `json:"http"`
	Properties ServerProperties `json:"server"`
}

ServerInfoData holds storage, connections and other information of a given server.

type ServerInfoRep

type ServerInfoRep struct {
	MinioVersion    string
	MinioMemory     string
	MinioPlatform   string
	MinioRuntime    string
	MinioGlobalInfo map[string]interface{}
	MinioUserInfo   map[string]interface{}
	UIVersion       string `json:"uiVersion"`
}

ServerInfoRep - server info reply.

type ServerProperties

type ServerProperties struct {
	Uptime       int64    `json:"uptime"`
	Version      string   `json:"version"`
	CommitID     string   `json:"commitID"`
	DeploymentID string   `json:"deploymentID"`
	Region       string   `json:"region"`
	SQSARN       []string `json:"sqsARN"`
}

ServerProperties holds some server information such as, version, region uptime, etc..

type ServerSystemConfig

type ServerSystemConfig struct {
	MinioPlatform  string
	MinioRuntime   string
	MinioEndpoints EndpointServerPools
}

ServerSystemConfig - captures information about server configuration.

func (ServerSystemConfig) Diff

Diff - returns error on first difference found in two configs.

type SetAuthArgs

type SetAuthArgs struct {
	CurrentAccessKey string `json:"currentAccessKey"`
	CurrentSecretKey string `json:"currentSecretKey"`
	NewAccessKey     string `json:"newAccessKey"`
	NewSecretKey     string `json:"newSecretKey"`
}

SetAuthArgs - argument for SetAuth

func (*SetAuthArgs) ToKeyValue

func (args *SetAuthArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for SetAuthArgs SetAuthArgs doesn't implement the ToKeyValue interface that will be used by logger subsystem down the line, to avoid leaking credentials to an external log target

type SetAuthReply

type SetAuthReply struct {
	Token       string            `json:"token"`
	UIVersion   string            `json:"uiVersion"`
	PeerErrMsgs map[string]string `json:"peerErrMsgs"`
}

SetAuthReply - reply for SetAuth

type SetBucketPolicyWebArgs

type SetBucketPolicyWebArgs struct {
	BucketName string `json:"bucketName"`
	Prefix     string `json:"prefix"`
	Policy     string `json:"policy"`
}

SetBucketPolicyWebArgs - set bucket policy args.

func (*SetBucketPolicyWebArgs) ToKeyValue

func (args *SetBucketPolicyWebArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for SetBucketPolicyWebArgs

type SetupType

type SetupType int

SetupType - enum for setup type.

const (
	// UnknownSetupType - starts with unknown setup type.
	UnknownSetupType SetupType = iota

	// FSSetupType - FS setup type enum.
	FSSetupType

	// ErasureSetupType - Erasure setup type enum.
	ErasureSetupType

	// DistErasureSetupType - Distributed Erasure setup type enum.
	DistErasureSetupType

	// GatewaySetupType - gateway setup type enum.
	GatewaySetupType
)

func (SetupType) String

func (setupType SetupType) String() string

type SignatureDoesNotMatch

type SignatureDoesNotMatch struct{}

SignatureDoesNotMatch - when content md5 does not match with what was sent from client.

func (SignatureDoesNotMatch) Error

func (e SignatureDoesNotMatch) Error() string

type SlowDown

type SlowDown struct{}

SlowDown too many file descriptors open or backend busy .

func (SlowDown) Error

func (e SlowDown) Error() string

type StartProfilingResult

type StartProfilingResult struct {
	NodeName string `json:"nodeName"`
	Success  bool   `json:"success"`
	Error    string `json:"error"`
}

StartProfilingResult contains the status of the starting profiling action in a given server

type StatInfo

type StatInfo struct {
	Size    int64     `json:"size"`    // Size of the object `xl.meta`.
	ModTime time.Time `json:"modTime"` // ModTime of the object `xl.meta`.
}

StatInfo - carries stat information of the object.

func (*StatInfo) DecodeMsg

func (z *StatInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (StatInfo) EncodeMsg

func (z StatInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (StatInfo) MarshalMsg

func (z StatInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (StatInfo) Msgsize

func (z StatInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*StatInfo) UnmarshalMsg

func (z *StatInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type StorageAPI

type StorageAPI interface {
	// Stringified version of disk.
	String() string

	// Storage operations.
	IsOnline() bool // Returns true if disk is online.
	IsLocal() bool

	Hostname() string   // Returns host name if remote host.
	Endpoint() Endpoint // Returns endpoint.

	Close() error
	GetDiskID() (string, error)
	SetDiskID(id string)
	Healing() *healingTracker // Returns nil if disk is not healing.

	DiskInfo(ctx context.Context) (info DiskInfo, err error)
	NSScanner(ctx context.Context, cache dataUsageCache) (dataUsageCache, error)

	// Volume operations.
	MakeVol(ctx context.Context, volume string) (err error)
	MakeVolBulk(ctx context.Context, volumes ...string) (err error)
	ListVols(ctx context.Context) (vols []VolInfo, err error)
	StatVol(ctx context.Context, volume string) (vol VolInfo, err error)
	DeleteVol(ctx context.Context, volume string, forceDelete bool) (err error)

	// WalkDir will walk a directory on disk and return a metacache stream on wr.
	WalkDir(ctx context.Context, opts WalkDirOptions, wr io.Writer) error

	// Metadata operations
	DeleteVersion(ctx context.Context, volume, path string, fi FileInfo, forceDelMarker bool) error
	DeleteVersions(ctx context.Context, volume string, versions []FileInfo) []error
	WriteMetadata(ctx context.Context, volume, path string, fi FileInfo) error
	ReadVersion(ctx context.Context, volume, path, versionID string, readData bool) (FileInfo, error)
	RenameData(ctx context.Context, srcVolume, srcPath, dataDir, dstVolume, dstPath string) error

	// File operations.
	ListDir(ctx context.Context, volume, dirPath string, count int) ([]string, error)
	ReadFile(ctx context.Context, volume string, path string, offset int64, buf []byte, verifier *BitrotVerifier) (n int64, err error)
	AppendFile(ctx context.Context, volume string, path string, buf []byte) (err error)
	CreateFile(ctx context.Context, volume, path string, size int64, reader io.Reader) error
	ReadFileStream(ctx context.Context, volume, path string, offset, length int64) (io.ReadCloser, error)
	RenameFile(ctx context.Context, srcVolume, srcPath, dstVolume, dstPath string) error
	CheckParts(ctx context.Context, volume string, path string, fi FileInfo) error
	CheckFile(ctx context.Context, volume string, path string) (err error)
	Delete(ctx context.Context, volume string, path string, recursive bool) (err error)
	VerifyFile(ctx context.Context, volume, path string, fi FileInfo) error

	// Write all data, syncs the data to disk.
	// Should be used for smaller payloads.
	WriteAll(ctx context.Context, volume string, path string, b []byte) (err error)

	// Read all.
	ReadAll(ctx context.Context, volume string, path string) (buf []byte, err error)

	GetDiskLoc() (poolIdx, setIdx, diskIdx int) // Retrieve location indexes.
	SetDiskLoc(poolIdx, setIdx, diskIdx int)    // Set location indexes.
}

StorageAPI interface.

var OfflineDisk StorageAPI // zero value is nil

OfflineDisk represents an unavailable disk.

type StorageErr

type StorageErr string

StorageErr represents error generated by xlStorage call.

func (StorageErr) Error

func (h StorageErr) Error() string

type StorageFull

type StorageFull struct{}

StorageFull storage ran out of space.

func (StorageFull) Error

func (e StorageFull) Error() string

type StorageInfo

type StorageInfo = madmin.StorageInfo

StorageInfo - represents total capacity of underlying storage.

type StorageInfoRep

type StorageInfoRep struct {
	Used      uint64 `json:"used"`
	UIVersion string `json:"uiVersion"`
}

StorageInfoRep - contains storage usage statistics.

type StringMap

type StringMap map[string]string

StringMap is a map[string]string.

func (StringMap) MarshalXML

func (s StringMap) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML - StringMap marshals into XML.

type TargetClient

type TargetClient struct {
	*miniogo.Client
	// contains filtered or unexported fields
}

TargetClient is the struct for remote target client.

type ToKeyValuer

type ToKeyValuer interface {
	ToKeyValue() KeyValueMap
}

ToKeyValuer interface wraps ToKeyValue method that allows types to marshal their values as a map of structure member names to their values, as strings

type TreeWalkPool

type TreeWalkPool struct {
	// contains filtered or unexported fields
}

TreeWalkPool - pool of treeWalk go routines. A treeWalk is added to the pool by Set() and removed either by doing a Release() or if the concerned timer goes off. treeWalkPool's purpose is to maintain active treeWalk go-routines in a map so that it can be looked up across related list calls.

func NewTreeWalkPool

func NewTreeWalkPool(timeout time.Duration) *TreeWalkPool

NewTreeWalkPool - initialize new tree walk pool.

func (*TreeWalkPool) Release

func (t *TreeWalkPool) Release(params listParams) (resultCh chan TreeWalkResult, endWalkCh chan struct{})

Release - selects a treeWalk from the pool based on the input listParams, removes it from the pool, and returns the TreeWalkResult channel. Returns nil if listParams does not have an associated treeWalk.

func (*TreeWalkPool) Set

func (t *TreeWalkPool) Set(params listParams, resultCh chan TreeWalkResult, endWalkCh chan struct{})

Set - adds a treeWalk to the treeWalkPool. Also starts a timer go-routine that ends when:

  1. time.After() expires after t.timeOut seconds. The expiration is needed so that the treeWalk go-routine resources are freed after a timeout if the S3 client does only partial listing of objects.
  2. Release() signals the timer go-routine to end on endTimerCh. During listing the timer should not timeout and end the treeWalk go-routine, hence the timer go-routine should be ended.

type TreeWalkResult

type TreeWalkResult struct {
	// contains filtered or unexported fields
}

TreeWalkResult - Tree walk result carries results of tree walking.

type URLTokenReply

type URLTokenReply struct {
	Token     string `json:"token"`
	UIVersion string `json:"uiVersion"`
}

URLTokenReply contains the reply for CreateURLToken.

type UnsupportedDelimiter

type UnsupportedDelimiter struct {
	Delimiter string
}

UnsupportedDelimiter - unsupported delimiter.

func (UnsupportedDelimiter) Error

func (e UnsupportedDelimiter) Error() string

type UnsupportedMetadata

type UnsupportedMetadata struct{}

UnsupportedMetadata - unsupported metadata

func (UnsupportedMetadata) Error

func (e UnsupportedMetadata) Error() string

type Upload

type Upload struct {
	Key          string
	UploadID     string `xml:"UploadId"`
	Initiator    Initiator
	Owner        Owner
	StorageClass string
	Initiated    string
}

Upload container for in progress multipart upload

type UserIdentity

type UserIdentity struct {
	Version     int              `json:"version"`
	Credentials auth.Credentials `json:"credentials"`
}

UserIdentity represents a user's secret key and their status

type UsersSysType

type UsersSysType string

UsersSysType - defines the type of users and groups system that is active on the server.

const (
	// This mode uses the internal users system in MinIO.
	MinIOUsersSysType UsersSysType = "MinIOUsersSys"

	// This mode uses users and groups from a configured LDAP
	// server.
	LDAPUsersSysType UsersSysType = "LDAPUsersSys"
)

Types of users configured in the server.

type VerifyFileResp

type VerifyFileResp struct {
	Err error
}

VerifyFileResp - VerifyFile()'s response.

type VersionNotFound

type VersionNotFound GenericError

VersionNotFound version does not exist.

func (VersionNotFound) Error

func (e VersionNotFound) Error() string

type VersionPurgeStatusType

type VersionPurgeStatusType string

VersionPurgeStatusType represents status of a versioned delete or permanent delete w.r.t bucket replication

const (
	// Pending - versioned delete replication is pending.
	Pending VersionPurgeStatusType = "PENDING"

	// Complete - versioned delete replication is now complete, erase version on disk.
	Complete VersionPurgeStatusType = "COMPLETE"

	// Failed - versioned delete replication failed.
	Failed VersionPurgeStatusType = "FAILED"
)

func (*VersionPurgeStatusType) DecodeMsg

func (z *VersionPurgeStatusType) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (VersionPurgeStatusType) Empty

func (v VersionPurgeStatusType) Empty() bool

Empty returns true if purge status was not set.

func (VersionPurgeStatusType) EncodeMsg

func (z VersionPurgeStatusType) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (VersionPurgeStatusType) MarshalMsg

func (z VersionPurgeStatusType) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (VersionPurgeStatusType) Msgsize

func (z VersionPurgeStatusType) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (VersionPurgeStatusType) Pending

func (v VersionPurgeStatusType) Pending() bool

Pending returns true if the version is pending purge.

func (*VersionPurgeStatusType) UnmarshalMsg

func (z *VersionPurgeStatusType) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type VersionType

type VersionType uint8

VersionType defines the type of journal type of the current entry.

const (
	ObjectType VersionType = 1
	DeleteType VersionType = 2
	LegacyType VersionType = 3
)

List of different types of journal type

func (*VersionType) DecodeMsg

func (z *VersionType) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (VersionType) EncodeMsg

func (z VersionType) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (VersionType) MarshalMsg

func (z VersionType) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (VersionType) Msgsize

func (z VersionType) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*VersionType) UnmarshalMsg

func (z *VersionType) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type VolInfo

type VolInfo struct {
	// Name of the volume.
	Name string

	// Date and time when the volume was created.
	Created time.Time
}

VolInfo - represents volume stat information. The above means that any added/deleted fields are incompatible.

func (*VolInfo) DecodeMsg

func (z *VolInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (VolInfo) EncodeMsg

func (z VolInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (VolInfo) MarshalMsg

func (z VolInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (VolInfo) Msgsize

func (z VolInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*VolInfo) UnmarshalMsg

func (z *VolInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type VolsInfo

type VolsInfo []VolInfo

VolsInfo is a collection of volume(bucket) information

func (*VolsInfo) DecodeMsg

func (z *VolsInfo) DecodeMsg(dc *msgp.Reader) (err error)

DecodeMsg implements msgp.Decodable

func (VolsInfo) EncodeMsg

func (z VolsInfo) EncodeMsg(en *msgp.Writer) (err error)

EncodeMsg implements msgp.Encodable

func (VolsInfo) MarshalMsg

func (z VolsInfo) MarshalMsg(b []byte) (o []byte, err error)

MarshalMsg implements msgp.Marshaler

func (VolsInfo) Msgsize

func (z VolsInfo) Msgsize() (s int)

Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message

func (*VolsInfo) UnmarshalMsg

func (z *VolsInfo) UnmarshalMsg(bts []byte) (o []byte, err error)

UnmarshalMsg implements msgp.Unmarshaler

type WalkDirOptions

type WalkDirOptions struct {
	// Bucket to scanner
	Bucket string

	// Directory inside the bucket.
	BaseDir string

	// Do a full recursive scan.
	Recursive bool

	// ReportNotFound will return errFileNotFound if all disks reports the BaseDir cannot be found.
	ReportNotFound bool

	// FilterPrefix will only return results with given prefix within folder.
	// Should never contain a slash.
	FilterPrefix string

	// ForwardTo will forward to the given object path.
	ForwardTo string
}

WalkDirOptions provides options for WalkDir operations.

type WebBucketInfo

type WebBucketInfo struct {
	// The name of the bucket.
	Name string `json:"name"`
	// Date the bucket was created.
	CreationDate time.Time `json:"creationDate"`
}

WebBucketInfo container for list buckets metadata.

type WebGenericArgs

type WebGenericArgs struct{}

WebGenericArgs - empty struct for calls that don't accept arguments for ex. ServerInfo

func (*WebGenericArgs) ToKeyValue

func (args *WebGenericArgs) ToKeyValue() KeyValueMap

ToKeyValue implementation for WebGenericArgs

type WebGenericRep

type WebGenericRep struct {
	UIVersion string `json:"uiVersion"`
}

WebGenericRep - reply structure for calls for which reply is success/failure for ex. RemoveObject MakeBucket

type WebIdentityResult

type WebIdentityResult struct {
	// The identifiers for the temporary security credentials that the operation
	// returns.
	AssumedRoleUser AssumedRoleUser `xml:",omitempty"`

	// The intended audience (also known as client ID) of the web identity token.
	// This is traditionally the client identifier issued to the application that
	// requested the client grants.
	Audience string `xml:",omitempty"`

	// The temporary security credentials, which include an access key ID, a secret
	// access key, and a security (or session) token.
	//
	// Note: The size of the security token that STS APIs return is not fixed. We
	// strongly recommend that you make no assumptions about the maximum size. As
	// of this writing, the typical size is less than 4096 bytes, but that can vary.
	// Also, future updates to AWS might require larger sizes.
	Credentials auth.Credentials `xml:",omitempty"`

	// A percentage value that indicates the size of the policy in packed form.
	// The service rejects any policy with a packed size greater than 100 percent,
	// which means the policy exceeded the allowed space.
	PackedPolicySize int `xml:",omitempty"`

	// The issuing authority of the web identity token presented. For OpenID Connect
	// ID tokens, this contains the value of the iss field. For OAuth 2.0 access tokens,
	// this contains the value of the ProviderId parameter that was passed in the
	// AssumeRoleWithWebIdentity request.
	Provider string `xml:",omitempty"`

	// The unique user identifier that is returned by the identity provider.
	// This identifier is associated with the Token that was submitted
	// with the AssumeRoleWithWebIdentity call. The identifier is typically unique to
	// the user and the application that acquired the WebIdentityToken (pairwise identifier).
	// For OpenID Connect ID tokens, this field contains the value returned by the identity
	// provider as the token's sub (Subject) claim.
	SubjectFromWebIdentityToken string `xml:",omitempty"`
}

WebIdentityResult - Contains the response to a successful AssumeRoleWithWebIdentity request, including temporary credentials that can be used to make MinIO API requests.

type WebObjectInfo

type WebObjectInfo struct {
	// Name of the object
	Key string `json:"name"`
	// Date and time the object was last modified.
	LastModified time.Time `json:"lastModified"`
	// Size in bytes of the object.
	Size int64 `json:"size"`
	// ContentType is mime type of the object.
	ContentType string `json:"contentType"`
}

WebObjectInfo container for list objects metadata.

Source Files

Directories

Path Synopsis
api
dns
Package crypto implements AWS S3 related cryptographic building blocks for implementing Server-Side-Encryption (SSE-S3) and Server-Side-Encryption with customer provided keys (SSE-C).
Package crypto implements AWS S3 related cryptographic building blocks for implementing Server-Side-Encryption (SSE-S3) and Server-Side-Encryption with customer provided keys (SSE-C).
gcs
nas
s3

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL