Search code examples
fiwarefiware-orionfiware-scorpiofiware-stellio

How to deal with NGSI-LD tenants ? Create ? List ? Delete?


I have a hard time trying to find concrete information about how to deal with tenants in a NGSI-LD Context Broker.

The ETSI specification defines multi-tenancy but it seems it doesn't specify any operations to create a tenant, list available tenants and remove a tenant.

I presume each broker is free to implement multi-tenancy its own way but I've searched the tenant keyword in broker documentations (at least for Orion-LD, Stellio and Scorpio) with no success.

Thanks to this stackoverflow post I've successfully created a tenant in Orion-LD.

I'd like to know if there are some tenants operations (documented or undocumented) exposed by brokers. Especially any facilities to remove a tenant - along with all resources that have been created "inside".

Thanks.


Solution

  • So, first of all, tenants are created "on the fly". In comes a request to create an entity, subscription, or registration, and the HTTP header "NGSILD-Tenant" specifies a tenant that does not already exists, then the tenant is created and the entity/sub/reg is created "under it". For ALL operations, the HTTP header is used. jsonldContexts are different, those are "omnipresent" and exist regardless of the tenant used.

    GET operations (like all other operations) can use the NGSILD-Tenant header to indicate on which tenant the GET is to be performed, but if that tenant does not exist, it will naturally not be created - an error is retuirned instead.

    There are no official endpoints to list tenants (nor delete - that would be a bit dangerous!), but in the case of Orion-LD, I implemented an endpoint for debugging purposes: GET /ngsi-ld/ex/v1/tenants. That one you can use if you please. Just remember, no other NGSI-LD broker is supporting that endpoint