Looker Community

Best way to handle content in a multitenant setup

Hello,

We are self hosting Looker in a multitenant setup and trying to figure out the best way to manage content. We have ~12 Looks that we want all tenants to have access to. We also want to allow a tenant to have custom Looks that can be forks of the ~12 Looks. We’ve created spaces per tenant under the Shared space and a preset and custom space uder the tenant’s space.

Our thoughts are that we’d build the ~12 reports in a space that no tenant has access to. Then we’d copy the reports to each tenant’s preset space. However, whenever we make updates this will require us to copy the Looks again to each tenant’s preset space again. Is there a way to do a symbolic link of these reports or is there a better way to do this? In addition, if a single tenant wants a custom version of the report we still will want to roll in changes to the master versions of the ~12 reports. Will we need to manually apply the changes to the master reports to any custom report?

Thanks,
Mike

There’s no built-in way to do symlinking or auto-updating of Looks. You could totally do it with an API script that replaced looks 3,4, and 5 with look 1 on a regular basis.

If you’d be okay using a dashboard that includes those 12 looks, then you might be able to get fancy with it. You can “Sync” dashboards to a master LookML dashboard using the sync_lookml_dashboard endpoint, so you could have 1 master LookML dashboard in your private space, and individual “User defined” dashboards in each tenant’s preset space. When you make changes to the base LookML dashboard, you can hit the update_dashboard() endpoint for each tenant’s dashboard to get it in sync with the base dashboard.

Happy to explain further if that seems like a viable route!

PS:
Have you checked out the closed system? It’s generally the best practice for multi tenant setups.

Awesome thank you. We’ll look into using dashboards instead of looks and the sync_lookml_dashboard endpoint.

Yep, we followed the closed system guidance for our implementation.

1 Like

Let us know how it goes— I haven’t yet heard any stories/implementations in the wild of people using that endpoint so would be interested to see how it plays out.