nspcc-dev / nspcc-dev/neofs-api

Make LOCK operation a separate object verb

Open
#373 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature I2 S2 U2
Dominant language
Makefile
Stars
11
Forks
15
Avg merge
2d 8h
Merged PRs (30d)
9

Description

Is your feature request related to a problem? Please describe.

I'm always frustrated when I can't restrict how LOCK operation is available or not to users. Currently it's a PUT of LOCK object wrt ACL restrictions.

Describe the solution you'd like

Add a LOCK verb. It's pretty straightforward for EACL and tokens, however there is a problem of basic ACL. It can be solved in different ways:

  • treat it the same as PUT there
  • repurpose one of the (mostly) useless verbs like GETRANGEHASH (can be combined with reserved bit flip, we've got two spare there)
  • extend basic ACL with one more integer
  • extend basic ACL type to uint64 (in a different protobuf field of course)
  • use an attribute for additional basic ACL integer
  • move basic ACL to attributes altogether

Each has its pros and cons.

Describe alternatives you've considered

We need LOCK itself, the operation is radically different from PUT and it can be useful to not mix them (allow to PUT and forbid LOCK or allow LOCK and forbid PUT).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the API and proto definitions for the current LOCK-as-PUT behavior, including EACL, token, and basic ACL handling. The work is done when LOCK is represented as a separate verb and its basic ACL representation is selected and documented consistently with the proposed alternatives.

Written by the indexing model from the issue text.

Assessment

Domain
api, authorization
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.