diff --git a/cmd/api-response.go b/cmd/api-response.go index 68a8c780b..da194031c 100644 --- a/cmd/api-response.go +++ b/cmd/api-response.go @@ -345,6 +345,13 @@ func (s *Metadata) MarshalXML(e *xxml.Encoder, start xxml.StartElement) error { return e.EncodeToken(start.End()) } +// ObjectInternalInfo contains some internal information about a given +// object, it will printed in listing calls with enabled metadata. +type ObjectInternalInfo struct { + K int // Data blocks + M int // Parity blocks +} + // Object container for object metadata type Object struct { Key string @@ -361,6 +368,8 @@ type Object struct { // UserMetadata user-defined metadata UserMetadata *Metadata `xml:"UserMetadata,omitempty"` UserTags string `xml:"UserTags,omitempty"` + + Internal *ObjectInternalInfo `xml:"Internal,omitempty"` } // CopyObjectResponse container returns ETag and LastModified of the successfully copied object @@ -552,6 +561,10 @@ func generateListVersionsResponse(bucket, prefix, marker, versionIDMarker, delim } content.UserMetadata.Set(k, v) } + content.Internal = &ObjectInternalInfo{ + K: object.DataBlocks, + M: object.ParityBlocks, + } } content.Owner = owner content.VersionID = object.VersionID @@ -687,6 +700,10 @@ func generateListObjectsV2Response(bucket, prefix, token, nextToken, startAfter, } content.UserMetadata.Set(k, v) } + content.Internal = &ObjectInternalInfo{ + K: object.DataBlocks, + M: object.ParityBlocks, + } } } contents = append(contents, content) diff --git a/cmd/erasure-metadata.go b/cmd/erasure-metadata.go index 2a13553e2..2aeeb79ee 100644 --- a/cmd/erasure-metadata.go +++ b/cmd/erasure-metadata.go @@ -158,6 +158,8 @@ func (fi FileInfo) ToObjectInfo(bucket, object string, versioned bool) ObjectInf IsDir: HasSuffix(object, SlashSeparator), Bucket: bucket, Name: object, + ParityBlocks: fi.Erasure.ParityBlocks, + DataBlocks: fi.Erasure.DataBlocks, VersionID: versionID, IsLatest: fi.IsLatest, DeleteMarker: fi.Deleted, diff --git a/cmd/object-api-datatypes.go b/cmd/object-api-datatypes.go index bbd8cc1f4..505669093 100644 --- a/cmd/object-api-datatypes.go +++ b/cmd/object-api-datatypes.go @@ -196,6 +196,9 @@ type ObjectInfo struct { // Inlined Inlined bool + + DataBlocks int + ParityBlocks int } // ArchiveInfo returns any saved zip archive meta information.