Define and implement name resolution rules
Currently FQNs are considered globally unique. This will be inconvenient in cases where multiple tenants wish to install the same package, and/or admins wish to make public certain packages. This also affects classes (and the rules by which the engine resolves the appropriate package for a class).
The suggestion for resolution rules is, in order of precedence:
1) The local tenant
2) Packages shared with the tenant
3) Public packages
4) External packages
The measure of uniqueness then becomes tenant, FQN.
If there is any precedent for this in other projects we should definitely consider that. The only one i can think of is Glance which deals with this in the following way:
* Duplicate names are allowed
* The API will look up an image by name but fail if the name is ambiguous, requiring ID instead
This won't work for us because the ID of a package isn't known in advance, so at the very least there need to be resolution rules within packages. Ultimately this might be something the system can warn about when importing, but for now clearly defined rules should be sufficient.
Blueprint information
- Status:
- Not started
- Approver:
- ruhe
- Priority:
- Undefined
- Drafter:
- Steve McLellan
- Direction:
- Approved
- Assignee:
- None
- Definition:
- Discussion
- Series goal:
- None
- Implementation:
- Deferred
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Agree on the precedence order
There should be no conflicts in each category, so the checks should be enforced during package import (to ensure that the current tenant does not own another package with the same FQN), during package sharing (to ensure that no other package with the same FQN is shared with a tenant) and during package publishing (no other public package exist with the same FQN).
Same should go for classes FQNs