Bug 2008076
| Summary: | [ovs] Invalid ovs bridge is created if multiple bridges are defined by role specific NeutronBridgeMappings | ||
|---|---|---|---|
| Product: | Red Hat OpenStack | Reporter: | Takashi Kajinami <tkajinam> |
| Component: | openstack-tripleo-heat-templates | Assignee: | Brent Eagles <beagles> |
| Status: | ASSIGNED --- | QA Contact: | Joe H. Rahme <jhakimra> |
| Severity: | medium | Docs Contact: | |
| Priority: | high | ||
| Version: | 16.1 (Train) | CC: | beagles, ccamposr, fyanac, jlibosva, mburns |
| Target Milestone: | z6 | Keywords: | Triaged |
| Target Release: | 16.2 (Train on RHEL 8.4) | Flags: | fyanac:
needinfo?
(beagles) |
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | Type: | Bug | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
This issue is caused by the following implementations in tht and puppet. - In tht, role specific parameters don't rely on parameter interface of heat templates. Because of that NeutronBridgeMappings in role specific parameters is not converted to a list automatically - The following logic triggers creation of ovs bridge, implemented in puppet-neutron. https://github.com/openstack/tripleo-heat-templates/blob/461adac8f4effb591aafe7bfcdffea75cd01990f/deployment/neutron/neutron-ovs-agent-container-puppet.yaml#L302-L336 - The current logic in puppet-neutron doesn't handle a comma-separated list in String. https://github.com/openstack/puppet-neutron/blob/424320c268d931df89212b69b9ffbbe95765fdb6/manifests/agents/ml2/ovs.pp#L328 https://github.com/openstack/puppet-neutron/blob/424320c268d931df89212b69b9ffbbe95765fdb6/manifests/plugins/ovs/bridge.pp#L6-L12 To avoid the issue we can fix puppet-neutron to handle a string value properly. However I'm wondering why these ovs bridges are managed by puppet while these bridges are supposed to be managed by os-net-config as part of network deployment. The only configuration specific to puppet is the definition of external_id but is this really required ? https://github.com/openstack/puppet-neutron/blob/424320c268d931df89212b69b9ffbbe95765fdb6/manifests/plugins/ovs/bridge.pp#L11 If we don't need to run that logic to apply external_id then I tend to disable management of ovs bridge by puppet. Just leaving a note...
One more option to workaround the issue easily would be to define an array value for the role specific parameter
~~~
parameter_defaults:
ComputeParameters:
NeutronBridgeMappings:
- datacentre:br-ex
- datacentre2:br-ex2
~~~
Initially I explained the three ovs bridges are created but it was wrong and only the one with an invalid name is created by puppet. I updated the problem description accordingly. |
Description of problem: When a deployment uses ml2+ovs and multiple bridge mappings are defined by role specific NeutronBridgeMappings, an invalid bridge is created in overcloud nodes. Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: 1. Deploy overcloud with the following environment file ~~~ parameter_defaults: ComputeParameters: NeutronBridgeMappings: 'datacentre:br-ex,datacentre2:br-ex2' ~~~ Actual results: The following ovs bridge is created in compute nodes. - br-ex,datacentre2 Expected results: The following two ovs bridges are created - br-ex - br-ex2 Additional info: