Bug 1946254

Summary: [OSP 16.1]puppet-neutron does not support multiple l3 agent extensions as defined in the OOO templates
Product: Red Hat OpenStack Reporter: Matt Flusche <mflusche>
Component: puppet-neutronAssignee: Slawek Kaplonski <skaplons>
Status: CLOSED ERRATA QA Contact: Eran Kuris <ekuris>
Severity: high Docs Contact:
Priority: medium    
Version: 16.1 (Train)CC: akatz, jjoyce, jschluet, slinaber, tkajinam, tvignaud
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: puppet-neutron-15.5.1-1.20210614113305.7d0406b.el8ost Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-12-09 20:18:25 UTC 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:

Description Matt Flusche 2021-04-05 14:57:55 UTC
Description of problem:

For this OOO config:

parameter_defaults:
  NeutronL3AgentExtensions: 'conntrack_helper,port_forwarding'

As defined in THT:

From openstack-tripleo-heat-templates/deployment/neutron/neutron-l3-container-puppet.yaml 

  NeutronL3AgentExtensions:
    default: ""
    description: |
        Comma-separated list of extensions enabled for the Neutron L3 agent.
    type: comma_delimited_list

Results in this hiera data:

# hiera -c /etc/puppet/hiera.yaml neutron::agents::l3::extensions
["conntrack_helper", "port_forwarding"]

However, the resulting config via puppet is:

[root@overcloud-controller-0 ~]# crudini --get /var/lib/config-data/puppet-generated/neutron/etc/neutron/l3_agent.ini agent extensions
conntrack_helper


From the puppet module:

/etc/puppet/modules/neutron/manifests/agents/l3.pp

# [*extensions*]
#   (optional) L3 agent extensions to enable.
#   Defaults to $::os_service_default
#

...

  neutron_l3_agent_config {
    'DEFAULT/debug':                            value => $debug;
    'DEFAULT/interface_driver':                 value => $interface_driver;
    'DEFAULT/gateway_external_network_id':      value => $gateway_external_network_id;
    'DEFAULT/handle_internal_only_routers':     value => $handle_internal_only_routers;
    'DEFAULT/metadata_port':                    value => $metadata_port;
    'DEFAULT/periodic_interval':                value => $periodic_interval;
    'DEFAULT/periodic_fuzzy_delay':             value => $periodic_fuzzy_delay;
    'DEFAULT/enable_metadata_proxy':            value => $enable_metadata_proxy;
    'DEFAULT/agent_mode':                       value => $agent_mode;
    'DEFAULT/radvd_user':                       value => $radvd_user;
    'agent/availability_zone':                  value => $availability_zone;
    'agent/extensions':                         value => $extensions;
  }


It seems the puppet module need to handle the array and join it before setting the agent/extensions value.

Version-Release number of selected component (if applicable):
16.1 current
 rpm -q puppet-neutron
puppet-neutron-15.5.1-1.20201113235652.el8ost.noarch


How reproducible:
100%

Steps to Reproduce:
1. see above example

Actual results:
puppet-neutron only sets l3 agent/extensions to first element in list.

Expected results:
Comma-separated list of extensions enabled for the Neutron L3 agent

Comment 1 Takashi Kajinami 2021-04-16 14:47:25 UTC
Since there is a mismatch between interface in tht and one in puppet-neutron, we can not use
the NeutronL3AgentExtensions parameter when we pass multiple extensions, until the fix is merged
into puppet-neutron.

One workaround is to set the parameter directly using ExtraConfig
~~~
parameter_defaults:
    ExtraConfig:
        neutron::agents::l3::extensions: conntrack_helper,port_forwarding
~~~

Then the value is passed as a raw string and handled correctly by puppet-neutron
~~~
[heat-admin@controller-0 ~]$ cat /etc/rhosp-release 
Red Hat OpenStack Platform release 13.0.14 (Queens)
[heat-admin@controller-0 ~]$ sudo crudini --get /var/lib/config-data/puppet-generated/neutron/etc/neutron/l3_agent.ini agent extensions
conntrack_helper,port_forwarding
~~~

Comment 21 errata-xmlrpc 2021-12-09 20:18:25 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Red Hat OpenStack Platform 16.1.7 (Train) bug fix and enhancement advisory), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:3762