mirror of
https://github.com/minio/minio.git
synced 2024-12-26 23:25:54 -05:00
c829e3a13b
With this change, MinIO's ILM supports transitioning objects to a remote tier. This change includes support for Azure Blob Storage, AWS S3 compatible object storage incl. MinIO and Google Cloud Storage as remote tier storage backends. Some new additions include: - Admin APIs remote tier configuration management - Simple journal to track remote objects to be 'collected' This is used by object API handlers which 'mutate' object versions by overwriting/replacing content (Put/CopyObject) or removing the version itself (e.g DeleteObjectVersion). - Rework of previous ILM transition to fit the new model In the new model, a storage class (a.k.a remote tier) is defined by the 'remote' object storage type (one of s3, azure, GCS), bucket name and a prefix. * Fixed bugs, review comments, and more unit-tests - Leverage inline small object feature - Migrate legacy objects to the latest object format before transitioning - Fix restore to particular version if specified - Extend SharedDataDirCount to handle transitioned and restored objects - Restore-object should accept version-id for version-suspended bucket (#12091) - Check if remote tier creds have sufficient permissions - Bonus minor fixes to existing error messages Co-authored-by: Poorna Krishnamoorthy <poorna@minio.io> Co-authored-by: Krishna Srinivas <krishna@minio.io> Signed-off-by: Harshavardhana <harsha@minio.io>
90 lines
3.8 KiB
Go
90 lines
3.8 KiB
Go
// Copyright (c) 2015-2021 MinIO, Inc.
|
|
//
|
|
// This file is part of MinIO Object Storage stack
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
package cmd
|
|
|
|
const (
|
|
peerRESTVersion = "v15" // Add LoadTransitionTierConfig
|
|
peerRESTVersionPrefix = SlashSeparator + peerRESTVersion
|
|
peerRESTPrefix = minioReservedBucketPath + "/peer"
|
|
peerRESTPath = peerRESTPrefix + peerRESTVersionPrefix
|
|
)
|
|
|
|
const (
|
|
peerRESTMethodHealth = "/health"
|
|
peerRESTMethodServerInfo = "/serverinfo"
|
|
peerRESTMethodDriveInfo = "/driveinfo"
|
|
peerRESTMethodNetInfo = "/netinfo"
|
|
peerRESTMethodCPUInfo = "/cpuinfo"
|
|
peerRESTMethodDiskHwInfo = "/diskhwinfo"
|
|
peerRESTMethodOsInfo = "/osinfo"
|
|
peerRESTMethodMemInfo = "/meminfo"
|
|
peerRESTMethodProcInfo = "/procinfo"
|
|
peerRESTMethodDispatchNetInfo = "/dispatchnetinfo"
|
|
peerRESTMethodDeleteBucketMetadata = "/deletebucketmetadata"
|
|
peerRESTMethodLoadBucketMetadata = "/loadbucketmetadata"
|
|
peerRESTMethodGetBucketStats = "/getbucketstats"
|
|
peerRESTMethodServerUpdate = "/serverupdate"
|
|
peerRESTMethodSignalService = "/signalservice"
|
|
peerRESTMethodBackgroundHealStatus = "/backgroundhealstatus"
|
|
peerRESTMethodGetLocks = "/getlocks"
|
|
peerRESTMethodLoadUser = "/loaduser"
|
|
peerRESTMethodLoadServiceAccount = "/loadserviceaccount"
|
|
peerRESTMethodDeleteUser = "/deleteuser"
|
|
peerRESTMethodDeleteServiceAccount = "/deleteserviceaccount"
|
|
peerRESTMethodLoadPolicy = "/loadpolicy"
|
|
peerRESTMethodLoadPolicyMapping = "/loadpolicymapping"
|
|
peerRESTMethodDeletePolicy = "/deletepolicy"
|
|
peerRESTMethodLoadGroup = "/loadgroup"
|
|
peerRESTMethodStartProfiling = "/startprofiling"
|
|
peerRESTMethodDownloadProfilingData = "/downloadprofilingdata"
|
|
peerRESTMethodCycleBloom = "/cyclebloom"
|
|
peerRESTMethodTrace = "/trace"
|
|
peerRESTMethodListen = "/listen"
|
|
peerRESTMethodLog = "/log"
|
|
peerRESTMethodGetLocalDiskIDs = "/getlocaldiskids"
|
|
peerRESTMethodGetBandwidth = "/bandwidth"
|
|
peerRESTMethodGetMetacacheListing = "/getmetacache"
|
|
peerRESTMethodUpdateMetacacheListing = "/updatemetacache"
|
|
peerRESTMethodGetPeerMetrics = "/peermetrics"
|
|
peerRESTMethodLoadTransitionTierConfig = "/loadtransitiontierconfig"
|
|
)
|
|
|
|
const (
|
|
peerRESTBucket = "bucket"
|
|
peerRESTBuckets = "buckets"
|
|
peerRESTUser = "user"
|
|
peerRESTGroup = "group"
|
|
peerRESTUserTemp = "user-temp"
|
|
peerRESTPolicy = "policy"
|
|
peerRESTUserOrGroup = "user-or-group"
|
|
peerRESTIsGroup = "is-group"
|
|
peerRESTSignal = "signal"
|
|
peerRESTProfiler = "profiler"
|
|
peerRESTTraceErr = "err"
|
|
peerRESTTraceInternal = "internal"
|
|
peerRESTTraceStorage = "storage"
|
|
peerRESTTraceS3 = "s3"
|
|
peerRESTTraceOS = "os"
|
|
peerRESTTraceThreshold = "threshold"
|
|
|
|
peerRESTListenBucket = "bucket"
|
|
peerRESTListenPrefix = "prefix"
|
|
peerRESTListenSuffix = "suffix"
|
|
peerRESTListenEvents = "events"
|
|
)
|