Providing the parameter NeutronMechanismDrivers with value as "mlnx_sdn_assist,sriovnicswitch,openvswitch", which is a valid input as the type of the variable is comma_delimited_list. But for some reason, the conditions evaluation is no done after converting to the list. So instead of matching to the whole word, it matches to the sub-string "ovn" in "sriovnicswitch", causing it to choose ovn by default always.
The patch https://review.opendev.org/#/c/670011/ attempts to change all the instances of NeutronMechanismDrivers to be a list, so that heat will do a whole word match on list. Though this will solve the issue for all existing environments, it will still have the issue if the parameter is provided in user environments in the problematic format.
The appropriate fix should be to update the condition to ensure that it is matches with whole word. May be yaql based condition could help?
The problem is with this condition in service - neutron- api-container- puppet. yaml
is_ovn_ in_neutron_ mechanism_ driver: {contains: ['ovn', {get_param: NeutronMechanis mDrivers} ]}
Providing the parameter NeutronMechanis mDrivers with value as "mlnx_sdn_ assist, sriovnicswitch, openvswitch" , which is a valid input as the type of the variable is comma_delimited _list. But for some reason, the conditions evaluation is no done after converting to the list. So instead of matching to the whole word, it matches to the sub-string "ovn" in "sriovnicswitch", causing it to choose ovn by default always.
The patch https:/ /review. opendev. org/#/c/ 670011/ attempts to change all the instances of NeutronMechanis mDrivers to be a list, so that heat will do a whole word match on list. Though this will solve the issue for all existing environments, it will still have the issue if the parameter is provided in user environments in the problematic format.
The appropriate fix should be to update the condition to ensure that it is matches with whole word. May be yaql based condition could help?