We have multiple projects and each project has its own provider network , i would like to hide other provider network horizon ui for a specific project. Now each network created with "non-shared" but all networks are visible in project specific dashboard
Every provider Network is by default automaticaly shared with all the projects.
This is achieved using a role based Policy (rbac), see OpenStack Docs: Role-Based Access Control (RBAC)
All you have to do, is to delete the default rbac Policy that share the provider network to all projects.
From a openstack command line execute the following commands.
openstack network show <Name of your provider network>
From the result copy the network object id and type the following command.
openstack network rbac list | grep <ID of your provider network>
From the result copy the rbac object id (first column), all you need is to delete the rbac Policy with the following command.
openstack network rbac delete <Id of the rbac Policy>
To share the provider network with a specific project, you need to create a new rbac Policy.
openstack network rbac create --type network --target-project <Id of the target Project> --action access_as_shared <Id of the provider network>
Hope it help,