Murano is unable to spawn VMs connected to a shared network owned by other projects
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Murano |
Fix Released
|
High
|
Alexander Tivelkov |
Bug Description
Steps to reproduce:
1) In Project A create a network X with a subnet. Uplink the subnet to a router, ensure internet connectivity etc.
2) As an administrator edit network X to mark it as "shared".
3) As a non-privileged user sign in to a Project B, create a new Murano environment there and select network X as a default network of this environment.
4) Add any application which deploys regular VM into the environment.
5) Deploy the environment.
Expected result:
Environment is successfully deployed, app spawns a VM which is connected to the network X.
Observed result:
Environment deployment fails with the following error:
[EnvironmentError]: Unexpected stack state CREATE_FAILED: Resource CREATE failed: Forbidden: resources.
description: | updated |
The error is originated from Heat stack, so the problem may be reproduced by just submitting a simple heat template, containing an OS::Nova::Server resource and an OS::Neutron::Port resource pointing to appropriate existing network.
The problem occurs if the OS::Neutron::Port resource definition has the "fixed_ips" block, without it the stack gets properly created.
It seems like Neutron enforces a policy which does not allow to create ports with a "fixed-ip" setting (the one which binds a port to a particular subnet of a network) in networks which are not owned by a current project. Obviously it may be reconfigured, but the default policy (https:/ /github. com/openstack/ neutron/ blob/master/ etc/policy. json#L75) clearly forbids such operations. Regular port creation (without a fixed-ip parameter) in a network does not have such limitations.