Skip to content

Commit

Permalink
Avoid deprecated code and refactor IDs (#1088)
Browse files Browse the repository at this point in the history
  • Loading branch information
roman-khimov authored Mar 3, 2025
2 parents 91bb004 + 9a21cc8 commit 03908e0
Show file tree
Hide file tree
Showing 18 changed files with 76 additions and 147 deletions.
8 changes: 4 additions & 4 deletions api/auth/center.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ func (c *center) parseAuthHeader(header string) (*authHeader, error) {
}

func (a *authHeader) getAddress() (oid.Address, error) {
var addr oid.Address
if err := addr.DecodeString(strings.ReplaceAll(a.AccessKeyID, "0", "/")); err != nil {
addr, err := oid.DecodeAddressString(strings.ReplaceAll(a.AccessKeyID, "0", "/"))
if err != nil {
return addr, s3errors.GetAPIError(s3errors.ErrInvalidAccessKeyID)
}
return addr, nil
Expand Down Expand Up @@ -271,8 +271,8 @@ func (c *center) checkFormData(r *http.Request) (*Box, error) {
return nil, fmt.Errorf("failed to parse x-amz-date field: %w", err)
}

var addr oid.Address
if err = addr.DecodeString(strings.ReplaceAll(submatches["access_key_id"], "0", "/")); err != nil {
addr, err := oid.DecodeAddressString(strings.ReplaceAll(submatches["access_key_id"], "0", "/"))
if err != nil {
return nil, s3errors.GetAPIError(s3errors.ErrInvalidAccessKeyID)
}

Expand Down
6 changes: 1 addition & 5 deletions api/cache/objects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,8 @@ func getTestConfig() *Config {

func TestCache(t *testing.T) {
obj := objecttest.Object()
objID, _ := obj.ID()
cnrID, _ := obj.ContainerID()

var addr oid.Address
addr.SetContainer(cnrID)
addr.SetObject(objID)
addr := oid.NewAddress(obj.GetContainerID(), obj.GetID())

extObjInfo := &data.ExtendedObjectInfo{
ObjectInfo: &data.ObjectInfo{
Expand Down
2 changes: 1 addition & 1 deletion api/cache/objectslist.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (l *ObjectsListCache) CleanCacheEntriesContainingObject(objectName string,
zap.String("expected", fmt.Sprintf("%T", k)))
continue
}
if cnr.Equals(k.cid) && strings.HasPrefix(objectName, k.prefix) {
if cnr == k.cid && strings.HasPrefix(objectName, k.prefix) {
l.cache.Remove(k)
}
}
Expand Down
6 changes: 1 addition & 5 deletions api/data/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,7 @@ func (o *ObjectInfo) NiceName() string { return o.Bucket + "/" + o.Name }

// Address returns object address.
func (o *ObjectInfo) Address() oid.Address {
var addr oid.Address
addr.SetContainer(o.CID)
addr.SetObject(o.ID)

return addr
return oid.NewAddress(o.CID, o.ID)
}

func (b BucketSettings) Unversioned() bool {
Expand Down
12 changes: 6 additions & 6 deletions api/handler/acl.go
Original file line number Diff line number Diff line change
Expand Up @@ -1001,7 +1001,7 @@ func tryServiceRecord(record eacl.Record) *ServiceRecord {
resourceFilter := record.Filters()[0]
recordsFilter := record.Filters()[1]
if resourceFilter.From() != eacl.HeaderFromService || recordsFilter.From() != eacl.HeaderFromService ||
resourceFilter.Matcher() != eacl.MatchUnknown || recordsFilter.Matcher() != eacl.MatchUnknown ||
resourceFilter.Matcher() != eacl.MatchUnspecified || recordsFilter.Matcher() != eacl.MatchUnspecified ||
resourceFilter.Key() != serviceRecordResourceKey || recordsFilter.Key() != serviceRecordGroupLengthKey {
return nil
}
Expand Down Expand Up @@ -1061,8 +1061,8 @@ func formRecords(resource *astResource) ([]*eacl.Record, error) {
}

if len(resource.Version) != 0 {
var id oid.ID
if err := id.DecodeString(resource.Version); err != nil {
id, err := oid.DecodeString(resource.Version)
if err != nil {
return nil, fmt.Errorf("parse object version (oid): %w", err)
}

Expand Down Expand Up @@ -1499,7 +1499,7 @@ func effectToAction(effect string) eacl.Action {
case "Deny":
return eacl.ActionDeny
}
return eacl.ActionUnknown
return eacl.ActionUnspecified
}

func actionToEffect(action eacl.Action) string {
Expand Down Expand Up @@ -1863,7 +1863,7 @@ func isValidOwnerPreferred(r *http.Request) bool {
return cannedACL == cannedACLBucketOwnerFullControl
}

func updateBucketOwnership(records []eacl.Record, newRecord *eacl.Record) []eacl.Record {
func updateBucketOwnership(records []eacl.Record, newRecord *eacl.Record) eacl.Table {
var (
rowID = -1
)
Expand Down Expand Up @@ -1893,7 +1893,7 @@ func updateBucketOwnership(records []eacl.Record, newRecord *eacl.Record) []eacl
records = append(records, *newRecord)
}

return records
return eacl.ConstructTable(records)
}

func isBucketOwnerObjectWriter(table *eacl.Table) bool {
Expand Down
3 changes: 1 addition & 2 deletions api/handler/acl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ func TestTableToAst(t *testing.T) {
b := make([]byte, 32)
_, err := io.ReadFull(rand.Reader, b)
require.NoError(t, err)
var id oid.ID
id.SetSHA256(sha256.Sum256(b))
id := oid.NewFromObjectHeaderBinary(b)

key, err := keys.NewPrivateKey()
require.NoError(t, err)
Expand Down
14 changes: 2 additions & 12 deletions api/handler/ownership.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,7 @@ func (h *handler) PutBucketOwnershipControlsHandler(w http.ResponseWriter, r *ht
return
}

var newEACL eacl.Table

newRecords := updateBucketOwnership(bucketACL.EACL.Records(), rec)
for _, record := range newRecords {
newEACL.AddRecord(&record)
}
newEACL := updateBucketOwnership(bucketACL.EACL.Records(), rec)

p := layer.PutBucketACLParams{
BktInfo: bktInfo,
Expand Down Expand Up @@ -188,12 +183,7 @@ func (h *handler) DeleteBucketOwnershipControlsHandler(w http.ResponseWriter, r
return
}

var newEACL eacl.Table

newRecords := updateBucketOwnership(bucketACL.EACL.Records(), nil)
for _, record := range newRecords {
newEACL.AddRecord(&record)
}
newEACL := updateBucketOwnership(bucketACL.EACL.Records(), nil)

p := layer.PutBucketACLParams{
BktInfo: bktInfo,
Expand Down
10 changes: 5 additions & 5 deletions api/layer/layer.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,9 +365,9 @@ func (n *layer) Owner(ctx context.Context) user.ID {
// OwnerPublicKey returns owner public key from BearerToken (context).
func (n *layer) OwnerPublicKey(ctx context.Context) (*keys.PublicKey, error) {
if bd, ok := ctx.Value(api.BoxData).(*accessbox.Box); ok && bd != nil && bd.Gate != nil && bd.Gate.BearerToken != nil {
if len(bd.Gate.BearerToken.SigningKeyBytes()) > 0 {
if sig, ok := bd.Gate.BearerToken.Signature(); ok {
var pk keys.PublicKey
if err := pk.DecodeBytes(bd.Gate.BearerToken.SigningKeyBytes()); err != nil {
if err := pk.DecodeBytes(sig.PublicKeyBytes()); err != nil {
return nil, fmt.Errorf("pub key decode: %w", err)
}

Expand All @@ -384,7 +384,7 @@ func (n *layer) prepareAuthParameters(ctx context.Context, prm *PrmAuth, bktOwne

func bearerTokenFromContext(ctx context.Context, bktOwner user.ID) *bearer.Token {
if bd, ok := ctx.Value(api.BoxData).(*accessbox.Box); ok && bd != nil && bd.Gate != nil && bd.Gate.BearerToken != nil {
if bktOwner.Equals(bd.Gate.BearerToken.ResolveIssuer()) {
if bktOwner == bd.Gate.BearerToken.ResolveIssuer() {
return bd.Gate.BearerToken
}
}
Expand Down Expand Up @@ -1033,8 +1033,8 @@ func (n *layer) CreateBucket(ctx context.Context, p *CreateBucketParams) (*data.
}

func (n *layer) ResolveBucket(ctx context.Context, name string) (cid.ID, error) {
var cnrID cid.ID
if err := cnrID.DecodeString(name); err != nil {
cnrID, err := cid.DecodeString(name)
if err != nil {
if cnrID, err = n.resolver.ResolveCID(ctx, name); err != nil {
return cid.ID{}, err
}
Expand Down
12 changes: 6 additions & 6 deletions api/layer/multipart_upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,6 @@ func (n *layer) uploadPart(ctx context.Context, multipartInfo *data.MultipartInf

var (
splitPreviousID oid.ID
splitFirstID oid.ID
multipartHash = sha256.New()
tzHash hash.Hash
creationTime = TimeNow(ctx)
Expand Down Expand Up @@ -325,7 +324,8 @@ func (n *layer) uploadPart(ctx context.Context, multipartInfo *data.MultipartInf

splitPreviousID = lastPart.OID

if err = splitFirstID.DecodeString(multipartInfo.UploadID); err != nil {
splitFirstID, err := oid.DecodeString(multipartInfo.UploadID)
if err != nil {
return nil, fmt.Errorf("failed to decode multipart upload ID: %w", err)
}

Expand Down Expand Up @@ -486,7 +486,7 @@ func (n *layer) uploadZeroPart(ctx context.Context, multipartInfo *data.Multipar
var hashlessHeaderObject object.Object
hashlessHeaderObject.SetContainerID(bktInfo.CID)
hashlessHeaderObject.SetType(object.TypeRegular)
hashlessHeaderObject.SetOwnerID(&bktInfo.Owner)
hashlessHeaderObject.SetOwner(bktInfo.Owner)
hashlessHeaderObject.SetAttributes(attrs...)
hashlessHeaderObject.SetCreationEpoch(n.neoFS.CurrentEpoch())

Expand Down Expand Up @@ -823,9 +823,9 @@ func (n *layer) CompleteMultipartUpload(ctx context.Context, p *CompleteMultipar
var encMultipartObjectSize uint64
var lastPartID int
var completedPartsHeader strings.Builder
var splitFirstID oid.ID

if err = splitFirstID.DecodeString(multipartInfo.UploadID); err != nil {
splitFirstID, err := oid.DecodeString(multipartInfo.UploadID)
if err != nil {
return nil, nil, fmt.Errorf("decode splitFirstID from UploadID :%w", err)
}

Expand Down Expand Up @@ -1006,7 +1006,7 @@ func (n *layer) CompleteMultipartUpload(ctx context.Context, p *CompleteMultipar
return nil, nil, err
}

headerObjectID, _ := header.ID()
headerObjectID := header.GetID()

// the "big object" is not presented in system, but we have to put correct info about it and its version.

Expand Down
Loading

0 comments on commit 03908e0

Please sign in to comment.