Jump to: navigation, search

Murano/Specifications/Per Tenant Isolation

< Murano‎ | Specifications
Revision as of 12:15, 9 January 2014 by Efedorova (talk | contribs) (Directory structure)

Per-Tenant Isolation (for Murano-v0.4)


Murano Metadata Repository Server was introduced in Murano-v0.4 release. But there are no access restrictions: any user is able to edit any service definition or file. To prevent this behavior new per-tenant isolation feature will be added to Murano-v0.4.1 release.


In current implementation all files are grouped by data types and stored in corresponding directories. All those directories are located inside '"Services'" directory along with manifest files (service definitions). Since Metadata Server stores data on a file system, the best solution for data isolation would be dividing data into separate folders.

Directory structure

  • Common folder

This initial data for all common servicies. It will contain all shared resources. The contents of this folder will be non-editable from UI. There will be only one way to modify it - by copying files directly to the Common folder (Note: files should be copied to the correct place and all client and server caches should be cleaned).

  • Tenant folders

Separate folder named by tenant_id for an each tenant will be created. Users belonging to the same tenant will have equal rights on file modification. This folder should be created on the first uploading request.

Client Cache Structure

  • Murano Conductor cache organizations will stay the same - it has per-task isolation, so diffirent task will execute in a different tenant.
  • Murano Dashbord cache should be organized by tenants: for each tenant there will be a separate tenant_id folder with cache for that tenant.

Import and Export

Shared services should be exportable. And it should be an opportunity to import new service to tenant-only environment.

UI Changes

In Murano Dashboard only minor changes should be made. Files and services from Common folder should not be editable - so button Modify, Delete and alike should not be shown for such objects. As full path to the object (path+filename) is used as an object id, startswith predicate can be used on object_id to decide wheter it is editable or not. When objects in tenant and Common folder have identical names, both should be shown (this is not a issue, because they still have different ids), although services that relied on files from Common should be marked as invalid to prevent confusion. The same goes for uploading new service definition with full qualified name identical to already present in Common - service definition from Common should be marked is invalid.