https://linuxacademy.com/cp/socialize/index/type/community_post/id/30278 is a guide I did on using Host Aggregates and it does include a link back to the OpenStack wiki.
As I mention in the guid, Host Aggregates are a way of grouping like hardware and I've used it in the past to segregate developers to older equipment vs the hardware used for production in the same environment. So in my use case it was a group of users to a set of equipment, but you could also allow all users who need a specific flavor to be sent to a specific set of hardware.
You can isolate a project to a host aggregate with:
nova aggregate-set-metadata <Host Aggregate> filter_tenant_id=<Project ID>
However, the project would be able to create instances on other hosts not in the aggregate or without the filter set. If you want to limit them to only the hosts in the host aggregate you would need to create a flavor to tie to the host aggregate and the Project and then limit the project to that flavor.
nova flavor-key <new flavor> aggregate_instance_extra_specs:filter_tenant_id=<project ID>