fix: relax some replication validations (#10210)

Also inherit storage class from source object
if replication configuration does not have a storage
class specified for destination bucket.
This commit is contained in:
poornas 2020-08-05 20:01:20 -07:00 committed by GitHub
parent 195f95196e
commit 121164db56
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 8 deletions

View File

@ -117,12 +117,16 @@ func putReplicationOpts(dest replication.Destination, objInfo ObjectInfo) (putOp
if err != nil { if err != nil {
return return
} }
sc := dest.StorageClass
if sc == "" {
sc = objInfo.StorageClass
}
putOpts = miniogo.PutObjectOptions{ putOpts = miniogo.PutObjectOptions{
UserMetadata: meta, UserMetadata: meta,
UserTags: tag.ToMap(), UserTags: tag.ToMap(),
ContentType: objInfo.ContentType, ContentType: objInfo.ContentType,
ContentEncoding: objInfo.ContentEncoding, ContentEncoding: objInfo.ContentEncoding,
StorageClass: dest.StorageClass, StorageClass: sc,
ReplicationVersionID: objInfo.VersionID, ReplicationVersionID: objInfo.VersionID,
ReplicationStatus: miniogo.ReplicationStatusReplica, ReplicationStatus: miniogo.ReplicationStatusReplica,
ReplicationMTime: objInfo.ModTime, ReplicationMTime: objInfo.ModTime,

View File

@ -59,7 +59,7 @@ The replication configuration can now be added to the source bucket by applying
``` ```
``` ```
mc replicate add myminio/srcbucket/Tax --priority 1 --arn "arn:minio:replication::c5be6b16-769d-432a-9ef1-4567081f3566:destbucket" --tags "Year=2019&Company=AcmeCorp" --storage-class "STANDARD" mc replicate add myminio/srcbucket/Tax --priority 1 --arn "arn:minio:replication:us-east-1:c5be6b16-769d-432a-9ef1-4567081f3566:destbucket" --tags "Year=2019&Company=AcmeCorp" --storage-class "STANDARD"
Replication configuration applied successfully to myminio/srcbucket. Replication configuration applied successfully to myminio/srcbucket.
``` ```

View File

@ -145,11 +145,8 @@ func (c Config) FilterActionableRules(obj ObjectOpts) []Rule {
// GetDestination returns destination bucket and storage class. // GetDestination returns destination bucket and storage class.
func (c Config) GetDestination() Destination { func (c Config) GetDestination() Destination {
for _, rule := range c.Rules { if len(c.Rules) > 0 {
if rule.Status == Disabled { return c.Rules[0].Destination
continue
}
return rule.Destination
} }
return Destination{} return Destination{}
} }

View File

@ -146,7 +146,7 @@ func (r Rule) Validate(bucket string, sameTarget bool) error {
if err := r.DeleteMarkerReplication.Validate(); err != nil { if err := r.DeleteMarkerReplication.Validate(); err != nil {
return err return err
} }
if r.Priority <= 0 { if r.Priority < 0 {
return errPriorityMissing return errPriorityMissing
} }
if r.Destination.Bucket == bucket && sameTarget { if r.Destination.Bucket == bucket && sameTarget {